angular-slickgrid 9.0.0 → 9.0.1

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 (394) hide show
  1. package/package.json +17 -4
  2. package/.gitbook.yaml +0 -5
  3. package/CHANGELOG.md +0 -1691
  4. package/CONTRIBUTING.md +0 -17
  5. package/angular.json +0 -133
  6. package/coverage/base.css +0 -224
  7. package/coverage/block-navigation.js +0 -87
  8. package/coverage/clover.xml +0 -1620
  9. package/coverage/coverage-final.json +0 -9
  10. package/coverage/favicon.png +0 -0
  11. package/coverage/index.html +0 -176
  12. package/coverage/library/components/angular-slickgrid.component.ts.html +0 -5074
  13. package/coverage/library/components/index.html +0 -116
  14. package/coverage/library/constants.ts.html +0 -397
  15. package/coverage/library/extensions/index.html +0 -116
  16. package/coverage/library/extensions/slickRowDetailView.ts.html +0 -1261
  17. package/coverage/library/index.html +0 -116
  18. package/coverage/library/modules/angular-slickgrid.module.ts.html +0 -166
  19. package/coverage/library/modules/index.html +0 -116
  20. package/coverage/library/services/angularUtil.service.ts.html +0 -445
  21. package/coverage/library/services/container.service.ts.html +0 -163
  22. package/coverage/library/services/index.html +0 -161
  23. package/coverage/library/services/translater.service.ts.html +0 -199
  24. package/coverage/library/services/utilities.ts.html +0 -142
  25. package/coverage/prettify.css +0 -1
  26. package/coverage/prettify.js +0 -2
  27. package/coverage/sort-arrow-sprite.png +0 -0
  28. package/coverage/sorter.js +0 -196
  29. package/dist/LICENSE +0 -21
  30. package/dist/README.md +0 -142
  31. package/docs/README.md +0 -5
  32. package/docs/TOC.md +0 -105
  33. package/docs/backend-services/Custom-Backend-Service.md +0 -50
  34. package/docs/backend-services/GraphQL.md +0 -276
  35. package/docs/backend-services/OData.md +0 -245
  36. package/docs/backend-services/graphql/GraphQL-Filtering.md +0 -156
  37. package/docs/backend-services/graphql/GraphQL-JSON-Result.md +0 -85
  38. package/docs/backend-services/graphql/GraphQL-Pagination.md +0 -77
  39. package/docs/backend-services/graphql/GraphQL-Sorting.md +0 -78
  40. package/docs/column-functionalities/cell-menu.md +0 -212
  41. package/docs/column-functionalities/editors/autocomplete-editor.md +0 -466
  42. package/docs/column-functionalities/editors/date-editor-flatpickr.md +0 -71
  43. package/docs/column-functionalities/editors/date-editor-vanilla-calendar.md +0 -91
  44. package/docs/column-functionalities/editors/longtext-editor-textarea.md +0 -80
  45. package/docs/column-functionalities/editors/select-dropdown-editor.md +0 -227
  46. package/docs/column-functionalities/editors.md +0 -604
  47. package/docs/column-functionalities/filters/autocomplete-filter.md +0 -183
  48. package/docs/column-functionalities/filters/compound-filters.md +0 -234
  49. package/docs/column-functionalities/filters/custom-filter.md +0 -117
  50. package/docs/column-functionalities/filters/filter-intro.md +0 -81
  51. package/docs/column-functionalities/filters/input-filter.md +0 -260
  52. package/docs/column-functionalities/filters/range-filters.md +0 -188
  53. package/docs/column-functionalities/filters/select-filter.md +0 -695
  54. package/docs/column-functionalities/filters/single-search-filter.md +0 -77
  55. package/docs/column-functionalities/filters/styling-filled-filters.md +0 -45
  56. package/docs/column-functionalities/formatters.md +0 -325
  57. package/docs/column-functionalities/sorting.md +0 -200
  58. package/docs/developer-guides/csp-compliance.md +0 -64
  59. package/docs/events/Available-Events.md +0 -223
  60. package/docs/events/Grid-&-DataView-Events.md +0 -211
  61. package/docs/getting-started/quick-start.md +0 -230
  62. package/docs/getting-started/troubleshooting.md +0 -80
  63. package/docs/grid-functionalities/Column-Picker.md +0 -22
  64. package/docs/grid-functionalities/Composite-Editor-Modal.md +0 -627
  65. package/docs/grid-functionalities/Context-Menu.md +0 -226
  66. package/docs/grid-functionalities/Custom-Footer.md +0 -80
  67. package/docs/grid-functionalities/Custom-Tooltip-(plugin).md +0 -258
  68. package/docs/grid-functionalities/Export-to-Excel.md +0 -457
  69. package/docs/grid-functionalities/Export-to-Text-File.md +0 -165
  70. package/docs/grid-functionalities/FAQ.md +0 -53
  71. package/docs/grid-functionalities/Global-Options.md +0 -29
  72. package/docs/grid-functionalities/Grid-Auto-Resize.md +0 -218
  73. package/docs/grid-functionalities/Grid-Menu.md +0 -134
  74. package/docs/grid-functionalities/Grid-State-&-Preset.md +0 -245
  75. package/docs/grid-functionalities/Header-Menu-&-Header-Buttons.md +0 -125
  76. package/docs/grid-functionalities/Resize-by-Cell-Content.md +0 -138
  77. package/docs/grid-functionalities/Row-Selection.md +0 -247
  78. package/docs/grid-functionalities/Row-based-edit.md +0 -71
  79. package/docs/grid-functionalities/add-update-highlight.md +0 -258
  80. package/docs/grid-functionalities/column-row-spanning.md +0 -74
  81. package/docs/grid-functionalities/dynamic-item-metadata.md +0 -124
  82. package/docs/grid-functionalities/excel-copy-buffer.md +0 -145
  83. package/docs/grid-functionalities/frozen-columns-rows.md +0 -164
  84. package/docs/grid-functionalities/grouping-and-aggregators.md +0 -269
  85. package/docs/grid-functionalities/header-footer-slots.md +0 -22
  86. package/docs/grid-functionalities/infinite-scroll.md +0 -150
  87. package/docs/grid-functionalities/providing-grid-data.md +0 -61
  88. package/docs/grid-functionalities/row-detail.md +0 -530
  89. package/docs/grid-functionalities/tree-data-grid.md +0 -391
  90. package/docs/localization/Localization---Component-Sample.md +0 -87
  91. package/docs/localization/Localization-with-Custom-Locales.md +0 -66
  92. package/docs/localization/Localization-with-ngx-translate.md +0 -148
  93. package/docs/migrations/migration-to-2.x.md +0 -304
  94. package/docs/migrations/migration-to-3.x.md +0 -295
  95. package/docs/migrations/migration-to-4.x.md +0 -83
  96. package/docs/migrations/migration-to-5.x.md +0 -160
  97. package/docs/migrations/migration-to-6.x.md +0 -128
  98. package/docs/migrations/migration-to-7.x.md +0 -294
  99. package/docs/migrations/migration-to-8.x.md +0 -316
  100. package/docs/migrations/migration-to-9.x.md +0 -219
  101. package/docs/slick-grid-dataview-objects/slickgrid-dataview-objects.md +0 -79
  102. package/docs/styling/dark-mode.md +0 -100
  103. package/docs/styling/styling.md +0 -250
  104. package/docs/testing/testing-patterns.md +0 -73
  105. package/eslint.config.mjs +0 -60
  106. package/ng-package.json +0 -10
  107. package/src/assets/angular-logo.png +0 -0
  108. package/src/assets/angular-logo2.png +0 -0
  109. package/src/assets/data/collection_100_numbers.json +0 -12
  110. package/src/assets/data/collection_500_numbers.json +0 -52
  111. package/src/assets/data/countries.json +0 -245
  112. package/src/assets/data/country_names.json +0 -245
  113. package/src/assets/data/customers_100.json +0 -102
  114. package/src/assets/data/users.csv +0 -5
  115. package/src/assets/i18n/en.json +0 -102
  116. package/src/assets/i18n/fr.json +0 -103
  117. package/src/demos/app-routing.module.ts +0 -108
  118. package/src/demos/app.component.html +0 -187
  119. package/src/demos/app.component.scss +0 -79
  120. package/src/demos/app.component.ts +0 -11
  121. package/src/demos/app.module.ts +0 -196
  122. package/src/demos/environments/environment.dev.ts +0 -3
  123. package/src/demos/environments/environment.prod.ts +0 -3
  124. package/src/demos/environments/environment.ts +0 -8
  125. package/src/demos/examples/custom-angularComponentEditor.ts +0 -187
  126. package/src/demos/examples/custom-angularComponentFilter.ts +0 -123
  127. package/src/demos/examples/custom-buttonFormatter.component.ts +0 -13
  128. package/src/demos/examples/custom-inputEditor.ts +0 -132
  129. package/src/demos/examples/custom-inputFilter.ts +0 -134
  130. package/src/demos/examples/custom-titleFormatter.component.ts +0 -9
  131. package/src/demos/examples/data/collection_100_numbers.json +0 -12
  132. package/src/demos/examples/data/collection_500_numbers.json +0 -52
  133. package/src/demos/examples/data/countries.json +0 -245
  134. package/src/demos/examples/data/country_names.json +0 -245
  135. package/src/demos/examples/data/customers_100.json +0 -102
  136. package/src/demos/examples/data/users.csv +0 -5
  137. package/src/demos/examples/editor-ng-select.component.ts +0 -38
  138. package/src/demos/examples/example01.component.html +0 -48
  139. package/src/demos/examples/example01.component.ts +0 -109
  140. package/src/demos/examples/example02.component.html +0 -45
  141. package/src/demos/examples/example02.component.ts +0 -218
  142. package/src/demos/examples/example03.component.html +0 -118
  143. package/src/demos/examples/example03.component.ts +0 -694
  144. package/src/demos/examples/example04.component.html +0 -87
  145. package/src/demos/examples/example04.component.ts +0 -326
  146. package/src/demos/examples/example05.component.html +0 -151
  147. package/src/demos/examples/example05.component.ts +0 -474
  148. package/src/demos/examples/example06.component.html +0 -163
  149. package/src/demos/examples/example06.component.ts +0 -446
  150. package/src/demos/examples/example07.component.html +0 -56
  151. package/src/demos/examples/example07.component.scss +0 -10
  152. package/src/demos/examples/example07.component.ts +0 -216
  153. package/src/demos/examples/example08.component.html +0 -51
  154. package/src/demos/examples/example08.component.scss +0 -23
  155. package/src/demos/examples/example08.component.ts +0 -195
  156. package/src/demos/examples/example09.component.html +0 -55
  157. package/src/demos/examples/example09.component.scss +0 -22
  158. package/src/demos/examples/example09.component.ts +0 -302
  159. package/src/demos/examples/example10.component.html +0 -103
  160. package/src/demos/examples/example10.component.ts +0 -309
  161. package/src/demos/examples/example11.component.html +0 -91
  162. package/src/demos/examples/example11.component.ts +0 -276
  163. package/src/demos/examples/example12.component.html +0 -98
  164. package/src/demos/examples/example12.component.ts +0 -317
  165. package/src/demos/examples/example13.component.html +0 -96
  166. package/src/demos/examples/example13.component.ts +0 -370
  167. package/src/demos/examples/example14.component.html +0 -50
  168. package/src/demos/examples/example14.component.scss +0 -11
  169. package/src/demos/examples/example14.component.ts +0 -156
  170. package/src/demos/examples/example15.component.html +0 -56
  171. package/src/demos/examples/example15.component.ts +0 -304
  172. package/src/demos/examples/example16.component.html +0 -77
  173. package/src/demos/examples/example16.component.ts +0 -277
  174. package/src/demos/examples/example17.component.html +0 -50
  175. package/src/demos/examples/example17.component.ts +0 -109
  176. package/src/demos/examples/example18.component.html +0 -132
  177. package/src/demos/examples/example18.component.ts +0 -445
  178. package/src/demos/examples/example19-rowdetail.component.html +0 -40
  179. package/src/demos/examples/example19-rowdetail.component.ts +0 -54
  180. package/src/demos/examples/example19.component.html +0 -79
  181. package/src/demos/examples/example19.component.ts +0 -316
  182. package/src/demos/examples/example20.component.html +0 -76
  183. package/src/demos/examples/example20.component.scss +0 -11
  184. package/src/demos/examples/example20.component.ts +0 -341
  185. package/src/demos/examples/example21.component.html +0 -86
  186. package/src/demos/examples/example21.component.scss +0 -16
  187. package/src/demos/examples/example21.component.ts +0 -140
  188. package/src/demos/examples/example22.component.html +0 -41
  189. package/src/demos/examples/example22.component.ts +0 -117
  190. package/src/demos/examples/example23.component.html +0 -111
  191. package/src/demos/examples/example23.component.ts +0 -323
  192. package/src/demos/examples/example24.component.html +0 -120
  193. package/src/demos/examples/example24.component.scss +0 -62
  194. package/src/demos/examples/example24.component.ts +0 -641
  195. package/src/demos/examples/example25.component.html +0 -60
  196. package/src/demos/examples/example25.component.scss +0 -8
  197. package/src/demos/examples/example25.component.ts +0 -255
  198. package/src/demos/examples/example26.component.html +0 -98
  199. package/src/demos/examples/example26.component.scss +0 -42
  200. package/src/demos/examples/example26.component.ts +0 -383
  201. package/src/demos/examples/example27.component.html +0 -138
  202. package/src/demos/examples/example27.component.scss +0 -10
  203. package/src/demos/examples/example27.component.ts +0 -369
  204. package/src/demos/examples/example28.component.html +0 -143
  205. package/src/demos/examples/example28.component.scss +0 -54
  206. package/src/demos/examples/example28.component.ts +0 -453
  207. package/src/demos/examples/example29.component.html +0 -30
  208. package/src/demos/examples/example29.component.ts +0 -70
  209. package/src/demos/examples/example30.component.html +0 -116
  210. package/src/demos/examples/example30.component.scss +0 -20
  211. package/src/demos/examples/example30.component.ts +0 -1070
  212. package/src/demos/examples/example32.component.html +0 -77
  213. package/src/demos/examples/example32.component.scss +0 -8
  214. package/src/demos/examples/example32.component.ts +0 -905
  215. package/src/demos/examples/example33.component.html +0 -50
  216. package/src/demos/examples/example33.component.scss +0 -46
  217. package/src/demos/examples/example33.component.ts +0 -571
  218. package/src/demos/examples/example34.component.html +0 -82
  219. package/src/demos/examples/example34.component.scss +0 -77
  220. package/src/demos/examples/example34.component.ts +0 -434
  221. package/src/demos/examples/example35.component.html +0 -77
  222. package/src/demos/examples/example35.component.scss +0 -18
  223. package/src/demos/examples/example35.component.ts +0 -264
  224. package/src/demos/examples/example36.component.html +0 -56
  225. package/src/demos/examples/example36.component.scss +0 -26
  226. package/src/demos/examples/example36.component.ts +0 -504
  227. package/src/demos/examples/example37.component.html +0 -30
  228. package/src/demos/examples/example37.component.ts +0 -123
  229. package/src/demos/examples/example38.component.html +0 -104
  230. package/src/demos/examples/example38.component.scss +0 -8
  231. package/src/demos/examples/example38.component.ts +0 -420
  232. package/src/demos/examples/example39.component.html +0 -112
  233. package/src/demos/examples/example39.component.scss +0 -8
  234. package/src/demos/examples/example39.component.ts +0 -371
  235. package/src/demos/examples/example40.component.html +0 -76
  236. package/src/demos/examples/example40.component.ts +0 -226
  237. package/src/demos/examples/example41.component.html +0 -50
  238. package/src/demos/examples/example41.component.scss +0 -42
  239. package/src/demos/examples/example41.component.ts +0 -229
  240. package/src/demos/examples/example42.component.html +0 -47
  241. package/src/demos/examples/example42.component.ts +0 -203
  242. package/src/demos/examples/example43.component.html +0 -94
  243. package/src/demos/examples/example43.component.scss +0 -30
  244. package/src/demos/examples/example43.component.ts +0 -449
  245. package/src/demos/examples/example44.component.html +0 -78
  246. package/src/demos/examples/example44.component.scss +0 -50
  247. package/src/demos/examples/example44.component.ts +0 -375
  248. package/src/demos/examples/example45-detail.component.html +0 -15
  249. package/src/demos/examples/example45-detail.component.ts +0 -97
  250. package/src/demos/examples/example45.component.html +0 -110
  251. package/src/demos/examples/example45.component.scss +0 -50
  252. package/src/demos/examples/example45.component.ts +0 -243
  253. package/src/demos/examples/filter-ng-select.component.ts +0 -33
  254. package/src/demos/examples/grid-custom-pager.component.html +0 -60
  255. package/src/demos/examples/grid-custom-pager.component.scss +0 -57
  256. package/src/demos/examples/grid-custom-pager.component.ts +0 -107
  257. package/src/demos/examples/grid-remote.component.html +0 -44
  258. package/src/demos/examples/grid-remote.component.ts +0 -164
  259. package/src/demos/examples/home.component.html +0 -39
  260. package/src/demos/examples/home.component.ts +0 -10
  261. package/src/demos/examples/jsonp.ts +0 -89
  262. package/src/demos/examples/rowdetail-preload.component.ts +0 -10
  263. package/src/demos/examples/swt-common-grid-pagination.component.ts +0 -160
  264. package/src/demos/examples/swt-common-grid-test.component.html +0 -37
  265. package/src/demos/examples/swt-common-grid-test.component.ts +0 -214
  266. package/src/demos/examples/swt-common-grid.component.ts +0 -436
  267. package/src/demos/examples/swt-logger.service.ts +0 -173
  268. package/src/demos/examples/utilities.ts +0 -9
  269. package/src/favicon.ico +0 -0
  270. package/src/index.html +0 -17
  271. package/src/library/components/__tests__/angular-slickgrid.component.spec.ts +0 -2638
  272. package/src/library/components/angular-slickgrid.component.html +0 -5
  273. package/src/library/components/angular-slickgrid.component.ts +0 -1662
  274. package/src/library/constants.ts +0 -105
  275. package/src/library/extensions/__tests__/slickRowDetailView.spec.ts +0 -751
  276. package/src/library/extensions/index.ts +0 -1
  277. package/src/library/extensions/slickRowDetailView.ts +0 -395
  278. package/src/library/global-grid-options.ts +0 -273
  279. package/src/library/index.ts +0 -11
  280. package/src/library/models/angularComponentOutput.interface.ts +0 -6
  281. package/src/library/models/angularGridInstance.interface.ts +0 -76
  282. package/src/library/models/externalTestingDependencies.interface.ts +0 -37
  283. package/src/library/models/gridOption.interface.ts +0 -15
  284. package/src/library/models/index.ts +0 -5
  285. package/src/library/models/rowDetailView.interface.ts +0 -16
  286. package/src/library/modules/angular-slickgrid.module.spec.ts +0 -25
  287. package/src/library/modules/angular-slickgrid.module.ts +0 -27
  288. package/src/library/services/__tests__/angularUtilService.spec.ts +0 -156
  289. package/src/library/services/__tests__/container.service.spec.ts +0 -25
  290. package/src/library/services/__tests__/translater.service.spec.ts +0 -43
  291. package/src/library/services/__tests__/utilities.spec.ts +0 -22
  292. package/src/library/services/angularUtil.service.ts +0 -120
  293. package/src/library/services/container.service.ts +0 -26
  294. package/src/library/services/index.ts +0 -4
  295. package/src/library/services/translater.service.ts +0 -38
  296. package/src/library/services/utilities.ts +0 -19
  297. package/src/library/slickgrid-config.ts +0 -10
  298. package/src/main.ts +0 -13
  299. package/src/public_api.ts +0 -1
  300. package/src/styles.scss +0 -178
  301. package/test/cypress/e2e/example01.cy.ts +0 -367
  302. package/test/cypress/e2e/example02.cy.ts +0 -60
  303. package/test/cypress/e2e/example03.cy.ts +0 -268
  304. package/test/cypress/e2e/example04.cy.ts +0 -254
  305. package/test/cypress/e2e/example05.cy.ts +0 -804
  306. package/test/cypress/e2e/example06.cy.ts +0 -890
  307. package/test/cypress/e2e/example07.cy.ts +0 -384
  308. package/test/cypress/e2e/example08.cy.ts +0 -190
  309. package/test/cypress/e2e/example09.cy.ts +0 -392
  310. package/test/cypress/e2e/example10.cy.ts +0 -650
  311. package/test/cypress/e2e/example11.cy.ts +0 -86
  312. package/test/cypress/e2e/example12.cy.ts +0 -269
  313. package/test/cypress/e2e/example13.cy.ts +0 -246
  314. package/test/cypress/e2e/example14.cy.ts +0 -122
  315. package/test/cypress/e2e/example15.cy.ts +0 -598
  316. package/test/cypress/e2e/example16.cy.ts +0 -427
  317. package/test/cypress/e2e/example17.cy.ts +0 -83
  318. package/test/cypress/e2e/example18.cy.ts +0 -431
  319. package/test/cypress/e2e/example19.cy.ts +0 -263
  320. package/test/cypress/e2e/example20.cy.ts +0 -264
  321. package/test/cypress/e2e/example21.cy.ts +0 -77
  322. package/test/cypress/e2e/example22.cy.ts +0 -94
  323. package/test/cypress/e2e/example23.cy.ts +0 -259
  324. package/test/cypress/e2e/example24.cy.ts +0 -707
  325. package/test/cypress/e2e/example25.cy.ts +0 -193
  326. package/test/cypress/e2e/example26.cy.ts +0 -111
  327. package/test/cypress/e2e/example27.cy.ts +0 -261
  328. package/test/cypress/e2e/example28.cy.ts +0 -740
  329. package/test/cypress/e2e/example29.cy.ts +0 -30
  330. package/test/cypress/e2e/example30.cy.ts +0 -757
  331. package/test/cypress/e2e/example31.cy.ts +0 -69
  332. package/test/cypress/e2e/example32.cy.ts +0 -272
  333. package/test/cypress/e2e/example33.cy.ts +0 -278
  334. package/test/cypress/e2e/example34.cy.ts +0 -84
  335. package/test/cypress/e2e/example35.cy.ts +0 -178
  336. package/test/cypress/e2e/example36.cy.ts +0 -219
  337. package/test/cypress/e2e/example37.cy.ts +0 -52
  338. package/test/cypress/e2e/example38.cy.ts +0 -160
  339. package/test/cypress/e2e/example39.cy.ts +0 -150
  340. package/test/cypress/e2e/example40.cy.ts +0 -126
  341. package/test/cypress/e2e/example41.cy.ts +0 -90
  342. package/test/cypress/e2e/example42.cy.ts +0 -82
  343. package/test/cypress/e2e/example43.cy.ts +0 -482
  344. package/test/cypress/e2e/example44.cy.ts +0 -458
  345. package/test/cypress/e2e/example45.cy.ts +0 -455
  346. package/test/cypress/e2e/home.cy.ts +0 -7
  347. package/test/cypress/fixtures/example.json +0 -5
  348. package/test/cypress/plugins/index.ts +0 -17
  349. package/test/cypress/plugins/utilities.ts +0 -28
  350. package/test/cypress/support/commands.ts +0 -88
  351. package/test/cypress/support/common.ts +0 -47
  352. package/test/cypress/support/drag.ts +0 -101
  353. package/test/cypress/support/index.ts +0 -20
  354. package/test/cypress/tsconfig.json +0 -9
  355. package/test/cypress.config.ts +0 -34
  356. package/test/mockSlickEvent.ts +0 -77
  357. package/test/rxjsResourceStub.ts +0 -69
  358. package/test/test-setup.ts +0 -6
  359. package/test/translateServiceStub.ts +0 -230
  360. package/test/translaterServiceStub.ts +0 -239
  361. package/test/tsconfig.json +0 -17
  362. package/test/vitest-global-mocks.ts +0 -41
  363. package/test/vitest-global-setup.ts +0 -3
  364. package/test/vitest-pretest.ts +0 -5
  365. package/tsconfig.app.json +0 -14
  366. package/tsconfig.json +0 -31
  367. package/tsconfig.spec.json +0 -11
  368. package/types/sortablejs.d.ts +0 -4
  369. package/vite.config.mts +0 -51
  370. /package/{dist/fesm2022 → fesm2022}/angular-slickgrid.mjs +0 -0
  371. /package/{dist/fesm2022 → fesm2022}/angular-slickgrid.mjs.map +0 -0
  372. /package/{dist/i18n → i18n}/en.json +0 -0
  373. /package/{dist/i18n → i18n}/fr.json +0 -0
  374. /package/{dist/index.d.ts → index.d.ts} +0 -0
  375. /package/{dist/library → library}/components/angular-slickgrid.component.d.ts +0 -0
  376. /package/{dist/library → library}/constants.d.ts +0 -0
  377. /package/{dist/library → library}/extensions/index.d.ts +0 -0
  378. /package/{dist/library → library}/extensions/slickRowDetailView.d.ts +0 -0
  379. /package/{dist/library → library}/global-grid-options.d.ts +0 -0
  380. /package/{dist/library → library}/index.d.ts +0 -0
  381. /package/{dist/library → library}/models/angularComponentOutput.interface.d.ts +0 -0
  382. /package/{dist/library → library}/models/angularGridInstance.interface.d.ts +0 -0
  383. /package/{dist/library → library}/models/externalTestingDependencies.interface.d.ts +0 -0
  384. /package/{dist/library → library}/models/gridOption.interface.d.ts +0 -0
  385. /package/{dist/library → library}/models/index.d.ts +0 -0
  386. /package/{dist/library → library}/models/rowDetailView.interface.d.ts +0 -0
  387. /package/{dist/library → library}/modules/angular-slickgrid.module.d.ts +0 -0
  388. /package/{dist/library → library}/services/angularUtil.service.d.ts +0 -0
  389. /package/{dist/library → library}/services/container.service.d.ts +0 -0
  390. /package/{dist/library → library}/services/index.d.ts +0 -0
  391. /package/{dist/library → library}/services/translater.service.d.ts +0 -0
  392. /package/{dist/library → library}/services/utilities.d.ts +0 -0
  393. /package/{dist/library → library}/slickgrid-config.d.ts +0 -0
  394. /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
- }