@sd-angular/core 1.2.94 → 1.2.97

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 (812) hide show
  1. package/api/package.json +12 -1
  2. package/api/sd-angular-core-api.d.ts +2 -0
  3. package/api/sd-angular-core-api.d.ts.__ivy_ngcc_bak +4 -0
  4. package/api/sd-angular-core-api.d.ts.map +1 -0
  5. package/autocomplete/package.json +12 -1
  6. package/autocomplete/sd-angular-core-autocomplete.d.ts +2 -0
  7. package/autocomplete/sd-angular-core-autocomplete.d.ts.__ivy_ngcc_bak +4 -0
  8. package/autocomplete/sd-angular-core-autocomplete.d.ts.map +1 -0
  9. package/badge/package.json +12 -1
  10. package/badge/sd-angular-core-badge.d.ts +2 -0
  11. package/badge/sd-angular-core-badge.d.ts.__ivy_ngcc_bak +4 -0
  12. package/badge/sd-angular-core-badge.d.ts.map +1 -0
  13. package/bundles/sd-angular-core-api.umd.js +2 -1
  14. package/bundles/sd-angular-core-api.umd.js.__ivy_ngcc_bak +876 -0
  15. package/bundles/sd-angular-core-api.umd.js.map +1 -1
  16. package/bundles/sd-angular-core-api.umd.js.map.__ivy_ngcc_bak +1 -0
  17. package/bundles/sd-angular-core-autocomplete.umd.js +2 -1
  18. package/bundles/sd-angular-core-autocomplete.umd.js.__ivy_ngcc_bak +791 -0
  19. package/bundles/sd-angular-core-autocomplete.umd.js.map +1 -1
  20. package/bundles/sd-angular-core-autocomplete.umd.js.map.__ivy_ngcc_bak +1 -0
  21. package/bundles/sd-angular-core-badge.umd.js +2 -1
  22. package/bundles/sd-angular-core-badge.umd.js.__ivy_ngcc_bak +89 -0
  23. package/bundles/sd-angular-core-badge.umd.js.map +1 -1
  24. package/bundles/sd-angular-core-badge.umd.js.map.__ivy_ngcc_bak +1 -0
  25. package/bundles/sd-angular-core-button.umd.js +6 -2
  26. package/bundles/sd-angular-core-button.umd.js.__ivy_ngcc_bak +447 -0
  27. package/bundles/sd-angular-core-button.umd.js.map +1 -1
  28. package/bundles/sd-angular-core-button.umd.js.map.__ivy_ngcc_bak +1 -0
  29. package/bundles/sd-angular-core-button.umd.min.js +1 -1
  30. package/bundles/sd-angular-core-button.umd.min.js.map +1 -1
  31. package/bundles/sd-angular-core-cache.umd.js +2 -1
  32. package/bundles/sd-angular-core-cache.umd.js.__ivy_ngcc_bak +623 -0
  33. package/bundles/sd-angular-core-cache.umd.js.map +1 -1
  34. package/bundles/sd-angular-core-cache.umd.js.map.__ivy_ngcc_bak +1 -0
  35. package/bundles/sd-angular-core-chart.umd.js +2 -1
  36. package/bundles/sd-angular-core-chart.umd.js.__ivy_ngcc_bak +1106 -0
  37. package/bundles/sd-angular-core-chart.umd.js.map +1 -1
  38. package/bundles/sd-angular-core-chart.umd.js.map.__ivy_ngcc_bak +1 -0
  39. package/bundles/sd-angular-core-checkbox.umd.js +2 -1
  40. package/bundles/sd-angular-core-checkbox.umd.js.__ivy_ngcc_bak +461 -0
  41. package/bundles/sd-angular-core-checkbox.umd.js.map +1 -1
  42. package/bundles/sd-angular-core-checkbox.umd.js.map.__ivy_ngcc_bak +1 -0
  43. package/bundles/sd-angular-core-chip.umd.js +2 -1
  44. package/bundles/sd-angular-core-chip.umd.js.__ivy_ngcc_bak +1051 -0
  45. package/bundles/sd-angular-core-chip.umd.js.map +1 -1
  46. package/bundles/sd-angular-core-chip.umd.js.map.__ivy_ngcc_bak +1 -0
  47. package/bundles/sd-angular-core-comment.umd.js +2 -1
  48. package/bundles/sd-angular-core-comment.umd.js.__ivy_ngcc_bak +456 -0
  49. package/bundles/sd-angular-core-comment.umd.js.map +1 -1
  50. package/bundles/sd-angular-core-comment.umd.js.map.__ivy_ngcc_bak +1 -0
  51. package/bundles/sd-angular-core-common.umd.js +2 -1
  52. package/bundles/sd-angular-core-common.umd.js.__ivy_ngcc_bak +962 -0
  53. package/bundles/sd-angular-core-common.umd.js.map +1 -1
  54. package/bundles/sd-angular-core-common.umd.js.map.__ivy_ngcc_bak +1 -0
  55. package/bundles/sd-angular-core-confirm.umd.js +2 -1
  56. package/bundles/sd-angular-core-confirm.umd.js.__ivy_ngcc_bak +159 -0
  57. package/bundles/sd-angular-core-confirm.umd.js.map +1 -1
  58. package/bundles/sd-angular-core-confirm.umd.js.map.__ivy_ngcc_bak +1 -0
  59. package/bundles/sd-angular-core-date-month.umd.js +2 -1
  60. package/bundles/sd-angular-core-date-month.umd.js.__ivy_ngcc_bak +650 -0
  61. package/bundles/sd-angular-core-date-month.umd.js.map +1 -1
  62. package/bundles/sd-angular-core-date-month.umd.js.map.__ivy_ngcc_bak +1 -0
  63. package/bundles/sd-angular-core-date-range.umd.js +2 -1
  64. package/bundles/sd-angular-core-date-range.umd.js.__ivy_ngcc_bak +660 -0
  65. package/bundles/sd-angular-core-date-range.umd.js.map +1 -1
  66. package/bundles/sd-angular-core-date-range.umd.js.map.__ivy_ngcc_bak +1 -0
  67. package/bundles/sd-angular-core-date-time.umd.js +2 -1
  68. package/bundles/sd-angular-core-date-time.umd.js.__ivy_ngcc_bak +734 -0
  69. package/bundles/sd-angular-core-date-time.umd.js.map +1 -1
  70. package/bundles/sd-angular-core-date-time.umd.js.map.__ivy_ngcc_bak +1 -0
  71. package/bundles/sd-angular-core-db.umd.js +2 -1
  72. package/bundles/sd-angular-core-db.umd.js.__ivy_ngcc_bak +464 -0
  73. package/bundles/sd-angular-core-db.umd.js.map +1 -1
  74. package/bundles/sd-angular-core-db.umd.js.map.__ivy_ngcc_bak +1 -0
  75. package/bundles/sd-angular-core-dynamic-report.umd.js +2 -1
  76. package/bundles/sd-angular-core-dynamic-report.umd.js.__ivy_ngcc_bak +96 -0
  77. package/bundles/sd-angular-core-dynamic-report.umd.js.map +1 -1
  78. package/bundles/sd-angular-core-dynamic-report.umd.js.map.__ivy_ngcc_bak +1 -0
  79. package/bundles/sd-angular-core-editor.umd.js +13 -21
  80. package/bundles/sd-angular-core-editor.umd.js.__ivy_ngcc_bak +943 -0
  81. package/bundles/sd-angular-core-editor.umd.js.map +1 -1
  82. package/bundles/sd-angular-core-editor.umd.js.map.__ivy_ngcc_bak +1 -0
  83. package/bundles/sd-angular-core-editor.umd.min.js +2 -2
  84. package/bundles/sd-angular-core-editor.umd.min.js.map +1 -1
  85. package/bundles/sd-angular-core-excel.umd.js +2 -1
  86. package/bundles/sd-angular-core-excel.umd.js.__ivy_ngcc_bak +500 -0
  87. package/bundles/sd-angular-core-excel.umd.js.map +1 -1
  88. package/bundles/sd-angular-core-excel.umd.js.map.__ivy_ngcc_bak +1 -0
  89. package/bundles/sd-angular-core-export.umd.js +2 -1
  90. package/bundles/sd-angular-core-export.umd.js.__ivy_ngcc_bak +712 -0
  91. package/bundles/sd-angular-core-export.umd.js.map +1 -1
  92. package/bundles/sd-angular-core-export.umd.js.map.__ivy_ngcc_bak +1 -0
  93. package/bundles/sd-angular-core-filter.umd.js +2 -1
  94. package/bundles/sd-angular-core-filter.umd.js.__ivy_ngcc_bak +703 -0
  95. package/bundles/sd-angular-core-filter.umd.js.map +1 -1
  96. package/bundles/sd-angular-core-filter.umd.js.map.__ivy_ngcc_bak +1 -0
  97. package/bundles/sd-angular-core-form.umd.js +2 -1
  98. package/bundles/sd-angular-core-form.umd.js.__ivy_ngcc_bak +88 -0
  99. package/bundles/sd-angular-core-form.umd.js.map +1 -1
  100. package/bundles/sd-angular-core-form.umd.js.map.__ivy_ngcc_bak +1 -0
  101. package/bundles/sd-angular-core-grid-material.umd.js +2 -1
  102. package/bundles/sd-angular-core-grid-material.umd.js.__ivy_ngcc_bak +5029 -0
  103. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  104. package/bundles/sd-angular-core-grid-material.umd.js.map.__ivy_ngcc_bak +1 -0
  105. package/bundles/sd-angular-core-grid.umd.js +2 -1
  106. package/bundles/sd-angular-core-grid.umd.js.__ivy_ngcc_bak +5125 -0
  107. package/bundles/sd-angular-core-grid.umd.js.map +1 -1
  108. package/bundles/sd-angular-core-grid.umd.js.map.__ivy_ngcc_bak +1 -0
  109. package/bundles/sd-angular-core-group.umd.js +2 -1
  110. package/bundles/sd-angular-core-group.umd.js.__ivy_ngcc_bak +93 -0
  111. package/bundles/sd-angular-core-group.umd.js.map +1 -1
  112. package/bundles/sd-angular-core-group.umd.js.map.__ivy_ngcc_bak +1 -0
  113. package/bundles/sd-angular-core-header-title.umd.js +2 -1
  114. package/bundles/sd-angular-core-header-title.umd.js.__ivy_ngcc_bak +56 -0
  115. package/bundles/sd-angular-core-header-title.umd.js.map +1 -1
  116. package/bundles/sd-angular-core-header-title.umd.js.map.__ivy_ngcc_bak +1 -0
  117. package/bundles/sd-angular-core-image-preview.umd.js +2 -1
  118. package/bundles/sd-angular-core-image-preview.umd.js.__ivy_ngcc_bak +121 -0
  119. package/bundles/sd-angular-core-image-preview.umd.js.map +1 -1
  120. package/bundles/sd-angular-core-image-preview.umd.js.map.__ivy_ngcc_bak +1 -0
  121. package/bundles/sd-angular-core-input-currency.umd.js +2 -1
  122. package/bundles/sd-angular-core-input-currency.umd.js.__ivy_ngcc_bak +737 -0
  123. package/bundles/sd-angular-core-input-currency.umd.js.map +1 -1
  124. package/bundles/sd-angular-core-input-currency.umd.js.map.__ivy_ngcc_bak +1 -0
  125. package/bundles/sd-angular-core-input-dropdown.umd.js +2 -1
  126. package/bundles/sd-angular-core-input-dropdown.umd.js.__ivy_ngcc_bak +634 -0
  127. package/bundles/sd-angular-core-input-dropdown.umd.js.map +1 -1
  128. package/bundles/sd-angular-core-input-dropdown.umd.js.map.__ivy_ngcc_bak +1 -0
  129. package/bundles/sd-angular-core-input-number.umd.js +2 -1
  130. package/bundles/sd-angular-core-input-number.umd.js.__ivy_ngcc_bak +792 -0
  131. package/bundles/sd-angular-core-input-number.umd.js.map +1 -1
  132. package/bundles/sd-angular-core-input-number.umd.js.map.__ivy_ngcc_bak +1 -0
  133. package/bundles/sd-angular-core-input-upload-file.umd.js +2 -1
  134. package/bundles/sd-angular-core-input-upload-file.umd.js.__ivy_ngcc_bak +648 -0
  135. package/bundles/sd-angular-core-input-upload-file.umd.js.map +1 -1
  136. package/bundles/sd-angular-core-input-upload-file.umd.js.map.__ivy_ngcc_bak +1 -0
  137. package/bundles/sd-angular-core-input.umd.js +2 -1
  138. package/bundles/sd-angular-core-input.umd.js.__ivy_ngcc_bak +798 -0
  139. package/bundles/sd-angular-core-input.umd.js.map +1 -1
  140. package/bundles/sd-angular-core-input.umd.js.map.__ivy_ngcc_bak +1 -0
  141. package/bundles/sd-angular-core-json-editor.umd.js +2 -1
  142. package/bundles/sd-angular-core-json-editor.umd.js.__ivy_ngcc_bak +523 -0
  143. package/bundles/sd-angular-core-json-editor.umd.js.map +1 -1
  144. package/bundles/sd-angular-core-json-editor.umd.js.map.__ivy_ngcc_bak +1 -0
  145. package/bundles/sd-angular-core-konva.umd.js +2 -1
  146. package/bundles/sd-angular-core-konva.umd.js.__ivy_ngcc_bak +605 -0
  147. package/bundles/sd-angular-core-konva.umd.js.map +1 -1
  148. package/bundles/sd-angular-core-konva.umd.js.map.__ivy_ngcc_bak +1 -0
  149. package/bundles/sd-angular-core-label.umd.js +2 -1
  150. package/bundles/sd-angular-core-label.umd.js.__ivy_ngcc_bak +60 -0
  151. package/bundles/sd-angular-core-label.umd.js.map +1 -1
  152. package/bundles/sd-angular-core-label.umd.js.map.__ivy_ngcc_bak +1 -0
  153. package/bundles/sd-angular-core-loading.umd.js +2 -1
  154. package/bundles/sd-angular-core-loading.umd.js.__ivy_ngcc_bak +413 -0
  155. package/bundles/sd-angular-core-loading.umd.js.map +1 -1
  156. package/bundles/sd-angular-core-loading.umd.js.map.__ivy_ngcc_bak +1 -0
  157. package/bundles/sd-angular-core-modal-resizable.umd.js +2 -1
  158. package/bundles/sd-angular-core-modal-resizable.umd.js.__ivy_ngcc_bak +487 -0
  159. package/bundles/sd-angular-core-modal-resizable.umd.js.map +1 -1
  160. package/bundles/sd-angular-core-modal-resizable.umd.js.map.__ivy_ngcc_bak +1 -0
  161. package/bundles/sd-angular-core-modal.umd.js +2 -1
  162. package/bundles/sd-angular-core-modal.umd.js.__ivy_ngcc_bak +307 -0
  163. package/bundles/sd-angular-core-modal.umd.js.map +1 -1
  164. package/bundles/sd-angular-core-modal.umd.js.map.__ivy_ngcc_bak +1 -0
  165. package/bundles/sd-angular-core-notify.umd.js +2 -1
  166. package/bundles/sd-angular-core-notify.umd.js.__ivy_ngcc_bak +719 -0
  167. package/bundles/sd-angular-core-notify.umd.js.map +1 -1
  168. package/bundles/sd-angular-core-notify.umd.js.map.__ivy_ngcc_bak +1 -0
  169. package/bundles/sd-angular-core-popover.umd.js +2 -1
  170. package/bundles/sd-angular-core-popover.umd.js.__ivy_ngcc_bak +752 -0
  171. package/bundles/sd-angular-core-popover.umd.js.map +1 -1
  172. package/bundles/sd-angular-core-popover.umd.js.map.__ivy_ngcc_bak +1 -0
  173. package/bundles/sd-angular-core-quick-action.umd.js +2 -1
  174. package/bundles/sd-angular-core-quick-action.umd.js.__ivy_ngcc_bak +66 -0
  175. package/bundles/sd-angular-core-quick-action.umd.js.map +1 -1
  176. package/bundles/sd-angular-core-quick-action.umd.js.map.__ivy_ngcc_bak +1 -0
  177. package/bundles/sd-angular-core-radio.umd.js +2 -1
  178. package/bundles/sd-angular-core-radio.umd.js.__ivy_ngcc_bak +535 -0
  179. package/bundles/sd-angular-core-radio.umd.js.map +1 -1
  180. package/bundles/sd-angular-core-radio.umd.js.map.__ivy_ngcc_bak +1 -0
  181. package/bundles/sd-angular-core-select-badge.umd.js +2 -1
  182. package/bundles/sd-angular-core-select-badge.umd.js.__ivy_ngcc_bak +486 -0
  183. package/bundles/sd-angular-core-select-badge.umd.js.map +1 -1
  184. package/bundles/sd-angular-core-select-badge.umd.js.map.__ivy_ngcc_bak +1 -0
  185. package/bundles/sd-angular-core-select-editor.umd.js +2 -1
  186. package/bundles/sd-angular-core-select-editor.umd.js.__ivy_ngcc_bak +431 -0
  187. package/bundles/sd-angular-core-select-editor.umd.js.map +1 -1
  188. package/bundles/sd-angular-core-select-editor.umd.js.map.__ivy_ngcc_bak +1 -0
  189. package/bundles/sd-angular-core-select.umd.js +2 -1
  190. package/bundles/sd-angular-core-select.umd.js.__ivy_ngcc_bak +921 -0
  191. package/bundles/sd-angular-core-select.umd.js.map +1 -1
  192. package/bundles/sd-angular-core-select.umd.js.map.__ivy_ngcc_bak +1 -0
  193. package/bundles/sd-angular-core-service.umd.js +2 -1
  194. package/bundles/sd-angular-core-service.umd.js.__ivy_ngcc_bak +42 -0
  195. package/bundles/sd-angular-core-service.umd.js.map +1 -1
  196. package/bundles/sd-angular-core-service.umd.js.map.__ivy_ngcc_bak +1 -0
  197. package/bundles/sd-angular-core-setting.umd.js +2 -1
  198. package/bundles/sd-angular-core-setting.umd.js.__ivy_ngcc_bak +664 -0
  199. package/bundles/sd-angular-core-setting.umd.js.map +1 -1
  200. package/bundles/sd-angular-core-setting.umd.js.map.__ivy_ngcc_bak +1 -0
  201. package/bundles/sd-angular-core-side-drawer.umd.js +2 -1
  202. package/bundles/sd-angular-core-side-drawer.umd.js.__ivy_ngcc_bak +438 -0
  203. package/bundles/sd-angular-core-side-drawer.umd.js.map +1 -1
  204. package/bundles/sd-angular-core-side-drawer.umd.js.map.__ivy_ngcc_bak +1 -0
  205. package/bundles/sd-angular-core-switch.umd.js +2 -1
  206. package/bundles/sd-angular-core-switch.umd.js.__ivy_ngcc_bak +454 -0
  207. package/bundles/sd-angular-core-switch.umd.js.map +1 -1
  208. package/bundles/sd-angular-core-switch.umd.js.map.__ivy_ngcc_bak +1 -0
  209. package/bundles/sd-angular-core-tab-router.umd.js +2 -1
  210. package/bundles/sd-angular-core-tab-router.umd.js.__ivy_ngcc_bak +941 -0
  211. package/bundles/sd-angular-core-tab-router.umd.js.map +1 -1
  212. package/bundles/sd-angular-core-tab-router.umd.js.map.__ivy_ngcc_bak +1 -0
  213. package/bundles/sd-angular-core-textarea.umd.js +2 -1
  214. package/bundles/sd-angular-core-textarea.umd.js.__ivy_ngcc_bak +642 -0
  215. package/bundles/sd-angular-core-textarea.umd.js.map +1 -1
  216. package/bundles/sd-angular-core-textarea.umd.js.map.__ivy_ngcc_bak +1 -0
  217. package/bundles/sd-angular-core-time.umd.js +2 -1
  218. package/bundles/sd-angular-core-time.umd.js.__ivy_ngcc_bak +497 -0
  219. package/bundles/sd-angular-core-time.umd.js.map +1 -1
  220. package/bundles/sd-angular-core-time.umd.js.map.__ivy_ngcc_bak +1 -0
  221. package/bundles/sd-angular-core-timeline.umd.js +2 -1
  222. package/bundles/sd-angular-core-timeline.umd.js.__ivy_ngcc_bak +102 -0
  223. package/bundles/sd-angular-core-timeline.umd.js.map +1 -1
  224. package/bundles/sd-angular-core-timeline.umd.js.map.__ivy_ngcc_bak +1 -0
  225. package/bundles/sd-angular-core-translate.umd.js +2 -1
  226. package/bundles/sd-angular-core-translate.umd.js.__ivy_ngcc_bak +119 -0
  227. package/bundles/sd-angular-core-translate.umd.js.map +1 -1
  228. package/bundles/sd-angular-core-translate.umd.js.map.__ivy_ngcc_bak +1 -0
  229. package/bundles/sd-angular-core-upload-excel.umd.js +2 -1
  230. package/bundles/sd-angular-core-upload-excel.umd.js.__ivy_ngcc_bak +1114 -0
  231. package/bundles/sd-angular-core-upload-excel.umd.js.map +1 -1
  232. package/bundles/sd-angular-core-upload-excel.umd.js.map.__ivy_ngcc_bak +1 -0
  233. package/bundles/sd-angular-core-upload-file.umd.js +2 -1
  234. package/bundles/sd-angular-core-upload-file.umd.js.__ivy_ngcc_bak +880 -0
  235. package/bundles/sd-angular-core-upload-file.umd.js.map +1 -1
  236. package/bundles/sd-angular-core-upload-file.umd.js.map.__ivy_ngcc_bak +1 -0
  237. package/bundles/sd-angular-core-utility.umd.js +2 -1
  238. package/bundles/sd-angular-core-utility.umd.js.__ivy_ngcc_bak +708 -0
  239. package/bundles/sd-angular-core-utility.umd.js.map +1 -1
  240. package/bundles/sd-angular-core-utility.umd.js.map.__ivy_ngcc_bak +1 -0
  241. package/bundles/sd-angular-core-view.umd.js +2 -1
  242. package/bundles/sd-angular-core-view.umd.js.__ivy_ngcc_bak +32 -0
  243. package/bundles/sd-angular-core-view.umd.js.map +1 -1
  244. package/bundles/sd-angular-core-view.umd.js.map.__ivy_ngcc_bak +1 -0
  245. package/button/package.json +12 -1
  246. package/button/sd-angular-core-button.d.ts +2 -0
  247. package/button/sd-angular-core-button.d.ts.__ivy_ngcc_bak +4 -0
  248. package/button/sd-angular-core-button.d.ts.map +1 -0
  249. package/button/sd-angular-core-button.metadata.json +1 -1
  250. package/cache/package.json +12 -1
  251. package/cache/sd-angular-core-cache.d.ts +2 -0
  252. package/cache/sd-angular-core-cache.d.ts.__ivy_ngcc_bak +4 -0
  253. package/cache/sd-angular-core-cache.d.ts.map +1 -0
  254. package/chart/package.json +12 -1
  255. package/chart/sd-angular-core-chart.d.ts +2 -0
  256. package/chart/sd-angular-core-chart.d.ts.__ivy_ngcc_bak +4 -0
  257. package/chart/sd-angular-core-chart.d.ts.map +1 -0
  258. package/checkbox/package.json +12 -1
  259. package/checkbox/sd-angular-core-checkbox.d.ts +2 -0
  260. package/checkbox/sd-angular-core-checkbox.d.ts.__ivy_ngcc_bak +5 -0
  261. package/checkbox/sd-angular-core-checkbox.d.ts.map +1 -0
  262. package/chip/package.json +12 -1
  263. package/chip/sd-angular-core-chip.d.ts +2 -0
  264. package/chip/sd-angular-core-chip.d.ts.__ivy_ngcc_bak +5 -0
  265. package/chip/sd-angular-core-chip.d.ts.map +1 -0
  266. package/comment/package.json +12 -1
  267. package/comment/sd-angular-core-comment.d.ts +2 -0
  268. package/comment/sd-angular-core-comment.d.ts.__ivy_ngcc_bak +4 -0
  269. package/comment/sd-angular-core-comment.d.ts.map +1 -0
  270. package/common/package.json +12 -1
  271. package/common/sd-angular-core-common.d.ts +2 -0
  272. package/common/sd-angular-core-common.d.ts.__ivy_ngcc_bak +4 -0
  273. package/common/sd-angular-core-common.d.ts.map +1 -0
  274. package/confirm/package.json +12 -1
  275. package/confirm/sd-angular-core-confirm.d.ts +2 -0
  276. package/confirm/sd-angular-core-confirm.d.ts.__ivy_ngcc_bak +4 -0
  277. package/confirm/sd-angular-core-confirm.d.ts.map +1 -0
  278. package/date-month/package.json +12 -1
  279. package/date-month/sd-angular-core-date-month.d.ts +2 -0
  280. package/date-month/sd-angular-core-date-month.d.ts.__ivy_ngcc_bak +5 -0
  281. package/date-month/sd-angular-core-date-month.d.ts.map +1 -0
  282. package/date-range/package.json +12 -1
  283. package/date-range/sd-angular-core-date-range.d.ts +2 -0
  284. package/date-range/sd-angular-core-date-range.d.ts.__ivy_ngcc_bak +4 -0
  285. package/date-range/sd-angular-core-date-range.d.ts.map +1 -0
  286. package/date-time/package.json +12 -1
  287. package/date-time/sd-angular-core-date-time.d.ts +2 -0
  288. package/date-time/sd-angular-core-date-time.d.ts.__ivy_ngcc_bak +4 -0
  289. package/date-time/sd-angular-core-date-time.d.ts.map +1 -0
  290. package/db/package.json +12 -1
  291. package/db/sd-angular-core-db.d.ts +2 -0
  292. package/db/sd-angular-core-db.d.ts.__ivy_ngcc_bak +4 -0
  293. package/db/sd-angular-core-db.d.ts.map +1 -0
  294. package/dynamic-report/package.json +12 -1
  295. package/dynamic-report/sd-angular-core-dynamic-report.d.ts +2 -0
  296. package/dynamic-report/sd-angular-core-dynamic-report.d.ts.__ivy_ngcc_bak +4 -0
  297. package/dynamic-report/sd-angular-core-dynamic-report.d.ts.map +1 -0
  298. package/editor/package.json +12 -1
  299. package/editor/sd-angular-core-editor.d.ts +2 -0
  300. package/editor/sd-angular-core-editor.d.ts.__ivy_ngcc_bak +4 -0
  301. package/editor/sd-angular-core-editor.d.ts.map +1 -0
  302. package/editor/sd-angular-core-editor.metadata.json +1 -1
  303. package/editor/src/lib/editor.component.d.ts +1 -6
  304. package/editor/src/lib/editor.model.d.ts +4 -2
  305. package/esm2015/api/sd-angular-core-api.js +1 -1
  306. package/esm2015/api/sd-angular-core-api.js.__ivy_ngcc_bak +5 -0
  307. package/esm2015/autocomplete/sd-angular-core-autocomplete.js +1 -1
  308. package/esm2015/autocomplete/sd-angular-core-autocomplete.js.__ivy_ngcc_bak +5 -0
  309. package/esm2015/badge/sd-angular-core-badge.js +1 -1
  310. package/esm2015/badge/sd-angular-core-badge.js.__ivy_ngcc_bak +5 -0
  311. package/esm2015/button/sd-angular-core-button.js +1 -1
  312. package/esm2015/button/sd-angular-core-button.js.__ivy_ngcc_bak +5 -0
  313. package/esm2015/button/src/lib/button.component.js +5 -2
  314. package/esm2015/cache/sd-angular-core-cache.js +1 -1
  315. package/esm2015/cache/sd-angular-core-cache.js.__ivy_ngcc_bak +5 -0
  316. package/esm2015/chart/sd-angular-core-chart.js +1 -1
  317. package/esm2015/chart/sd-angular-core-chart.js.__ivy_ngcc_bak +5 -0
  318. package/esm2015/checkbox/sd-angular-core-checkbox.js +1 -1
  319. package/esm2015/checkbox/sd-angular-core-checkbox.js.__ivy_ngcc_bak +6 -0
  320. package/esm2015/chip/sd-angular-core-chip.js +1 -1
  321. package/esm2015/chip/sd-angular-core-chip.js.__ivy_ngcc_bak +6 -0
  322. package/esm2015/comment/sd-angular-core-comment.js +1 -1
  323. package/esm2015/comment/sd-angular-core-comment.js.__ivy_ngcc_bak +5 -0
  324. package/esm2015/common/sd-angular-core-common.js +1 -1
  325. package/esm2015/common/sd-angular-core-common.js.__ivy_ngcc_bak +5 -0
  326. package/esm2015/confirm/sd-angular-core-confirm.js +1 -1
  327. package/esm2015/confirm/sd-angular-core-confirm.js.__ivy_ngcc_bak +5 -0
  328. package/esm2015/date-month/sd-angular-core-date-month.js +1 -1
  329. package/esm2015/date-month/sd-angular-core-date-month.js.__ivy_ngcc_bak +6 -0
  330. package/esm2015/date-range/sd-angular-core-date-range.js +1 -1
  331. package/esm2015/date-range/sd-angular-core-date-range.js.__ivy_ngcc_bak +5 -0
  332. package/esm2015/date-time/sd-angular-core-date-time.js +1 -1
  333. package/esm2015/date-time/sd-angular-core-date-time.js.__ivy_ngcc_bak +5 -0
  334. package/esm2015/db/sd-angular-core-db.js +1 -1
  335. package/esm2015/db/sd-angular-core-db.js.__ivy_ngcc_bak +5 -0
  336. package/esm2015/dynamic-report/sd-angular-core-dynamic-report.js +1 -1
  337. package/esm2015/dynamic-report/sd-angular-core-dynamic-report.js.__ivy_ngcc_bak +5 -0
  338. package/esm2015/editor/sd-angular-core-editor.js +1 -1
  339. package/esm2015/editor/sd-angular-core-editor.js.__ivy_ngcc_bak +5 -0
  340. package/esm2015/editor/src/lib/editor.component.js +8 -19
  341. package/esm2015/editor/src/lib/editor.model.js +2 -2
  342. package/esm2015/excel/sd-angular-core-excel.js +1 -1
  343. package/esm2015/excel/sd-angular-core-excel.js.__ivy_ngcc_bak +5 -0
  344. package/esm2015/export/sd-angular-core-export.js +1 -1
  345. package/esm2015/export/sd-angular-core-export.js.__ivy_ngcc_bak +5 -0
  346. package/esm2015/filter/sd-angular-core-filter.js +1 -1
  347. package/esm2015/filter/sd-angular-core-filter.js.__ivy_ngcc_bak +8 -0
  348. package/esm2015/form/sd-angular-core-form.js +1 -1
  349. package/esm2015/form/sd-angular-core-form.js.__ivy_ngcc_bak +5 -0
  350. package/esm2015/grid/sd-angular-core-grid.js +1 -1
  351. package/esm2015/grid/sd-angular-core-grid.js.__ivy_ngcc_bak +5 -0
  352. package/esm2015/grid-material/sd-angular-core-grid-material.js +1 -1
  353. package/esm2015/grid-material/sd-angular-core-grid-material.js.__ivy_ngcc_bak +47 -0
  354. package/esm2015/group/sd-angular-core-group.js +1 -1
  355. package/esm2015/group/sd-angular-core-group.js.__ivy_ngcc_bak +6 -0
  356. package/esm2015/header-title/sd-angular-core-header-title.js +1 -1
  357. package/esm2015/header-title/sd-angular-core-header-title.js.__ivy_ngcc_bak +6 -0
  358. package/esm2015/image-preview/sd-angular-core-image-preview.js +1 -1
  359. package/esm2015/image-preview/sd-angular-core-image-preview.js.__ivy_ngcc_bak +7 -0
  360. package/esm2015/input/sd-angular-core-input.js +1 -1
  361. package/esm2015/input/sd-angular-core-input.js.__ivy_ngcc_bak +6 -0
  362. package/esm2015/input-currency/sd-angular-core-input-currency.js +1 -1
  363. package/esm2015/input-currency/sd-angular-core-input-currency.js.__ivy_ngcc_bak +5 -0
  364. package/esm2015/input-dropdown/sd-angular-core-input-dropdown.js +1 -1
  365. package/esm2015/input-dropdown/sd-angular-core-input-dropdown.js.__ivy_ngcc_bak +5 -0
  366. package/esm2015/input-number/sd-angular-core-input-number.js +1 -1
  367. package/esm2015/input-number/sd-angular-core-input-number.js.__ivy_ngcc_bak +5 -0
  368. package/esm2015/input-upload-file/sd-angular-core-input-upload-file.js +1 -1
  369. package/esm2015/input-upload-file/sd-angular-core-input-upload-file.js.__ivy_ngcc_bak +5 -0
  370. package/esm2015/json-editor/sd-angular-core-json-editor.js +1 -1
  371. package/esm2015/json-editor/sd-angular-core-json-editor.js.__ivy_ngcc_bak +5 -0
  372. package/esm2015/konva/sd-angular-core-konva.js +1 -1
  373. package/esm2015/konva/sd-angular-core-konva.js.__ivy_ngcc_bak +5 -0
  374. package/esm2015/label/sd-angular-core-label.js +1 -1
  375. package/esm2015/label/sd-angular-core-label.js.__ivy_ngcc_bak +6 -0
  376. package/esm2015/loading/sd-angular-core-loading.js +1 -1
  377. package/esm2015/loading/sd-angular-core-loading.js.__ivy_ngcc_bak +5 -0
  378. package/esm2015/modal/sd-angular-core-modal.js +1 -1
  379. package/esm2015/modal/sd-angular-core-modal.js.__ivy_ngcc_bak +5 -0
  380. package/esm2015/modal-resizable/sd-angular-core-modal-resizable.js +1 -1
  381. package/esm2015/modal-resizable/sd-angular-core-modal-resizable.js.__ivy_ngcc_bak +5 -0
  382. package/esm2015/notify/sd-angular-core-notify.js +1 -1
  383. package/esm2015/notify/sd-angular-core-notify.js.__ivy_ngcc_bak +5 -0
  384. package/esm2015/popover/sd-angular-core-popover.js +1 -1
  385. package/esm2015/popover/sd-angular-core-popover.js.__ivy_ngcc_bak +5 -0
  386. package/esm2015/quick-action/sd-angular-core-quick-action.js +1 -1
  387. package/esm2015/quick-action/sd-angular-core-quick-action.js.__ivy_ngcc_bak +5 -0
  388. package/esm2015/radio/sd-angular-core-radio.js +1 -1
  389. package/esm2015/radio/sd-angular-core-radio.js.__ivy_ngcc_bak +5 -0
  390. package/esm2015/select/sd-angular-core-select.js +1 -1
  391. package/esm2015/select/sd-angular-core-select.js.__ivy_ngcc_bak +5 -0
  392. package/esm2015/select-badge/sd-angular-core-select-badge.js +1 -1
  393. package/esm2015/select-badge/sd-angular-core-select-badge.js.__ivy_ngcc_bak +5 -0
  394. package/esm2015/select-editor/sd-angular-core-select-editor.js +1 -1
  395. package/esm2015/select-editor/sd-angular-core-select-editor.js.__ivy_ngcc_bak +5 -0
  396. package/esm2015/service/sd-angular-core-service.js +1 -1
  397. package/esm2015/service/sd-angular-core-service.js.__ivy_ngcc_bak +5 -0
  398. package/esm2015/setting/sd-angular-core-setting.js +1 -1
  399. package/esm2015/setting/sd-angular-core-setting.js.__ivy_ngcc_bak +5 -0
  400. package/esm2015/side-drawer/sd-angular-core-side-drawer.js +1 -1
  401. package/esm2015/side-drawer/sd-angular-core-side-drawer.js.__ivy_ngcc_bak +5 -0
  402. package/esm2015/switch/sd-angular-core-switch.js +1 -1
  403. package/esm2015/switch/sd-angular-core-switch.js.__ivy_ngcc_bak +5 -0
  404. package/esm2015/tab-router/sd-angular-core-tab-router.js +1 -1
  405. package/esm2015/tab-router/sd-angular-core-tab-router.js.__ivy_ngcc_bak +7 -0
  406. package/esm2015/textarea/sd-angular-core-textarea.js +1 -1
  407. package/esm2015/textarea/sd-angular-core-textarea.js.__ivy_ngcc_bak +5 -0
  408. package/esm2015/time/sd-angular-core-time.js +1 -1
  409. package/esm2015/time/sd-angular-core-time.js.__ivy_ngcc_bak +6 -0
  410. package/esm2015/timeline/sd-angular-core-timeline.js +1 -1
  411. package/esm2015/timeline/sd-angular-core-timeline.js.__ivy_ngcc_bak +6 -0
  412. package/esm2015/translate/sd-angular-core-translate.js +1 -1
  413. package/esm2015/translate/sd-angular-core-translate.js.__ivy_ngcc_bak +5 -0
  414. package/esm2015/upload-excel/sd-angular-core-upload-excel.js +1 -1
  415. package/esm2015/upload-excel/sd-angular-core-upload-excel.js.__ivy_ngcc_bak +7 -0
  416. package/esm2015/upload-file/sd-angular-core-upload-file.js +1 -1
  417. package/esm2015/upload-file/sd-angular-core-upload-file.js.__ivy_ngcc_bak +5 -0
  418. package/esm2015/utility/sd-angular-core-utility.js +1 -1
  419. package/esm2015/utility/sd-angular-core-utility.js.__ivy_ngcc_bak +5 -0
  420. package/esm2015/view/sd-angular-core-view.js +1 -1
  421. package/esm2015/view/sd-angular-core-view.js.__ivy_ngcc_bak +5 -0
  422. package/excel/package.json +12 -1
  423. package/excel/sd-angular-core-excel.d.ts +2 -0
  424. package/excel/sd-angular-core-excel.d.ts.__ivy_ngcc_bak +4 -0
  425. package/excel/sd-angular-core-excel.d.ts.map +1 -0
  426. package/export/package.json +12 -1
  427. package/export/sd-angular-core-export.d.ts +2 -0
  428. package/export/sd-angular-core-export.d.ts.__ivy_ngcc_bak +4 -0
  429. package/export/sd-angular-core-export.d.ts.map +1 -0
  430. package/fesm2015/sd-angular-core-api.js +2 -1
  431. package/fesm2015/sd-angular-core-api.js.__ivy_ngcc_bak +496 -0
  432. package/fesm2015/sd-angular-core-api.js.map +1 -1
  433. package/fesm2015/sd-angular-core-api.js.map.__ivy_ngcc_bak +1 -0
  434. package/fesm2015/sd-angular-core-autocomplete.js +2 -1
  435. package/fesm2015/sd-angular-core-autocomplete.js.__ivy_ngcc_bak +427 -0
  436. package/fesm2015/sd-angular-core-autocomplete.js.map +1 -1
  437. package/fesm2015/sd-angular-core-autocomplete.js.map.__ivy_ngcc_bak +1 -0
  438. package/fesm2015/sd-angular-core-badge.js +2 -1
  439. package/fesm2015/sd-angular-core-badge.js.__ivy_ngcc_bak +70 -0
  440. package/fesm2015/sd-angular-core-badge.js.map +1 -1
  441. package/fesm2015/sd-angular-core-badge.js.map.__ivy_ngcc_bak +1 -0
  442. package/fesm2015/sd-angular-core-button.js +6 -2
  443. package/fesm2015/sd-angular-core-button.js.__ivy_ngcc_bak +118 -0
  444. package/fesm2015/sd-angular-core-button.js.map +1 -1
  445. package/fesm2015/sd-angular-core-button.js.map.__ivy_ngcc_bak +1 -0
  446. package/fesm2015/sd-angular-core-cache.js +2 -1
  447. package/fesm2015/sd-angular-core-cache.js.__ivy_ngcc_bak +259 -0
  448. package/fesm2015/sd-angular-core-cache.js.map +1 -1
  449. package/fesm2015/sd-angular-core-cache.js.map.__ivy_ngcc_bak +1 -0
  450. package/fesm2015/sd-angular-core-chart.js +2 -1
  451. package/fesm2015/sd-angular-core-chart.js.__ivy_ngcc_bak +727 -0
  452. package/fesm2015/sd-angular-core-chart.js.map +1 -1
  453. package/fesm2015/sd-angular-core-chart.js.map.__ivy_ngcc_bak +1 -0
  454. package/fesm2015/sd-angular-core-checkbox.js +2 -1
  455. package/fesm2015/sd-angular-core-checkbox.js.__ivy_ngcc_bak +120 -0
  456. package/fesm2015/sd-angular-core-checkbox.js.map +1 -1
  457. package/fesm2015/sd-angular-core-checkbox.js.map.__ivy_ngcc_bak +1 -0
  458. package/fesm2015/sd-angular-core-chip.js +2 -1
  459. package/fesm2015/sd-angular-core-chip.js.__ivy_ngcc_bak +632 -0
  460. package/fesm2015/sd-angular-core-chip.js.map +1 -1
  461. package/fesm2015/sd-angular-core-chip.js.map.__ivy_ngcc_bak +1 -0
  462. package/fesm2015/sd-angular-core-comment.js +2 -1
  463. package/fesm2015/sd-angular-core-comment.js.__ivy_ngcc_bak +118 -0
  464. package/fesm2015/sd-angular-core-comment.js.map +1 -1
  465. package/fesm2015/sd-angular-core-comment.js.map.__ivy_ngcc_bak +1 -0
  466. package/fesm2015/sd-angular-core-common.js +2 -1
  467. package/fesm2015/sd-angular-core-common.js.__ivy_ngcc_bak +562 -0
  468. package/fesm2015/sd-angular-core-common.js.map +1 -1
  469. package/fesm2015/sd-angular-core-common.js.map.__ivy_ngcc_bak +1 -0
  470. package/fesm2015/sd-angular-core-confirm.js +2 -1
  471. package/fesm2015/sd-angular-core-confirm.js.__ivy_ngcc_bak +154 -0
  472. package/fesm2015/sd-angular-core-confirm.js.map +1 -1
  473. package/fesm2015/sd-angular-core-confirm.js.map.__ivy_ngcc_bak +1 -0
  474. package/fesm2015/sd-angular-core-date-month.js +2 -1
  475. package/fesm2015/sd-angular-core-date-month.js.__ivy_ngcc_bak +289 -0
  476. package/fesm2015/sd-angular-core-date-month.js.map +1 -1
  477. package/fesm2015/sd-angular-core-date-month.js.map.__ivy_ngcc_bak +1 -0
  478. package/fesm2015/sd-angular-core-date-range.js +2 -1
  479. package/fesm2015/sd-angular-core-date-range.js.__ivy_ngcc_bak +297 -0
  480. package/fesm2015/sd-angular-core-date-range.js.map +1 -1
  481. package/fesm2015/sd-angular-core-date-range.js.map.__ivy_ngcc_bak +1 -0
  482. package/fesm2015/sd-angular-core-date-time.js +2 -1
  483. package/fesm2015/sd-angular-core-date-time.js.__ivy_ngcc_bak +367 -0
  484. package/fesm2015/sd-angular-core-date-time.js.map +1 -1
  485. package/fesm2015/sd-angular-core-date-time.js.map.__ivy_ngcc_bak +1 -0
  486. package/fesm2015/sd-angular-core-db.js +2 -1
  487. package/fesm2015/sd-angular-core-db.js.__ivy_ngcc_bak +91 -0
  488. package/fesm2015/sd-angular-core-db.js.map +1 -1
  489. package/fesm2015/sd-angular-core-db.js.map.__ivy_ngcc_bak +1 -0
  490. package/fesm2015/sd-angular-core-dynamic-report.js +2 -1
  491. package/fesm2015/sd-angular-core-dynamic-report.js.__ivy_ngcc_bak +82 -0
  492. package/fesm2015/sd-angular-core-dynamic-report.js.map +1 -1
  493. package/fesm2015/sd-angular-core-dynamic-report.js.map.__ivy_ngcc_bak +1 -0
  494. package/fesm2015/sd-angular-core-editor.js +10 -19
  495. package/fesm2015/sd-angular-core-editor.js.__ivy_ngcc_bak +576 -0
  496. package/fesm2015/sd-angular-core-editor.js.map +1 -1
  497. package/fesm2015/sd-angular-core-editor.js.map.__ivy_ngcc_bak +1 -0
  498. package/fesm2015/sd-angular-core-excel.js +2 -1
  499. package/fesm2015/sd-angular-core-excel.js.__ivy_ngcc_bak +100 -0
  500. package/fesm2015/sd-angular-core-excel.js.map +1 -1
  501. package/fesm2015/sd-angular-core-excel.js.map.__ivy_ngcc_bak +1 -0
  502. package/fesm2015/sd-angular-core-export.js +2 -1
  503. package/fesm2015/sd-angular-core-export.js.__ivy_ngcc_bak +272 -0
  504. package/fesm2015/sd-angular-core-export.js.map +1 -1
  505. package/fesm2015/sd-angular-core-export.js.map.__ivy_ngcc_bak +1 -0
  506. package/fesm2015/sd-angular-core-filter.js +2 -1
  507. package/fesm2015/sd-angular-core-filter.js.__ivy_ngcc_bak +323 -0
  508. package/fesm2015/sd-angular-core-filter.js.map +1 -1
  509. package/fesm2015/sd-angular-core-filter.js.map.__ivy_ngcc_bak +1 -0
  510. package/fesm2015/sd-angular-core-form.js +2 -1
  511. package/fesm2015/sd-angular-core-form.js.__ivy_ngcc_bak +104 -0
  512. package/fesm2015/sd-angular-core-form.js.map +1 -1
  513. package/fesm2015/sd-angular-core-form.js.map.__ivy_ngcc_bak +1 -0
  514. package/fesm2015/sd-angular-core-grid-material.js +2 -1
  515. package/fesm2015/sd-angular-core-grid-material.js.__ivy_ngcc_bak +3740 -0
  516. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  517. package/fesm2015/sd-angular-core-grid-material.js.map.__ivy_ngcc_bak +1 -0
  518. package/fesm2015/sd-angular-core-grid.js +2 -1
  519. package/fesm2015/sd-angular-core-grid.js.__ivy_ngcc_bak +3935 -0
  520. package/fesm2015/sd-angular-core-grid.js.map +1 -1
  521. package/fesm2015/sd-angular-core-grid.js.map.__ivy_ngcc_bak +1 -0
  522. package/fesm2015/sd-angular-core-group.js +2 -1
  523. package/fesm2015/sd-angular-core-group.js.__ivy_ngcc_bak +74 -0
  524. package/fesm2015/sd-angular-core-group.js.map +1 -1
  525. package/fesm2015/sd-angular-core-group.js.map.__ivy_ngcc_bak +1 -0
  526. package/fesm2015/sd-angular-core-header-title.js +2 -1
  527. package/fesm2015/sd-angular-core-header-title.js.__ivy_ngcc_bak +45 -0
  528. package/fesm2015/sd-angular-core-header-title.js.map +1 -1
  529. package/fesm2015/sd-angular-core-header-title.js.map.__ivy_ngcc_bak +1 -0
  530. package/fesm2015/sd-angular-core-image-preview.js +2 -1
  531. package/fesm2015/sd-angular-core-image-preview.js.__ivy_ngcc_bak +107 -0
  532. package/fesm2015/sd-angular-core-image-preview.js.map +1 -1
  533. package/fesm2015/sd-angular-core-image-preview.js.map.__ivy_ngcc_bak +1 -0
  534. package/fesm2015/sd-angular-core-input-currency.js +2 -1
  535. package/fesm2015/sd-angular-core-input-currency.js.__ivy_ngcc_bak +330 -0
  536. package/fesm2015/sd-angular-core-input-currency.js.map +1 -1
  537. package/fesm2015/sd-angular-core-input-currency.js.map.__ivy_ngcc_bak +1 -0
  538. package/fesm2015/sd-angular-core-input-dropdown.js +2 -1
  539. package/fesm2015/sd-angular-core-input-dropdown.js.__ivy_ngcc_bak +268 -0
  540. package/fesm2015/sd-angular-core-input-dropdown.js.map +1 -1
  541. package/fesm2015/sd-angular-core-input-dropdown.js.map.__ivy_ngcc_bak +1 -0
  542. package/fesm2015/sd-angular-core-input-number.js +2 -1
  543. package/fesm2015/sd-angular-core-input-number.js.__ivy_ngcc_bak +415 -0
  544. package/fesm2015/sd-angular-core-input-number.js.map +1 -1
  545. package/fesm2015/sd-angular-core-input-number.js.map.__ivy_ngcc_bak +1 -0
  546. package/fesm2015/sd-angular-core-input-upload-file.js +2 -1
  547. package/fesm2015/sd-angular-core-input-upload-file.js.__ivy_ngcc_bak +274 -0
  548. package/fesm2015/sd-angular-core-input-upload-file.js.map +1 -1
  549. package/fesm2015/sd-angular-core-input-upload-file.js.map.__ivy_ngcc_bak +1 -0
  550. package/fesm2015/sd-angular-core-input.js +2 -1
  551. package/fesm2015/sd-angular-core-input.js.__ivy_ngcc_bak +398 -0
  552. package/fesm2015/sd-angular-core-input.js.map +1 -1
  553. package/fesm2015/sd-angular-core-input.js.map.__ivy_ngcc_bak +1 -0
  554. package/fesm2015/sd-angular-core-json-editor.js +2 -1
  555. package/fesm2015/sd-angular-core-json-editor.js.__ivy_ngcc_bak +180 -0
  556. package/fesm2015/sd-angular-core-json-editor.js.map +1 -1
  557. package/fesm2015/sd-angular-core-json-editor.js.map.__ivy_ngcc_bak +1 -0
  558. package/fesm2015/sd-angular-core-konva.js +2 -1
  559. package/fesm2015/sd-angular-core-konva.js.__ivy_ngcc_bak +237 -0
  560. package/fesm2015/sd-angular-core-konva.js.map +1 -1
  561. package/fesm2015/sd-angular-core-konva.js.map.__ivy_ngcc_bak +1 -0
  562. package/fesm2015/sd-angular-core-label.js +2 -1
  563. package/fesm2015/sd-angular-core-label.js.__ivy_ngcc_bak +49 -0
  564. package/fesm2015/sd-angular-core-label.js.map +1 -1
  565. package/fesm2015/sd-angular-core-label.js.map.__ivy_ngcc_bak +1 -0
  566. package/fesm2015/sd-angular-core-loading.js +2 -1
  567. package/fesm2015/sd-angular-core-loading.js.__ivy_ngcc_bak +83 -0
  568. package/fesm2015/sd-angular-core-loading.js.map +1 -1
  569. package/fesm2015/sd-angular-core-loading.js.map.__ivy_ngcc_bak +1 -0
  570. package/fesm2015/sd-angular-core-modal-resizable.js +2 -1
  571. package/fesm2015/sd-angular-core-modal-resizable.js.__ivy_ngcc_bak +161 -0
  572. package/fesm2015/sd-angular-core-modal-resizable.js.map +1 -1
  573. package/fesm2015/sd-angular-core-modal-resizable.js.map.__ivy_ngcc_bak +1 -0
  574. package/fesm2015/sd-angular-core-modal.js +2 -1
  575. package/fesm2015/sd-angular-core-modal.js.__ivy_ngcc_bak +284 -0
  576. package/fesm2015/sd-angular-core-modal.js.map +1 -1
  577. package/fesm2015/sd-angular-core-modal.js.map.__ivy_ngcc_bak +1 -0
  578. package/fesm2015/sd-angular-core-notify.js +2 -1
  579. package/fesm2015/sd-angular-core-notify.js.__ivy_ngcc_bak +402 -0
  580. package/fesm2015/sd-angular-core-notify.js.map +1 -1
  581. package/fesm2015/sd-angular-core-notify.js.map.__ivy_ngcc_bak +1 -0
  582. package/fesm2015/sd-angular-core-popover.js +2 -1
  583. package/fesm2015/sd-angular-core-popover.js.__ivy_ngcc_bak +415 -0
  584. package/fesm2015/sd-angular-core-popover.js.map +1 -1
  585. package/fesm2015/sd-angular-core-popover.js.map.__ivy_ngcc_bak +1 -0
  586. package/fesm2015/sd-angular-core-quick-action.js +2 -1
  587. package/fesm2015/sd-angular-core-quick-action.js.__ivy_ngcc_bak +53 -0
  588. package/fesm2015/sd-angular-core-quick-action.js.map +1 -1
  589. package/fesm2015/sd-angular-core-quick-action.js.map.__ivy_ngcc_bak +1 -0
  590. package/fesm2015/sd-angular-core-radio.js +2 -1
  591. package/fesm2015/sd-angular-core-radio.js.__ivy_ngcc_bak +188 -0
  592. package/fesm2015/sd-angular-core-radio.js.map +1 -1
  593. package/fesm2015/sd-angular-core-radio.js.map.__ivy_ngcc_bak +1 -0
  594. package/fesm2015/sd-angular-core-select-badge.js +2 -1
  595. package/fesm2015/sd-angular-core-select-badge.js.__ivy_ngcc_bak +156 -0
  596. package/fesm2015/sd-angular-core-select-badge.js.map +1 -1
  597. package/fesm2015/sd-angular-core-select-badge.js.map.__ivy_ngcc_bak +1 -0
  598. package/fesm2015/sd-angular-core-select-editor.js +2 -1
  599. package/fesm2015/sd-angular-core-select-editor.js.__ivy_ngcc_bak +110 -0
  600. package/fesm2015/sd-angular-core-select-editor.js.map +1 -1
  601. package/fesm2015/sd-angular-core-select-editor.js.map.__ivy_ngcc_bak +1 -0
  602. package/fesm2015/sd-angular-core-select.js +2 -1
  603. package/fesm2015/sd-angular-core-select.js.__ivy_ngcc_bak +487 -0
  604. package/fesm2015/sd-angular-core-select.js.map +1 -1
  605. package/fesm2015/sd-angular-core-select.js.map.__ivy_ngcc_bak +1 -0
  606. package/fesm2015/sd-angular-core-service.js +2 -1
  607. package/fesm2015/sd-angular-core-service.js.__ivy_ngcc_bak +36 -0
  608. package/fesm2015/sd-angular-core-service.js.map +1 -1
  609. package/fesm2015/sd-angular-core-service.js.map.__ivy_ngcc_bak +1 -0
  610. package/fesm2015/sd-angular-core-setting.js +2 -1
  611. package/fesm2015/sd-angular-core-setting.js.__ivy_ngcc_bak +290 -0
  612. package/fesm2015/sd-angular-core-setting.js.map +1 -1
  613. package/fesm2015/sd-angular-core-setting.js.map.__ivy_ngcc_bak +1 -0
  614. package/fesm2015/sd-angular-core-side-drawer.js +2 -1
  615. package/fesm2015/sd-angular-core-side-drawer.js.__ivy_ngcc_bak +115 -0
  616. package/fesm2015/sd-angular-core-side-drawer.js.map +1 -1
  617. package/fesm2015/sd-angular-core-side-drawer.js.map.__ivy_ngcc_bak +1 -0
  618. package/fesm2015/sd-angular-core-switch.js +2 -1
  619. package/fesm2015/sd-angular-core-switch.js.__ivy_ngcc_bak +116 -0
  620. package/fesm2015/sd-angular-core-switch.js.map +1 -1
  621. package/fesm2015/sd-angular-core-switch.js.map.__ivy_ngcc_bak +1 -0
  622. package/fesm2015/sd-angular-core-tab-router.js +2 -1
  623. package/fesm2015/sd-angular-core-tab-router.js.__ivy_ngcc_bak +531 -0
  624. package/fesm2015/sd-angular-core-tab-router.js.map +1 -1
  625. package/fesm2015/sd-angular-core-tab-router.js.map.__ivy_ngcc_bak +1 -0
  626. package/fesm2015/sd-angular-core-textarea.js +2 -1
  627. package/fesm2015/sd-angular-core-textarea.js.__ivy_ngcc_bak +266 -0
  628. package/fesm2015/sd-angular-core-textarea.js.map +1 -1
  629. package/fesm2015/sd-angular-core-textarea.js.map.__ivy_ngcc_bak +1 -0
  630. package/fesm2015/sd-angular-core-time.js +2 -1
  631. package/fesm2015/sd-angular-core-time.js.__ivy_ngcc_bak +143 -0
  632. package/fesm2015/sd-angular-core-time.js.map +1 -1
  633. package/fesm2015/sd-angular-core-time.js.map.__ivy_ngcc_bak +1 -0
  634. package/fesm2015/sd-angular-core-timeline.js +2 -1
  635. package/fesm2015/sd-angular-core-timeline.js.__ivy_ngcc_bak +87 -0
  636. package/fesm2015/sd-angular-core-timeline.js.map +1 -1
  637. package/fesm2015/sd-angular-core-timeline.js.map.__ivy_ngcc_bak +1 -0
  638. package/fesm2015/sd-angular-core-translate.js +2 -1
  639. package/fesm2015/sd-angular-core-translate.js.__ivy_ngcc_bak +101 -0
  640. package/fesm2015/sd-angular-core-translate.js.map +1 -1
  641. package/fesm2015/sd-angular-core-translate.js.map.__ivy_ngcc_bak +1 -0
  642. package/fesm2015/sd-angular-core-upload-excel.js +2 -1
  643. package/fesm2015/sd-angular-core-upload-excel.js.__ivy_ngcc_bak +638 -0
  644. package/fesm2015/sd-angular-core-upload-excel.js.map +1 -1
  645. package/fesm2015/sd-angular-core-upload-excel.js.map.__ivy_ngcc_bak +1 -0
  646. package/fesm2015/sd-angular-core-upload-file.js +2 -1
  647. package/fesm2015/sd-angular-core-upload-file.js.__ivy_ngcc_bak +462 -0
  648. package/fesm2015/sd-angular-core-upload-file.js.map +1 -1
  649. package/fesm2015/sd-angular-core-upload-file.js.map.__ivy_ngcc_bak +1 -0
  650. package/fesm2015/sd-angular-core-utility.js +2 -1
  651. package/fesm2015/sd-angular-core-utility.js.__ivy_ngcc_bak +364 -0
  652. package/fesm2015/sd-angular-core-utility.js.map +1 -1
  653. package/fesm2015/sd-angular-core-utility.js.map.__ivy_ngcc_bak +1 -0
  654. package/fesm2015/sd-angular-core-view.js +2 -1
  655. package/fesm2015/sd-angular-core-view.js.__ivy_ngcc_bak +23 -0
  656. package/fesm2015/sd-angular-core-view.js.map +1 -1
  657. package/fesm2015/sd-angular-core-view.js.map.__ivy_ngcc_bak +1 -0
  658. package/filter/package.json +12 -1
  659. package/filter/sd-angular-core-filter.d.ts +2 -0
  660. package/filter/sd-angular-core-filter.d.ts.__ivy_ngcc_bak +7 -0
  661. package/filter/sd-angular-core-filter.d.ts.map +1 -0
  662. package/form/package.json +12 -1
  663. package/form/sd-angular-core-form.d.ts +2 -0
  664. package/form/sd-angular-core-form.d.ts.__ivy_ngcc_bak +4 -0
  665. package/form/sd-angular-core-form.d.ts.map +1 -0
  666. package/grid/package.json +12 -1
  667. package/grid/sd-angular-core-grid.d.ts +2 -0
  668. package/grid/sd-angular-core-grid.d.ts.__ivy_ngcc_bak +4 -0
  669. package/grid/sd-angular-core-grid.d.ts.map +1 -0
  670. package/grid-material/package.json +12 -1
  671. package/grid-material/sd-angular-core-grid-material.d.ts +2 -0
  672. package/grid-material/sd-angular-core-grid-material.d.ts.__ivy_ngcc_bak +46 -0
  673. package/grid-material/sd-angular-core-grid-material.d.ts.map +1 -0
  674. package/group/package.json +12 -1
  675. package/group/sd-angular-core-group.d.ts +2 -0
  676. package/group/sd-angular-core-group.d.ts.__ivy_ngcc_bak +5 -0
  677. package/group/sd-angular-core-group.d.ts.map +1 -0
  678. package/header-title/package.json +12 -1
  679. package/header-title/sd-angular-core-header-title.d.ts +2 -0
  680. package/header-title/sd-angular-core-header-title.d.ts.__ivy_ngcc_bak +5 -0
  681. package/header-title/sd-angular-core-header-title.d.ts.map +1 -0
  682. package/image-preview/package.json +12 -1
  683. package/image-preview/sd-angular-core-image-preview.d.ts +2 -0
  684. package/image-preview/sd-angular-core-image-preview.d.ts.__ivy_ngcc_bak +6 -0
  685. package/image-preview/sd-angular-core-image-preview.d.ts.map +1 -0
  686. package/input/package.json +12 -1
  687. package/input/sd-angular-core-input.d.ts +2 -0
  688. package/input/sd-angular-core-input.d.ts.__ivy_ngcc_bak +5 -0
  689. package/input/sd-angular-core-input.d.ts.map +1 -0
  690. package/input-currency/package.json +12 -1
  691. package/input-currency/sd-angular-core-input-currency.d.ts +2 -0
  692. package/input-currency/sd-angular-core-input-currency.d.ts.__ivy_ngcc_bak +4 -0
  693. package/input-currency/sd-angular-core-input-currency.d.ts.map +1 -0
  694. package/input-dropdown/package.json +12 -1
  695. package/input-dropdown/sd-angular-core-input-dropdown.d.ts +2 -0
  696. package/input-dropdown/sd-angular-core-input-dropdown.d.ts.__ivy_ngcc_bak +4 -0
  697. package/input-dropdown/sd-angular-core-input-dropdown.d.ts.map +1 -0
  698. package/input-number/package.json +12 -1
  699. package/input-number/sd-angular-core-input-number.d.ts +2 -0
  700. package/input-number/sd-angular-core-input-number.d.ts.__ivy_ngcc_bak +4 -0
  701. package/input-number/sd-angular-core-input-number.d.ts.map +1 -0
  702. package/input-upload-file/package.json +12 -1
  703. package/input-upload-file/sd-angular-core-input-upload-file.d.ts +2 -0
  704. package/input-upload-file/sd-angular-core-input-upload-file.d.ts.__ivy_ngcc_bak +4 -0
  705. package/input-upload-file/sd-angular-core-input-upload-file.d.ts.map +1 -0
  706. package/json-editor/package.json +12 -1
  707. package/json-editor/sd-angular-core-json-editor.d.ts +2 -0
  708. package/json-editor/sd-angular-core-json-editor.d.ts.__ivy_ngcc_bak +4 -0
  709. package/json-editor/sd-angular-core-json-editor.d.ts.map +1 -0
  710. package/konva/package.json +12 -1
  711. package/konva/sd-angular-core-konva.d.ts +2 -0
  712. package/konva/sd-angular-core-konva.d.ts.__ivy_ngcc_bak +4 -0
  713. package/konva/sd-angular-core-konva.d.ts.map +1 -0
  714. package/label/package.json +12 -1
  715. package/label/sd-angular-core-label.d.ts +2 -0
  716. package/label/sd-angular-core-label.d.ts.__ivy_ngcc_bak +5 -0
  717. package/label/sd-angular-core-label.d.ts.map +1 -0
  718. package/loading/package.json +12 -1
  719. package/loading/sd-angular-core-loading.d.ts +2 -0
  720. package/loading/sd-angular-core-loading.d.ts.__ivy_ngcc_bak +4 -0
  721. package/loading/sd-angular-core-loading.d.ts.map +1 -0
  722. package/modal/package.json +12 -1
  723. package/modal/sd-angular-core-modal.d.ts +2 -0
  724. package/modal/sd-angular-core-modal.d.ts.__ivy_ngcc_bak +4 -0
  725. package/modal/sd-angular-core-modal.d.ts.map +1 -0
  726. package/modal-resizable/package.json +12 -1
  727. package/modal-resizable/sd-angular-core-modal-resizable.d.ts +2 -0
  728. package/modal-resizable/sd-angular-core-modal-resizable.d.ts.__ivy_ngcc_bak +4 -0
  729. package/modal-resizable/sd-angular-core-modal-resizable.d.ts.map +1 -0
  730. package/notify/package.json +12 -1
  731. package/notify/sd-angular-core-notify.d.ts +2 -0
  732. package/notify/sd-angular-core-notify.d.ts.__ivy_ngcc_bak +4 -0
  733. package/notify/sd-angular-core-notify.d.ts.map +1 -0
  734. package/package.json +1 -1
  735. package/popover/package.json +12 -1
  736. package/popover/sd-angular-core-popover.d.ts +2 -0
  737. package/popover/sd-angular-core-popover.d.ts.__ivy_ngcc_bak +4 -0
  738. package/popover/sd-angular-core-popover.d.ts.map +1 -0
  739. package/quick-action/package.json +12 -1
  740. package/quick-action/sd-angular-core-quick-action.d.ts +2 -0
  741. package/quick-action/sd-angular-core-quick-action.d.ts.__ivy_ngcc_bak +4 -0
  742. package/quick-action/sd-angular-core-quick-action.d.ts.map +1 -0
  743. package/radio/package.json +12 -1
  744. package/radio/sd-angular-core-radio.d.ts +2 -0
  745. package/radio/sd-angular-core-radio.d.ts.__ivy_ngcc_bak +4 -0
  746. package/radio/sd-angular-core-radio.d.ts.map +1 -0
  747. package/sd-angular-core-1.2.97.tgz +0 -0
  748. package/select/package.json +12 -1
  749. package/select/sd-angular-core-select.d.ts +2 -0
  750. package/select/sd-angular-core-select.d.ts.__ivy_ngcc_bak +4 -0
  751. package/select/sd-angular-core-select.d.ts.map +1 -0
  752. package/select-badge/package.json +12 -1
  753. package/select-badge/sd-angular-core-select-badge.d.ts +2 -0
  754. package/select-badge/sd-angular-core-select-badge.d.ts.__ivy_ngcc_bak +4 -0
  755. package/select-badge/sd-angular-core-select-badge.d.ts.map +1 -0
  756. package/select-editor/package.json +12 -1
  757. package/select-editor/sd-angular-core-select-editor.d.ts +2 -0
  758. package/select-editor/sd-angular-core-select-editor.d.ts.__ivy_ngcc_bak +4 -0
  759. package/select-editor/sd-angular-core-select-editor.d.ts.map +1 -0
  760. package/service/package.json +12 -1
  761. package/service/sd-angular-core-service.d.ts +2 -0
  762. package/service/sd-angular-core-service.d.ts.__ivy_ngcc_bak +4 -0
  763. package/service/sd-angular-core-service.d.ts.map +1 -0
  764. package/setting/package.json +12 -1
  765. package/setting/sd-angular-core-setting.d.ts +2 -0
  766. package/setting/sd-angular-core-setting.d.ts.__ivy_ngcc_bak +4 -0
  767. package/setting/sd-angular-core-setting.d.ts.map +1 -0
  768. package/side-drawer/package.json +12 -1
  769. package/side-drawer/sd-angular-core-side-drawer.d.ts +2 -0
  770. package/side-drawer/sd-angular-core-side-drawer.d.ts.__ivy_ngcc_bak +4 -0
  771. package/side-drawer/sd-angular-core-side-drawer.d.ts.map +1 -0
  772. package/switch/package.json +12 -1
  773. package/switch/sd-angular-core-switch.d.ts +2 -0
  774. package/switch/sd-angular-core-switch.d.ts.__ivy_ngcc_bak +4 -0
  775. package/switch/sd-angular-core-switch.d.ts.map +1 -0
  776. package/tab-router/package.json +12 -1
  777. package/tab-router/sd-angular-core-tab-router.d.ts +2 -0
  778. package/tab-router/sd-angular-core-tab-router.d.ts.__ivy_ngcc_bak +6 -0
  779. package/tab-router/sd-angular-core-tab-router.d.ts.map +1 -0
  780. package/textarea/package.json +12 -1
  781. package/textarea/sd-angular-core-textarea.d.ts +2 -0
  782. package/textarea/sd-angular-core-textarea.d.ts.__ivy_ngcc_bak +4 -0
  783. package/textarea/sd-angular-core-textarea.d.ts.map +1 -0
  784. package/time/package.json +12 -1
  785. package/time/sd-angular-core-time.d.ts +2 -0
  786. package/time/sd-angular-core-time.d.ts.__ivy_ngcc_bak +5 -0
  787. package/time/sd-angular-core-time.d.ts.map +1 -0
  788. package/timeline/package.json +12 -1
  789. package/timeline/sd-angular-core-timeline.d.ts +2 -0
  790. package/timeline/sd-angular-core-timeline.d.ts.__ivy_ngcc_bak +5 -0
  791. package/timeline/sd-angular-core-timeline.d.ts.map +1 -0
  792. package/translate/package.json +12 -1
  793. package/translate/sd-angular-core-translate.d.ts +2 -0
  794. package/translate/sd-angular-core-translate.d.ts.__ivy_ngcc_bak +4 -0
  795. package/translate/sd-angular-core-translate.d.ts.map +1 -0
  796. package/upload-excel/package.json +12 -1
  797. package/upload-excel/sd-angular-core-upload-excel.d.ts +2 -0
  798. package/upload-excel/sd-angular-core-upload-excel.d.ts.__ivy_ngcc_bak +6 -0
  799. package/upload-excel/sd-angular-core-upload-excel.d.ts.map +1 -0
  800. package/upload-file/package.json +12 -1
  801. package/upload-file/sd-angular-core-upload-file.d.ts +2 -0
  802. package/upload-file/sd-angular-core-upload-file.d.ts.__ivy_ngcc_bak +4 -0
  803. package/upload-file/sd-angular-core-upload-file.d.ts.map +1 -0
  804. package/utility/package.json +12 -1
  805. package/utility/sd-angular-core-utility.d.ts +2 -0
  806. package/utility/sd-angular-core-utility.d.ts.__ivy_ngcc_bak +4 -0
  807. package/utility/sd-angular-core-utility.d.ts.map +1 -0
  808. package/view/package.json +12 -1
  809. package/view/sd-angular-core-view.d.ts +2 -0
  810. package/view/sd-angular-core-view.d.ts.__ivy_ngcc_bak +4 -0
  811. package/view/sd-angular-core-view.d.ts.map +1 -0
  812. package/sd-angular-core-1.2.94.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-grid.js","sources":["../../../../projects/sd-core/grid/src/lib/grid.model.ts","../../../../projects/sd-core/grid/src/lib/pipes/editor-handler.pipe.ts","../../../../projects/sd-core/grid/src/lib/models/grid-configuration.model.ts","../../../../projects/sd-core/grid/src/lib/directives/cell-def.directive.ts","../../../../projects/sd-core/grid/src/lib/directives/cell-footer-def.directive.ts","../../../../projects/sd-core/grid/src/lib/directives/cell-editor-def.directive.ts","../../../../projects/sd-core/grid/src/lib/models/handler-local.ts","../../../../projects/sd-core/grid/src/lib/models/handler-dotnet.ts","../../../../projects/sd-core/grid/src/lib/grid.component.ts","../../../../projects/sd-core/grid/src/lib/pipes/dynamic-items.pipe.ts","../../../../projects/sd-core/grid/src/lib/components/grid-config/grid-config.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-desktop-column-edit/grid-desktop-column-edit.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-desktop-column-view/grid-desktop-column-view.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-desktop-inline-filter/grid-desktop-inline-filter.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-mobile-item-view/grid-mobile-item-view.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-popup-editor/grid-popup-editor.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-popup-filter/grid-popup-filter.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-sub-information/grid-sub-information.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-desktop-column-children-view/grid-desktop-column-children-view.component.ts","../../../../projects/sd-core/grid/src/lib/pipes/cell-desktop-class-name.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/cell-mobile-class-name.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/column-command-filter.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/column-title.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/command-disabled.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/command-hidden.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/editor-dynamic-item.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/editor-sub-information-handler.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/editor-validate.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/filter-mobile.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/mobile-command-filter.ts","../../../../projects/sd-core/grid/src/lib/pipes/mobile-view-html-template.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/value-transform.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/editor-popup-visible.pipe.ts","../../../../projects/sd-core/grid/src/lib/directives/sub-information-header-def.directive.ts","../../../../projects/sd-core/grid/src/lib/components/grid-import-excel/grid-import-excel.component.ts","../../../../projects/sd-core/grid/src/lib/grid.module.ts","../../../../projects/sd-core/grid/src/lib/components/grid-popup-filter/grid-popup-filter.model.ts","../../../../projects/sd-core/grid/sd-angular-core-grid.ts"],"sourcesContent":["import { IHandlerServer } from './models/handler';\r\nimport { Observable } from 'rxjs';\r\nimport { SdGridFilterInfo } from './models/filter-info.model';\r\n\r\nexport declare type SdGridOption =\r\n GridLocalOption |\r\n GridDotnetOption |\r\n GridCustomOption;\r\n\r\nexport declare type SdGridCommand = GridCommandNoChildren | GridCommandWithChildren;\r\n\r\nexport declare type SdGridColumn =\r\n GridColumnText |\r\n GridColumnColor |\r\n GridColumnNumber |\r\n GridColumnBool |\r\n GridColumnDate |\r\n GridColumnDateTime |\r\n GridColumnTime |\r\n GridColumnValues |\r\n GridColumnRadio |\r\n GridColumnImage |\r\n GridColumnChildren;\r\n\r\nexport declare type SdGridExternalFilter =\r\n GridExternalFilterText |\r\n GridExternalFilterDate |\r\n GridExternalFilterDateRange |\r\n GridExternalFilterDateRangeFull |\r\n GridExternalFilterNumber |\r\n GridExternalFilterNumberRange |\r\n GridExternalFilterValues |\r\n GridExternalFilterRadio |\r\n GridExternalFilterBool |\r\n GridExternalFilterCustom;\r\n\r\nexport const defaultGridOption: SdGridOption = {\r\n type: undefined,\r\n items: [],\r\n filter: {\r\n type: 'inline',\r\n disabled: false\r\n },\r\n sortable: true,\r\n paginate: {\r\n pageSize: 50,\r\n pageCount: 5\r\n },\r\n commands: [],\r\n columns: []\r\n};\r\n\r\nexport interface SdGridBaseOption {\r\n height?: string;\r\n key?: string;\r\n filter?: GridBaseOptionFilter;\r\n checkable?: boolean;\r\n sortable?: boolean;\r\n numberable?: boolean;\r\n editor?: {\r\n type?: 'focus' | 'inline' | 'popup',\r\n addable?: boolean;\r\n editable?: boolean;\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n limit?: number;\r\n onAdd?: (rowData: any) => void,\r\n onEdit?: (rowData: any) => void,\r\n onSave?: (rowData: any) => void | Promise<void>,\r\n validate?: (rowData: any) => string | Promise<string>\r\n };\r\n paginate?: {\r\n pageSize?: number,\r\n pageCount?: number\r\n };\r\n export?: GridBaseOptionExport;\r\n translate?: boolean;\r\n hideFooter?: boolean;\r\n hideReload?: boolean;\r\n commands?: SdGridCommand[];\r\n columns: SdGridColumn[];\r\n subInformation?: SubOption;\r\n mobileOrTablet?: {\r\n useGridView?: boolean;\r\n htmlTemplate?: (rowData: any, columns?: SdGridColumn[]) => string;\r\n };\r\n // events\r\n onClickRow?: (rowData: any) => void;\r\n onDblClickRow?: (rowData: any) => void;\r\n onCheck?: (items: any[], rowData?: any) => void;\r\n onImportExcel?: (items: any[]) => void;\r\n onReloadCompleted?: (items: any[]) => Promise<void> | void;\r\n}\r\n\r\nexport interface GridBaseOptionExport {\r\n disabled?: boolean;\r\n fileName?: string;\r\n validator?: (fileName: string) => string;\r\n items?: (filterInfo: SdGridFilterInfo) => Promise<any[]>;\r\n mapping?: (items: any[], fileName?: string) => any[] | Promise<any[]>;\r\n columns?: SdGridColumn[];\r\n bigExport?: boolean;\r\n sheets?: {\r\n name: string,\r\n items: any[] | (() => Promise<any[]>),\r\n fields: string[]\r\n }[];\r\n}\r\n\r\nexport interface GridBaseOptionFilter {\r\n type?: 'inline' | 'popup';\r\n columnInline?: 'outside';\r\n disabled?: boolean;\r\n customFilter?: any | (() => any);\r\n externalFilters?: SdGridExternalFilter[];\r\n quickFilterVisibility?: 'inline' | 'popup' | 'none';\r\n multiple?: boolean;\r\n}\r\n\r\ninterface GridLocalOption extends SdGridBaseOption {\r\n type: 'local';\r\n items: any[] | (() => any[] | Promise<any[]>);\r\n}\r\n\r\ninterface GridDotnetOption extends SdGridBaseOption {\r\n type: 'dotnet';\r\n method?: 'POST' | 'GET';\r\n url: string;\r\n handler?: {\r\n beforeRequest: (filterInfo: SdGridFilterInfo) => Promise<SdGridFilterInfo>;\r\n afterResponse: (items: any[], total: number) => Promise<{ items: any[], total: number }>;\r\n };\r\n}\r\n\r\ninterface GridCustomOption extends SdGridBaseOption {\r\n type: 'custom';\r\n url: string;\r\n method?: 'POST' | 'GET';\r\n handlerCustom?: IHandlerServer;\r\n}\r\n\r\ninterface GridCommandBase {\r\n title?: string | ((rowData?: any) => string);\r\n translate?: boolean;\r\n disabled?: boolean | ((rowData?: any) => boolean);\r\n hidden?: boolean | (() => boolean);\r\n hiddenByItem?: ((rowData: any) => boolean) | ((rowData: any) => Promise<boolean>);\r\n}\r\n\r\nexport interface GridCommandNoChildren extends GridCommandBase {\r\n icon: string | ((rowData?: any) => string);\r\n fontSet?: 'material-icons' |\r\n 'material-icons-outlined' |\r\n 'material-icons-outlined' |\r\n 'material-icons-round' |\r\n 'material-icons-sharp';\r\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning';\r\n click?: (rowData?: any) => void;\r\n}\r\n\r\nexport interface GridCommandWithChildren extends GridCommandBase {\r\n icon?: string | ((rowData?: any) => string);\r\n children?: GridCommandNoChildren[];\r\n}\r\n\r\ninterface GridBaseColumn {\r\n field: string;\r\n title: string;\r\n translate?: boolean;\r\n description?: string;\r\n width?: string;\r\n fixed?: boolean;\r\n format?: string;\r\n hidden?: boolean | (() => boolean);\r\n htmlTemplate?: (value: any, rowData?: any, isMobileOrTablet?: boolean) => string;\r\n transform?: (value: any, rowData?: any) => string;\r\n badge?: ((rowData?: any, value?: any) => 'PRIMARY' | 'SECONDARY' | 'INFO' | 'SUCCESS' | 'WARNING' | 'DANGER' | 'LIGHT' | 'DARK');\r\n click?: (value: any, rowData?: any) => void | Promise<void>;\r\n ignoreImport?: boolean;\r\n sortable?: boolean;\r\n align?: 'left' | 'center' | 'right';\r\n filter?: {\r\n disabled?: boolean;\r\n priority?: 'low';\r\n };\r\n}\r\n\r\nexport interface EditorHandler {\r\n [column: string]: {\r\n visible?: boolean | 'create' | 'update',\r\n items?: any[] | Observable<any[]>\r\n };\r\n}\r\n\r\nexport interface GridItem {\r\n blinker?: any;\r\n originItem?: any;\r\n temporary?: any;\r\n isChecked?: boolean;\r\n editingStatus?: 'create' | 'update';\r\n editorHandler?: EditorHandler & {\r\n disabled?: boolean;\r\n errorMessage?: string;\r\n saving?: boolean;\r\n };\r\n subInformation?: {\r\n isOpened?: boolean;\r\n isLoaded?: boolean;\r\n isLoading?: boolean;\r\n subItems?: any[];\r\n };\r\n [key: string]: any;\r\n}\r\n\r\nexport interface ColumnCommand {\r\n icon: string | ((rowData?: any) => string);\r\n title?: string | ((rowData?: any) => string);\r\n click: (rowData: GridItem) => void | Promise<void>;\r\n hiddenByItem?: ((rowData: any) => boolean) | ((rowData: any) => Promise<boolean>);\r\n}\r\n\r\ninterface GridColumnText extends GridBaseColumn {\r\n type: 'string';\r\n commands?: ColumnCommand[];\r\n editor?: {\r\n autocomplete?: boolean,\r\n alwayDisplay?: boolean,\r\n click?: (rowData: any) => void,\r\n change?: (rowData: any, value?: any, selected?: any | any[]) => void,\r\n keyupEnter?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n item?: DynamicEditorItem,\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string\r\n };\r\n}\r\n\r\ninterface GridColumnColor extends GridBaseColumn {\r\n type: 'color';\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string\r\n };\r\n}\r\n\r\ninterface GridColumnNumber extends GridBaseColumn {\r\n type: 'number';\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n click?: (rowData: any) => void,\r\n change?: (rowData: any) => void,\r\n keyupEnter?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: number\r\n };\r\n}\r\n\r\ninterface GridColumnBool extends GridBaseColumn {\r\n type: 'bool';\r\n // properties for bool type\r\n trueValue?: string;\r\n falseValue?: string;\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n click?: (rowData: any) => void,\r\n change?: (rowData: any) => void,\r\n keyupEnter?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: boolean\r\n };\r\n}\r\n\r\ninterface GridColumnDate extends GridBaseColumn {\r\n type: 'date';\r\n timeDifferent?: 'second' | 'minute' | 'hour';\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any) => void,\r\n keyupEnter?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string | Date\r\n };\r\n}\r\n\r\ninterface GridColumnDateTime extends GridBaseColumn {\r\n type: 'datetime';\r\n timeDifferent?: 'second' | 'minute' | 'hour' | 'day' | 'month';\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any) => void,\r\n keyupEnter?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string | Date\r\n };\r\n}\r\n\r\ninterface GridColumnTime extends GridBaseColumn {\r\n type: 'time';\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any) => void,\r\n keyupEnter?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string | Date\r\n };\r\n}\r\n\r\ninterface GridColumnValues extends GridBaseColumn {\r\n type: 'values';\r\n values: {\r\n value: string,\r\n text: string,\r\n icon?: string,\r\n color?: string,\r\n backgroundColor?: string\r\n }[];\r\n dictionary?: {\r\n [value: string]: {\r\n text: string,\r\n icon?: string,\r\n color?: string,\r\n backgroundColor?: string\r\n }\r\n };\r\n editor?: {\r\n autocomplete?: boolean,\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any, value?: any, selected?: any | any[]) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n item?: DynamicEditorItem,\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string | number\r\n };\r\n}\r\n\r\ninterface GridColumnRadio extends GridBaseColumn {\r\n type: 'radio';\r\n values?: any[];\r\n valueField: string;\r\n displayField: string;\r\n editor?: {\r\n required?: boolean;\r\n values?: {\r\n value: string,\r\n text: string,\r\n }[];\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string | number\r\n };\r\n}\r\n\r\ninterface GridColumnImage extends GridBaseColumn {\r\n type: 'image';\r\n display: {\r\n height: number,\r\n width: number\r\n };\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean)\r\n };\r\n}\r\n\r\nexport type GridColumnChild = (Exclude<SdGridColumn, GridColumnChildren>\r\n & { dynamicTitle?: (rowData: any) => string | Promise<string>, colSpan: 1 | 2 });\r\n\r\nexport interface GridColumnChildren extends GridBaseColumn {\r\n type: 'children';\r\n children: GridColumnChild[];\r\n}\r\n\r\ninterface GridBaseExternalFilter {\r\n field: string;\r\n priority?: 'low';\r\n disabled?: boolean;\r\n}\r\n\r\ninterface GridExternalFilterText extends GridBaseExternalFilter {\r\n type: 'string';\r\n title: string;\r\n default?: string;\r\n}\r\n\r\ninterface GridExternalFilterDate extends GridBaseExternalFilter {\r\n type: 'date';\r\n title: string;\r\n default?: Date | string;\r\n}\r\n\r\ninterface GridExternalFilterDateRange extends GridBaseExternalFilter {\r\n type: 'daterange';\r\n title: string;\r\n fromTitle: string;\r\n toTitle: string;\r\n enableTime?: boolean;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n defaultFrom?: Date | string;\r\n defaultTo?: Date | string;\r\n}\r\n\r\ninterface GridExternalFilterDateRangeFull extends GridBaseExternalFilter {\r\n type: 'daterangefull';\r\n title: string;\r\n enableTime?: boolean;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n defaultFrom?: Date | string;\r\n defaultTo?: Date | string;\r\n}\r\n\r\ninterface GridExternalFilterNumber extends GridBaseExternalFilter {\r\n type: 'number';\r\n title: string;\r\n default?: number;\r\n}\r\n\r\ninterface GridExternalFilterNumberRange extends GridBaseExternalFilter {\r\n type: 'numberrange';\r\n title: string;\r\n fromTitle: string;\r\n toTitle: string;\r\n defaultFrom?: Date | string;\r\n defaultTo?: Date | string;\r\n}\r\n\r\ninterface GridExternalFilterValues extends GridBaseExternalFilter {\r\n type: 'values';\r\n title: string;\r\n values: any[] | ((searchText?: string) => Promise<any[]>);\r\n valueField: string;\r\n displayField: string;\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n default?: string;\r\n}\r\n\r\ninterface GridExternalFilterRadio extends GridBaseExternalFilter {\r\n type: 'radio';\r\n title: string;\r\n values: any[];\r\n valueField: string;\r\n displayField: string;\r\n}\r\n\r\ninterface GridExternalFilterBool extends GridBaseExternalFilter {\r\n type: 'bool';\r\n title: string;\r\n trueValue?: string;\r\n falseValue?: string;\r\n}\r\n\r\ninterface GridExternalFilterCustom extends GridBaseExternalFilter {\r\n type: 'custom';\r\n title: string;\r\n onLoad?: (externalFilter: any, valueKey?: string, displayKey?: string) => { valueKey?: string, displayKey?: string };\r\n onClick: (externalFilter: any, valueKey?: string, displayKey?: string) => void;\r\n}\r\n\r\n// subInformation\r\nexport type SubOption = SubInformationDisabledLazyLoading | SubInformationEnabledLazyLoading;\r\ninterface BaseSubInformation {\r\n height?: string;\r\n commands?: SdGridCommand[];\r\n columns: (SdGridColumn & { title: string | ((rowData: any) => string) })[];\r\n}\r\ninterface SubInformationDisabledLazyLoading extends BaseSubInformation {\r\n lazyLoading: false;\r\n field: string;\r\n}\r\ninterface SubInformationEnabledLazyLoading extends BaseSubInformation {\r\n lazyLoading: true;\r\n onLoad: (rowData: any) => Promise<any[]>;\r\n}\r\n\r\nexport interface DynamicEditorItem {\r\n value: string;\r\n display: string;\r\n items: any[] | ((rowData?: any, value?: any) => any[] | Promise<any[]>);\r\n dependOnField?: string;\r\n}\r\n\r\n\r\nexport interface MobileConfiguration {\r\n htmlTemplate: (rowData?: any, columns?: SdGridColumn[]) => string;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridColumn, SdGridOption, GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'editorHandler'\r\n})\r\nexport class EditorHandlerPipe implements PipeTransform {\r\n transform(value: any, item: GridItem, gridOption: SdGridOption): boolean {\r\n const visible = (column: SdGridColumn) => {\r\n if (column.type === 'children') {\r\n return false;\r\n }\r\n let isDisabled = false;\r\n\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (column.editor) {\r\n isDisabled = typeof (column.editor.disabled) === 'function' ? column.editor.disabled(item) : column.editor.disabled;\r\n }\r\n // Nếu bị disabled return false\r\n if (isDisabled) {\r\n return false;\r\n }\r\n\r\n if (typeof (gridOption.editor?.disabled) === 'function') {\r\n isDisabled = gridOption.editor.disabled(item);\r\n } else {\r\n isDisabled = gridOption.editor?.disabled;\r\n }\r\n // Nếu bị disabled return false\r\n if (isDisabled) {\r\n return false;\r\n }\r\n\r\n // Hiển thị editor nếu dòng đó:\r\n // Đang được edit: editingStatus\r\n return item.editingStatus\r\n // Được thiết lập alwayDisplay\r\n || column.editor?.alwayDisplay\r\n // Editable có thuộc tính type inline\r\n || gridOption.editor?.type === 'inline';\r\n };\r\n item.editorHandler = item.editorHandler || {};\r\n for (const column of gridOption.columns) {\r\n item.editorHandler.disabled = false;\r\n item.editorHandler[column.field] = {};\r\n if (typeof (gridOption.editor) === 'object') {\r\n if (typeof (gridOption.editor.disabled) === 'function') {\r\n item.editorHandler.disabled = gridOption.editor.disabled(item);\r\n } else {\r\n item.editorHandler.disabled = gridOption.editor.disabled;\r\n }\r\n } else {\r\n item.editorHandler.disabled = false;\r\n }\r\n\r\n if (item.editorHandler.disabled) {\r\n item.editorHandler[column.field].visible = false;\r\n } else {\r\n item.editorHandler[column.field].visible = visible(column);\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { IHandlerServer } from './handler';\r\n\r\nexport interface IGridConfiguration {\r\n filter?: {\r\n type?: 'inline' | 'popup',\r\n columnInline?: 'outside',\r\n quickFilterVisibility?: 'inline' | 'popup' | 'none'\r\n };\r\n style?: {\r\n bordered?: boolean;\r\n stripped?: boolean;\r\n };\r\n translate?: boolean;\r\n handlerCustom?: IHandlerServer;\r\n}\r\n\r\nexport const GRID_CONFIG = new InjectionToken<IGridConfiguration>('grid.configuration');\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdCellDef]'\r\n})\r\nexport class SdCellDefDirective {\r\n @Input() sdCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdCellFooterDef]'\r\n})\r\nexport class SdCellFooterDevDirective {\r\n @Input() sdCellFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdCellEditorDef]'\r\n})\r\nexport class SdCellEditorDefDirective {\r\n @Input() sdCellEditorDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { SdGridFilterInfo } from '../models/filter-info.model';\r\nimport { IHandlerLocal } from './handler';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Injectable()\r\nexport class HandlerLocal implements IHandlerLocal {\r\n constructor(private datePipe: DatePipe) { }\r\n filter = (localItems: any[], filterInfo: SdGridFilterInfo) => {\r\n const items = localItems.filter(item => {\r\n for (const column of filterInfo.columns) {\r\n const filterValue: string = (filterInfo.rawFilter[column.field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[column.field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n if (column.type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (column.type === 'values' || column.type === 'radio') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (column.type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (column.type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (column.type === 'date' || column.type === 'datetime') {\r\n const date = this.datePipe.transform(filterValue, 'yyyy/MM/dd');\r\n const fromDate = new Date(date);\r\n const toDate = new Date(date);\r\n toDate.setDate(toDate.getDate() + 1);\r\n if (new Date(columnValue).getTime() < fromDate.getTime() || new Date(columnValue).getTime() >= toDate.getTime()) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (filterInfo.orderBy && filterInfo.orderDirection) {\r\n const column = filterInfo.columns.find(e => e.field === filterInfo.orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((current, next) => {\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (filterInfo.orderDirection === 'DESC') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items,\r\n total: items.length\r\n };\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { SdGridFilterInfo } from '../models/filter-info.model';\r\nimport { IHandlerServer } from './handler';\r\nimport { SdGridColumn, GridColumnChildren } from '../grid.model';\r\n\r\n@Injectable()\r\nexport class HandlerDotnet implements IHandlerServer {\r\n mapRequest = (filterInfo: SdGridFilterInfo) => {\r\n const result = {\r\n whereClause: '1>0',\r\n pageSize: filterInfo.pageSize,\r\n pageNumber: filterInfo.pageNumber,\r\n orderBy: filterInfo.orderBy,\r\n orderDirection: filterInfo.orderDirection,\r\n filter: {},\r\n externalFilter: {}\r\n };\r\n if (filterInfo.customFilter) {\r\n // Nếu custom filter là string\r\n if (typeof (filterInfo.customFilter) === 'string') {\r\n result.whereClause += ` AND ${filterInfo.customFilter}`;\r\n } else if (typeof (filterInfo.customFilter) === 'function') {\r\n result.whereClause += ` AND ${filterInfo.customFilter()}`;\r\n }\r\n }\r\n const executeColumnNoChildren = (column: Exclude<SdGridColumn, GridColumnChildren>) => {\r\n if (!filterInfo.rawFilter[column.field] && filterInfo.rawFilter[column.field] !== 0) {\r\n return;\r\n }\r\n result.filter[column.field] = filterInfo.rawFilter[column.field];\r\n if (column.type === 'string') {\r\n const filterValue: string = (filterInfo.rawFilter[column.field] ?? '').toString();\r\n if (this.#isGuid(filterValue)) {\r\n result.whereClause += ` AND ${column.field} = GUID(\"${filterInfo.rawFilter[column.field]}\")`;\r\n } else if (filterValue.startsWith('!=')) {\r\n result.whereClause += ` AND ${column.field} != \"${filterValue.substring(2, filterValue.length)}\"`;\r\n } else if (filterValue.startsWith('=')) {\r\n result.whereClause += ` AND ${column.field} = \"${filterValue.substring(1, filterValue.length)}\"`;\r\n } else if (filterValue.startsWith('%')) {\r\n result.whereClause += ` AND ${column.field}.EndsWith(\"${filterValue.substring(1, filterValue.length)}\")`;\r\n } else if (filterValue.endsWith('%')) {\r\n result.whereClause += ` AND ${column.field}.StartsWith(\"${filterValue.substring(0, filterValue.length - 1)}\")`;\r\n } else {\r\n result.whereClause += ` AND ${column.field}.Contains(\"${filterValue}\")`;\r\n }\r\n } else if (column.type === 'number') {\r\n const value = +(filterInfo.rawFilter[column.field].replace('>=', '').replace('<=', '').replace('>', '').replace('<', '').trim());\r\n if (filterInfo.rawFilter[column.field].indexOf('>=') > -1) {\r\n result.whereClause += ` AND ${column.field} >= ${value}`;\r\n } else if (filterInfo.rawFilter[column.field].indexOf('<=') > -1) {\r\n result.whereClause += ` AND ${column.field} <= ${value}`;\r\n } else if (filterInfo.rawFilter[column.field].indexOf('>') > -1) {\r\n result.whereClause += ` AND ${column.field} > ${value}`;\r\n } else if (filterInfo.rawFilter[column.field].indexOf('<') > -1) {\r\n result.whereClause += ` AND ${column.field} < ${value}`;\r\n } else {\r\n result.whereClause += ` AND ${column.field} = ${value}`;\r\n }\r\n } else if (column.type === 'bool') {\r\n if (filterInfo.rawFilter[column.field] === '0' || filterInfo.rawFilter[column.field] === '1') {\r\n result.whereClause += ` AND ${column.field} = ${filterInfo.rawFilter[column.field] === '1' ? 'true' : 'false'}`;\r\n }\r\n } else if (column.type === 'values') {\r\n if (filterInfo.rawFilter[column.field]) {\r\n if (this.#isGuid(filterInfo.rawFilter[column.field])) {\r\n result.whereClause += ` AND ${column.field} = GUID(\"${filterInfo.rawFilter[column.field]}\")`;\r\n } else if (typeof (filterInfo.rawFilter[column.field]) === 'string') {\r\n result.whereClause += ` AND ${column.field} = \"${filterInfo.rawFilter[column.field]}\"`;\r\n } else {\r\n result.whereClause += ` AND ${column.field} = ${filterInfo.rawFilter[column.field]}`;\r\n }\r\n }\r\n } else if (column.type === 'radio') {\r\n if (filterInfo.rawFilter[column.field]) {\r\n result.whereClause += ` AND ${column.field} = \"${filterInfo.rawFilter[column.field]}\"`;\r\n }\r\n } else if (column.type === 'date' || column.type === 'datetime') {\r\n // \"DateTime(yyyy,mm,dd,HH,mm,ss)\"\r\n // generate fromDate, toDate\r\n let date = new Date(filterInfo.rawFilter[column.field]);\r\n\r\n // From Date\r\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\r\n result.whereClause += ` AND ${column.field} >= DateTime(${date.getFullYear()},${date.getMonth() + 1},${date.getDate()})`;\r\n\r\n // To Date\r\n date.setDate(date.getDate() + 1);\r\n result.whereClause += ` AND ${column.field} < DateTime(${date.getFullYear()},${date.getMonth() + 1},${date.getDate()})`;\r\n }\r\n };\r\n const executeColumnChildren = (columnChildren: GridColumnChildren) => {\r\n let flag = false;\r\n for (const column of columnChildren.children) {\r\n if (filterInfo.rawFilter[column.field] || filterInfo.rawFilter[column.field] === 0) {\r\n executeColumnNoChildren(column);\r\n flag = true;\r\n }\r\n }\r\n if (flag) {\r\n return;\r\n }\r\n if (!filterInfo.rawFilter[columnChildren.field]) {\r\n return;\r\n }\r\n result.filter[columnChildren.field] = filterInfo.rawFilter[columnChildren.field];\r\n let whereClause = '';\r\n const filterValue: string = (filterInfo.rawFilter[columnChildren.field] ?? '').toString().trim();\r\n for (const column of columnChildren.children) {\r\n if (column.type === 'string') {\r\n if (this.#isGuid(filterValue)) {\r\n whereClause += ` OR ${column.field} = GUID(\"${filterValue}\")`;\r\n } else if (filterValue.startsWith('!=')) {\r\n whereClause += ` OR ${column.field} != \"${filterValue.substring(2, filterValue.length)}\"`;\r\n } else if (filterValue.startsWith('=')) {\r\n whereClause += ` OR ${column.field} = \"${filterValue.substring(1, filterValue.length)}\"`;\r\n } else if (filterValue.startsWith('%')) {\r\n whereClause += ` OR ${column.field}.EndsWith(\"${filterValue.substring(1, filterValue.length)}\")`;\r\n } else if (filterValue.endsWith('%')) {\r\n whereClause += ` OR ${column.field}.StartsWith(\"${filterValue.substring(0, filterValue.length - 1)}\")`;\r\n } else {\r\n whereClause += ` OR ${column.field}.Contains(\"${filterValue}\")`;\r\n }\r\n } else if (column.type === 'number') {\r\n const value = +(filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '').trim());\r\n if (!Number.isNaN(value)) {\r\n if (filterValue.indexOf('>=') > -1) {\r\n whereClause += ` OR ${column.field} >= ${value}`;\r\n } else if (filterValue.indexOf('<=') > -1) {\r\n whereClause += ` OR ${column.field} <= ${value}`;\r\n } else if (filterValue.indexOf('>') > -1) {\r\n whereClause += ` OR ${column.field} > ${value}`;\r\n } else if (filterValue.indexOf('<') > -1) {\r\n whereClause += ` OR ${column.field} < ${value}`;\r\n } else {\r\n whereClause += ` OR ${column.field} = ${value}`;\r\n }\r\n }\r\n } else if (column.type === 'bool') {\r\n if (filterValue === '0' || filterValue === '1') {\r\n whereClause += ` OR ${column.field} = ${filterValue === '1' ? 'true' : 'false'}`;\r\n }\r\n } else if (column.type === 'values') {\r\n if (this.#isGuid(filterValue)) {\r\n whereClause += ` OR ${column.field} = GUID(\"${filterValue}\")`;\r\n } if (typeof (filterInfo.rawFilter[column.field]) === 'string') {\r\n whereClause += ` OR ${column.field} = \"${filterValue}\"`;\r\n } else {\r\n whereClause += ` OR ${column.field} = ${filterValue}`;\r\n }\r\n } else if (column.type === 'radio') {\r\n if (filterValue) {\r\n whereClause += ` OR ${column.field} = \"${filterValue}\"`;\r\n }\r\n } else if (column.type === 'date' || column.type === 'datetime') {\r\n // \"DateTime(yyyy,mm,dd,HH,mm,ss)\"\r\n // generate fromDate, toDate\r\n if (Date.isDate(filterValue)) {\r\n let date = new Date(filterValue);\r\n\r\n // From Date\r\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\r\n whereClause += ` OR (${column.field} >= DateTime(${date.getFullYear()},${date.getMonth() + 1},${date.getDate()})`;\r\n\r\n // To Date\r\n date.setDate(date.getDate() + 1);\r\n whereClause += ` AND ${column.field} < DateTime(${date.getFullYear()},${date.getMonth() + 1},${date.getDate()}))`;\r\n }\r\n }\r\n }\r\n if (whereClause.trim().startsWith('OR')) {\r\n whereClause = whereClause.trim().substr(2).trim();\r\n result.whereClause += ` AND(${whereClause})`;\r\n }\r\n };\r\n filterInfo.columns.forEach(column => {\r\n if (column.type !== 'children') {\r\n executeColumnNoChildren(column);\r\n } else {\r\n executeColumnChildren(column);\r\n }\r\n });\r\n filterInfo.externalFilters?.forEach(externalFilter => {\r\n const { field, type } = externalFilter;\r\n if (type === 'daterangefull') {\r\n result.externalFilter[field] = filterInfo.rawExternalFilter?.[field];\r\n if (result.externalFilter[field]?.from && result.externalFilter[field]?.to) {\r\n const fromDate = new Date(result.externalFilter[field]?.from);\r\n const toDate = Date.addDays(result.externalFilter[field]?.to, 1);\r\n // tslint:disable-next-line: max-line-length\r\n result.whereClause += ` AND ${field} >= DateTime(${fromDate.getFullYear()},${fromDate.getMonth() + 1},${fromDate.getDate()})`;\r\n result.whereClause += ` AND ${field} < DateTime(${toDate.getFullYear()},${toDate.getMonth() + 1},${toDate.getDate()})`;\r\n }\r\n return;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n mapResponse = (res: any) => {\r\n const { items, total } = res;\r\n return {\r\n items,\r\n total\r\n };\r\n }\r\n\r\n #isGuid = (key: string): boolean => {\r\n const regex = /[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}/i;\r\n return regex.test(key);\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n ViewChildren,\r\n QueryList,\r\n AfterViewInit,\r\n OnDestroy,\r\n Inject,\r\n Optional,\r\n ContentChildren\r\n} from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport $ from 'jquery';\r\n\r\nimport {\r\n SdApiService\r\n} from '@sd-angular/core/api';\r\n\r\nimport {\r\n SdExcelService,\r\n ExcelConfig,\r\n ExcelTempateColumn\r\n} from '@sd-angular/core/excel';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdLoadingService\r\n} from '@sd-angular/core/loading';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\n\r\nimport { SdGridOption, defaultGridOption, GridItem, SdGridColumn, SdGridExternalFilter } from './grid.model';\r\n\r\nimport { ConfigResult } from './components/grid-config/grid-config.model';\r\nimport { SdGridConfig } from './components/grid-config/grid-config.component';\r\nimport { EditorHandlerPipe } from './pipes/editor-handler.pipe';\r\nimport { SdGridPopupEditor } from './components/grid-popup-editor/grid-popup-editor.component';\r\nimport { SdGridPopupFilter } from './components/grid-popup-filter/grid-popup-filter.component';\r\nimport { merge, Subscription } from 'rxjs';\r\nimport { SdGridPopupExportExcel } from './components/grid-popup-export-excel/grid-popup-export-excel.component';\r\nimport { QuickFilter, FilterConfiguration } from './components/grid-popup-filter/grid-popup-filter.model';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport { SdGridFilterInfo } from './models/filter-info.model';\r\n\r\nimport { IGridConfiguration, GRID_CONFIG } from './models/grid-configuration.model';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { SdCellDefDirective } from './directives/cell-def.directive';\r\nimport { SdCellFooterDevDirective } from './directives/cell-footer-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdCellEditorDefDirective } from './directives/cell-editor-def.directive';\r\nimport { IHandlerServer, IHandlerLocal } from './models/handler';\r\nimport { HandlerLocal } from './models/handler-local';\r\nimport { HandlerDotnet } from './models/handler-dotnet';\r\nimport { SdGridImportExcel } from './components/grid-import-excel/grid-import-excel.component';\r\n\r\n\r\n@Component({\r\n selector: 'sd-grid',\r\n templateUrl: './grid.component.html',\r\n styleUrls: ['./grid.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGrid implements AfterViewInit, OnDestroy {\r\n private handler: IHandlerServer | IHandlerLocal;\r\n isMobileOrTablet = false;\r\n displayKey = 'SDCUSTOM';\r\n gridOption: SdGridOption;\r\n orderBy: string;\r\n orderDirection: 'ASC' | 'DESC';\r\n localItems: GridItem[] = [];\r\n items: GridItem[] = [];\r\n total: number;\r\n filter: {\r\n [key: string]: any\r\n } = {};\r\n externalFilter: {\r\n [key: string]: any\r\n } = {};\r\n hiddenPaginate = false;\r\n inlineExternal: {\r\n [key: string]: boolean;\r\n } = {};\r\n inlineColumn: {\r\n [key: string]: boolean;\r\n } = {};\r\n quickFilters: QuickFilter[] = [];\r\n selectedQuickFilter: string;\r\n // Paginate\r\n pages = [1];\r\n pageCount = 5;\r\n totalPage = 1;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n viewItems: GridItem[] = [];\r\n sumarize: string;\r\n\r\n fixedColumns: SdGridColumn[] = [];\r\n normalColumns: SdGridColumn[] = [];\r\n columns: SdGridColumn[] = [];\r\n\r\n isCheckedAll = false;\r\n selectedItems: any[] = [];\r\n\r\n @ViewChildren('fixedHeader') private fixedHeaders: QueryList<ElementRef>;\r\n @ViewChildren('fixedBody') private fixedBodies: QueryList<ElementRef>;\r\n\r\n @ViewChild('fixedGridContainer') fixedGridContainer: ElementRef;\r\n @ViewChild('gridFixedBody') gridFixedBody: ElementRef;\r\n\r\n @ViewChild('gridContainer') gridContainer: ElementRef;\r\n @ViewChild('gridHeader') gridHeader: ElementRef;\r\n @ViewChild('gridBody') gridBody: ElementRef;\r\n\r\n @ViewChild('sdGridConfig', { static: true }) sdGridConfig: SdGridConfig;\r\n @ViewChild('sdGridPopupEditor') sdGridPopupEditor: SdGridPopupEditor;\r\n\r\n @ViewChild('sdGridPopupFilter') sdGridPopupFilter: SdGridPopupFilter;\r\n @ViewChild('matSelect') matSelect: MatSelect;\r\n\r\n @ViewChild('sdGridPopupExportExcel') sdGridPopupExportExcel: SdGridPopupExportExcel;\r\n @ViewChild('sdGridImportExcel') sdGridImportExcel: SdGridImportExcel;\r\n\r\n @ContentChildren(SdCellDefDirective) cellDefs = new QueryList<SdCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdCellDefDirective\r\n } = {};\r\n\r\n @ContentChildren(SdCellEditorDefDirective) cellEditorDefs = new QueryList<SdCellEditorDefDirective>();\r\n cellEditorDef: {\r\n [column: string]: SdCellEditorDefDirective\r\n } = {};\r\n\r\n @ContentChildren(SdCellFooterDevDirective) cellFooterDefs = new QueryList<SdCellFooterDevDirective>();\r\n cellFooterDef: {\r\n [column: string]: SdCellFooterDevDirective[];\r\n } = {};\r\n #numberOfFooterRows = 0;\r\n footerRows: number[] = [];\r\n\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(paginator.page.subscribe(this.selectPage));\r\n }\r\n }\r\n\r\n @Input() set option(value: SdGridOption) {\r\n this.setOption(value);\r\n }\r\n selectedItem: any = null;\r\n #subscription = new Subscription();\r\n rowHandler = {\r\n click: (item: any) => {\r\n this.selectedItem = item;\r\n if (this.gridOption.onClickRow) {\r\n this.gridOption.onClickRow(item);\r\n }\r\n },\r\n dblClick: (item: any) => {\r\n this.selectedItem = item;\r\n if (this.gridOption.onDblClickRow) {\r\n this.gridOption.onDblClickRow(item);\r\n }\r\n }\r\n };\r\n\r\n private setOption = (option: SdGridOption) => {\r\n option = this.initConfiguration(option);\r\n option = this.initTranslate(option);\r\n delete this.gridOption;\r\n this.gridOption = option;\r\n // Loại bỏ những command bị ẩn\r\n this.gridOption.commands = this.gridOption.commands.filter(command => {\r\n const hidden = command.hidden;\r\n if (hidden !== undefined) {\r\n if (typeof (hidden) === 'boolean') {\r\n return !hidden;\r\n } else if (typeof (hidden) === 'function') {\r\n return !hidden();\r\n }\r\n } else {\r\n return true;\r\n }\r\n });\r\n this.sdGridConfig.setOption({\r\n key: option.key,\r\n pageSize: this.gridOption.paginate.pageSize,\r\n columns: this.gridOption.columns\r\n });\r\n this.initExternalFilter();\r\n this.resize();\r\n this.detectChanges();\r\n }\r\n\r\n private initConfiguration = (option: SdGridOption) => {\r\n const gridConfiguration = this.configuration;\r\n // Filter\r\n if (!option.filter?.type && gridConfiguration?.filter?.type) {\r\n if (!option.filter) {\r\n option.filter = {\r\n type: gridConfiguration.filter.type\r\n };\r\n } else {\r\n option.filter.type = gridConfiguration.filter.type;\r\n }\r\n }\r\n if (!option.filter?.columnInline && gridConfiguration?.filter?.columnInline) {\r\n if (!option.filter) {\r\n option.filter = {\r\n columnInline: gridConfiguration.filter.columnInline\r\n };\r\n } else {\r\n option.filter.columnInline = gridConfiguration.filter.columnInline;\r\n }\r\n }\r\n if (!option.filter?.quickFilterVisibility && gridConfiguration?.filter?.quickFilterVisibility) {\r\n if (!option.filter) {\r\n option.filter = {\r\n quickFilterVisibility: gridConfiguration.filter.quickFilterVisibility\r\n };\r\n } else {\r\n option.filter.quickFilterVisibility = gridConfiguration.filter.quickFilterVisibility;\r\n }\r\n }\r\n // Translate\r\n option.translate = option.translate ?? gridConfiguration?.translate;\r\n switch (option.type) {\r\n case 'local':\r\n this.handler = this.handlerLocal;\r\n break;\r\n case 'dotnet':\r\n this.handler = this.handlerDotnet;\r\n break;\r\n case 'custom':\r\n this.handler = option.handlerCustom || gridConfiguration?.handlerCustom;\r\n if (!this.handler) {\r\n this.notifyService.notify.warning(`Handler custom was not found`);\r\n return;\r\n }\r\n break;\r\n }\r\n return { ...defaultGridOption, ...option };\r\n }\r\n\r\n private initTranslate = (option: SdGridOption) => {\r\n const { translate } = this.translateService;\r\n option.commands?.forEach(command => {\r\n if (!option.translate) {\r\n return;\r\n }\r\n if (typeof (command.title) === 'string') {\r\n command.title = translate(command.title);\r\n }\r\n if ('children' in command) {\r\n command.children?.forEach(childCommand => {\r\n if (typeof (childCommand.title) === 'string') {\r\n childCommand.title = translate(childCommand.title);\r\n }\r\n });\r\n }\r\n });\r\n option.columns?.forEach(column => {\r\n if (column.translate === false) {\r\n return;\r\n }\r\n if (option.translate || column.translate) {\r\n column.title = translate(column.title);\r\n }\r\n if (column.type === 'children') {\r\n column?.children?.forEach(childColumn => {\r\n if (childColumn.translate === false) {\r\n return;\r\n }\r\n if (option.translate || childColumn.translate) {\r\n childColumn.title = translate(childColumn.title);\r\n }\r\n });\r\n }\r\n });\r\n option.filter?.externalFilters?.forEach(externalFilter => {\r\n if (option.translate) {\r\n externalFilter.title = translate(externalFilter.title);\r\n }\r\n });\r\n return option;\r\n }\r\n\r\n constructor(\r\n @Inject(GRID_CONFIG) @Optional() public configuration: IGridConfiguration,\r\n private ref: ChangeDetectorRef,\r\n deviceService: DeviceDetectorService,\r\n private handlerLocal: HandlerLocal,\r\n private handlerDotnet: HandlerDotnet,\r\n private translateService: SdTranslateService,\r\n private datePipe: DatePipe,\r\n private loadingService: SdLoadingService,\r\n private apiService: SdApiService,\r\n private excelService: SdExcelService,\r\n private notifyService: SdNotifyService,\r\n private editorVisiblePipe: EditorHandlerPipe) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n // this.ref.detach();\r\n // setInterval(() => {\r\n // this.ref.markForCheck();\r\n // }, 1000);\r\n // ref.detach();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.fixedHeaders.changes.pipe(startWith([])).subscribe(() => {\r\n setTimeout(() => {\r\n const fixedHeaders = this.fixedHeaders.toArray();\r\n if (fixedHeaders.length > 0) {\r\n let left = $(fixedHeaders[0].nativeElement).outerWidth(true);\r\n for (let i = 1; i < fixedHeaders.length; i++) {\r\n $(fixedHeaders[i].nativeElement).css({ left });\r\n left += $(fixedHeaders[i].nativeElement).outerWidth(true);\r\n }\r\n }\r\n }, 100);\r\n }));\r\n this.#subscription.add(merge(this.fixedBodies.changes, this.cellFooterDefs.changes).pipe(startWith({})).subscribe(() => {\r\n setTimeout(() => {\r\n const fixedBodies = this.fixedBodies.toArray();\r\n if (fixedBodies.length > 0) {\r\n const fixedPerRow = this.fixedBodies.length / (this.viewItems.length + this.#numberOfFooterRows);\r\n let left = $(fixedBodies[0].nativeElement).outerWidth(true);\r\n for (let i = 1; i < fixedBodies.length; i++) {\r\n if (i % fixedPerRow === 0) {\r\n left = 0;\r\n }\r\n $(fixedBodies[i].nativeElement).css({ left });\r\n left += $(fixedBodies[i].nativeElement).outerWidth(true);\r\n }\r\n }\r\n const fixedHeaders = this.fixedHeaders.toArray();\r\n if (fixedHeaders.length > 0) {\r\n let left = $(fixedHeaders[0].nativeElement).outerWidth(true);\r\n for (let i = 1; i < fixedHeaders.length; i++) {\r\n $(fixedHeaders[i].nativeElement).css({ left });\r\n left += $(fixedHeaders[i].nativeElement).outerWidth(true);\r\n }\r\n }\r\n }, 100);\r\n }));\r\n this.#subscription.add(this.cellDefs.changes.pipe(startWith([])).subscribe(() => {\r\n this.cellDef = {};\r\n for (const cellDef of this.cellDefs) {\r\n if (cellDef.sdCellDef) {\r\n this.cellDef[cellDef.sdCellDef] = cellDef;\r\n }\r\n }\r\n }));\r\n this.#subscription.add(this.cellEditorDefs.changes.pipe(startWith([])).subscribe(() => {\r\n this.cellEditorDef = {};\r\n for (const cellEditorDef of this.cellEditorDefs) {\r\n if (cellEditorDef.sdCellEditorDef) {\r\n this.cellEditorDef[cellEditorDef.sdCellEditorDef] = cellEditorDef;\r\n }\r\n }\r\n }));\r\n this.#subscription.add(this.cellFooterDefs.changes.pipe(startWith([])).subscribe(() => {\r\n this.cellFooterDef = {};\r\n this.#numberOfFooterRows = 0;\r\n for (const cellFooterDef of this.cellFooterDefs) {\r\n if (cellFooterDef.sdCellFooterDef) {\r\n if (!this.cellFooterDef[cellFooterDef.sdCellFooterDef]) {\r\n this.cellFooterDef[cellFooterDef.sdCellFooterDef] = [];\r\n }\r\n this.cellFooterDef[cellFooterDef.sdCellFooterDef].push(cellFooterDef);\r\n if (this.cellFooterDef[cellFooterDef.sdCellFooterDef].length > this.#numberOfFooterRows) {\r\n this.#numberOfFooterRows = this.cellFooterDef[cellFooterDef.sdCellFooterDef].length;\r\n }\r\n }\r\n }\r\n this.footerRows = Array(this.#numberOfFooterRows).fill(0).map((v, i) => i);\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n reload = async (gridItems?: any[]) => {\r\n if (this.isLoading) {\r\n return;\r\n }\r\n this.isLoading = true;\r\n const currentPage = (this.#paginator?.pageIndex || 0) + 1;\r\n const pageSize = this.#paginator?.pageSize || 50;\r\n try {\r\n if (this.gridOption.type !== 'local') {\r\n const handler = this.handler as IHandlerServer;\r\n const filter = handler.mapRequest(this.getFilterInfo(currentPage, pageSize));\r\n if (this.gridOption.method === 'GET') {\r\n const queryString = Object.keys(filter).filter(key => filter[key] !== null && filter[key] !== undefined)\r\n .map(key => key + '=' + filter[key]).join('&');\r\n const url = this.gridOption.url.includes('?') ? `${this.gridOption.url}&${queryString}` : `${this.gridOption.url}?${queryString}`;\r\n const response = await this.apiService.get(url);\r\n const { items, total } = handler.mapResponse(response);\r\n this.items = items;\r\n this.total = total;\r\n } else {\r\n const response = await this.apiService.post(this.gridOption.url, filter);\r\n const { items, total } = handler.mapResponse(response);\r\n this.items = items;\r\n this.total = total;\r\n }\r\n } else {\r\n const handler = this.handler as IHandlerLocal;\r\n if (typeof (this.gridOption.items) === 'function') {\r\n if (Array.isArray(gridItems)) {\r\n this.localItems = gridItems;\r\n } else {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n this.localItems = await results;\r\n } else {\r\n this.localItems = results;\r\n }\r\n }\r\n } else {\r\n this.gridOption.items = gridItems || this.gridOption.items;\r\n this.localItems = this.gridOption.items;\r\n }\r\n const response = handler.filter(this.localItems, {\r\n customFilter: this.gridOption.filter.customFilter,\r\n rawFilter: this.filter,\r\n columns: this.gridOption.columns,\r\n rawExternalFilter: this.externalFilter,\r\n externalFilters: this.gridOption.filter?.externalFilters,\r\n orderBy: this.orderBy,\r\n orderDirection: this.orderDirection,\r\n pageNumber: currentPage,\r\n pageSize\r\n });\r\n this.items = response.items;\r\n this.total = response.total;\r\n \r\n }\r\n this.items.forEach(item => item.originItem = { ...item });\r\n this.isCheckedAll = false;\r\n this.#setSelectedItems();\r\n await this.gridOption?.onReloadCompleted?.(this.items);\r\n this.generateViewItems();\r\n this.generateEditorHandlers();\r\n $(this.gridBody.nativeElement).scrollTop(0);\r\n if (currentPage > 1 && !this.viewItems?.length) {\r\n this.#paginator.firstPage();\r\n }\r\n this.detectChanges();\r\n } catch (error) {\r\n this.notifyService.handle.error(error);\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n reloadItem(data: { [id: string]: any }) {\r\n Object.keys(data).forEach(id => {\r\n const item = this.items.find(e => !!e.id && e.id === id);\r\n if (item) {\r\n this.gridOption.columns.forEach(column => {\r\n if (item[column.field] !== undefined && data[id][column.field] !== undefined && item[column.field] !== data[id][column.field]) {\r\n this.blink(item, column.field);\r\n }\r\n });\r\n Object.assign(item, data[id]);\r\n this.generateEditorHanlder(item);\r\n this.stopBlink();\r\n }\r\n });\r\n }\r\n\r\n private blink(item: GridItem, field: string) {\r\n item.blinker = item.blinker || {};\r\n item.blinker[field] = true;\r\n }\r\n private stopBlink() {\r\n setTimeout(() => {\r\n this.viewItems.forEach(item => {\r\n item.blinker = {};\r\n });\r\n }, 1500);\r\n }\r\n\r\n detectChanges = () => {\r\n this.ref.detectChanges();\r\n this.ref.markForCheck();\r\n }\r\n\r\n private generateViewItems() {\r\n const currentPage = (this.#paginator?.pageIndex || 0) + 1;\r\n const pageSize = this.#paginator?.pageSize || 50;\r\n delete this.viewItems;\r\n if (this.gridOption.type === 'local') {\r\n this.viewItems = this.items.filter((item, index) => {\r\n return index >= (currentPage - 1) * pageSize\r\n && index < currentPage * pageSize;\r\n });\r\n } else {\r\n this.viewItems = this.items;\r\n }\r\n this.viewItems.forEach(item => {\r\n item.blinker = item.blinker || {};\r\n item.subInformation = item.subInformation || {};\r\n });\r\n }\r\n\r\n get editedItems() {\r\n return this.items.filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n }).map(item => {\r\n const { temporary,\r\n originItem,\r\n editorHandler,\r\n editingStatus,\r\n isChecked,\r\n subInformation,\r\n blinker,\r\n ...result } = item;\r\n return result;\r\n });\r\n }\r\n\r\n selectPage = () => {\r\n if (this.gridOption.type === 'local') {\r\n this.reload(this.localItems);\r\n } else {\r\n this.reload();\r\n }\r\n }\r\n\r\n updateFilter = (param?: { filter: any, externalFilter: any }) => {\r\n this.filter = param?.filter || this.filter;\r\n this.externalFilter = param?.externalFilter || this.externalFilter;\r\n this.#paginator.pageIndex = 0;\r\n if (this.gridOption.type === 'local') {\r\n this.reload(this.localItems);\r\n } else {\r\n this.reload();\r\n }\r\n }\r\n\r\n getItems() {\r\n return this.items;\r\n }\r\n\r\n //#region Checkable\r\n\r\n #setSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.isChecked)\r\n .map(item => {\r\n const { temporary,\r\n originItem,\r\n editorHandler,\r\n editingStatus,\r\n isChecked,\r\n subInformation,\r\n blinker,\r\n ...result } = item;\r\n return result;\r\n });\r\n }\r\n\r\n onCheck = (item: GridItem, isCheckbox?: boolean) => {\r\n if (!this.gridOption.checkable) {\r\n return;\r\n }\r\n if (!isCheckbox) {\r\n item.isChecked = !item.isChecked;\r\n }\r\n this.isCheckedAll = this.items.length === this.items.filter(e => e.isChecked).length;\r\n this.gridOption.onCheck?.(this.items.filter(e => e.isChecked), item);\r\n this.#setSelectedItems();\r\n }\r\n\r\n checkAll(isCheckedAll: boolean) {\r\n this.isCheckedAll = isCheckedAll;\r\n this.items.forEach(item => item.isChecked = this.isCheckedAll);\r\n if (this.gridOption.onCheck) {\r\n this.gridOption.onCheck(this.items.filter(item => item.isChecked));\r\n }\r\n this.#setSelectedItems();\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Sort\r\n sort = (column: SdGridColumn) => {\r\n if (column.type === 'children' || column.type === 'image') {\r\n return;\r\n }\r\n const sortable = this.gridOption.sortable ?? true;\r\n const columnSortable = column.sortable ?? true;\r\n if (!sortable || !columnSortable) {\r\n return;\r\n }\r\n if (this.orderBy === column.field) {\r\n this.orderDirection = this.orderDirection === 'ASC' ? 'DESC' : 'ASC';\r\n } else {\r\n this.orderBy = column.field;\r\n this.orderDirection = 'ASC';\r\n }\r\n if (this.gridOption.type === 'local') {\r\n this.reload(this.localItems);\r\n } else {\r\n this.reload();\r\n }\r\n }\r\n //#endregion\r\n\r\n // #region Resize Grid\r\n private resize() {\r\n this.detectChanges();\r\n if (this.gridOption.height) {\r\n this.gridBody.nativeElement.style.height = this.gridOption.height;\r\n } else {\r\n this.gridBody.nativeElement.style.height = `${window.innerHeight - 300}px`;\r\n setTimeout(() => {\r\n // Lấy offset top để điều chỉnh kích thước Grid vừa với màn hình\r\n const top = this.gridBody.nativeElement.getBoundingClientRect().top;\r\n // const top = $(this.gridBody.nativeElement).offset().top;\r\n const bottom = this.gridOption.hideFooter ? 0 : (this.isMobileOrTablet ? 45 : 55);\r\n const height = window.innerHeight - top - bottom;\r\n this.gridBody.nativeElement.style.height = `${height}px`;\r\n }, 0);\r\n setTimeout(() => {\r\n // Lấy offset top để điều chỉnh kích thước Grid vừa với màn hình\r\n const top = this.gridBody.nativeElement.getBoundingClientRect().top;\r\n // const top = $(this.gridBody.nativeElement).offset().top;\r\n const bottom = this.gridOption.hideFooter ? 0 : (this.isMobileOrTablet ? 45 : 55);\r\n const height = window.innerHeight - top - bottom;\r\n this.gridBody.nativeElement.style.height = `${height}px`;\r\n }, 200);\r\n setTimeout(() => {\r\n // Lấy offset top để điều chỉnh kích thước Grid vừa với màn hình\r\n const top = this.gridBody.nativeElement.getBoundingClientRect().top;\r\n // const top = $(this.gridBody.nativeElement).offset().top;\r\n const bottom = this.gridOption.hideFooter ? 0 : (this.isMobileOrTablet ? 45 : 55);\r\n const height = window.innerHeight - top - bottom;\r\n this.gridBody.nativeElement.style.height = `${height}px`;\r\n }, 500);\r\n setTimeout(() => {\r\n // Lấy offset top để điều chỉnh kích thước Grid vừa với màn hình\r\n const top = this.gridBody.nativeElement.getBoundingClientRect().top;\r\n // const top = $(this.gridBody.nativeElement).offset().top;\r\n const bottom = this.gridOption.hideFooter ? 0 : (this.isMobileOrTablet ? 45 : 55);\r\n const height = window.innerHeight - top - bottom;\r\n this.gridBody.nativeElement.style.height = `${height}px`;\r\n }, 1000);\r\n }\r\n }\r\n\r\n setHeight(height?: string) {\r\n this.gridOption.height = height;\r\n this.resize();\r\n }\r\n\r\n // #endregion\r\n\r\n //#region Import, Export, Config\r\n\r\n loadConfig(configResult: ConfigResult) {\r\n this.gridOption.paginate.pageSize = configResult.pageSize;\r\n this.gridOption.columns = configResult.columns;\r\n this.fixedColumns = configResult.fixedColumns;\r\n this.normalColumns = configResult.normalColumns;\r\n this.columns = [...this.fixedColumns, ...this.normalColumns];\r\n this.initFilter();\r\n this.initDictionaryColumnValues();\r\n this.reload();\r\n }\r\n\r\n private initFilter() {\r\n this.gridOption.columns.forEach(column => {\r\n // Gán giá trị filter mặc định cho từng cột\r\n this.filter[column.field] = this.filter[column.field] ?? '';\r\n });\r\n }\r\n\r\n private initDictionaryColumnValues() {\r\n this.gridOption.columns.forEach(column => {\r\n if (column.type === 'values') {\r\n column.dictionary = {};\r\n if (column.values) {\r\n column.values.forEach(e => {\r\n column.dictionary[e.value.toString()] = {\r\n text: e.text,\r\n icon: e.icon,\r\n color: e.color,\r\n backgroundColor: e.backgroundColor\r\n };\r\n });\r\n }\r\n }\r\n if (column.type === 'children') {\r\n column.children.forEach(childColumn => {\r\n if (childColumn.type === 'values') {\r\n childColumn.dictionary = {};\r\n if (childColumn.values) {\r\n childColumn.values.forEach(e => {\r\n childColumn.dictionary[e.value.toString()] = {\r\n text: e.text,\r\n icon: e.icon,\r\n color: e.color,\r\n backgroundColor: e.backgroundColor\r\n };\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n //#endregion\r\n\r\n private generateEditorHandlers() {\r\n this.viewItems.forEach(item => {\r\n this.generateEditorHanlder(item);\r\n });\r\n }\r\n\r\n private generateEditorHanlder(item: GridItem) {\r\n // item.editorHandler = item.editorHandler || {};\r\n this.editorVisiblePipe.transform(null, item, this.gridOption);\r\n }\r\n trackById(index, item) {\r\n return item.id;\r\n }\r\n\r\n get isFiltering() {\r\n return Object.values(this.filter).some(value => !!value);\r\n }\r\n\r\n onFilterPopup() {\r\n const f1 = JSON.stringify(this.filter);\r\n const f2 = JSON.stringify(this.externalFilter);\r\n const filter = JSON.parse(f1);\r\n const externalFilter = JSON.parse(f2);\r\n this.sdGridPopupFilter.open(this.fixedColumns, this.normalColumns, filter, externalFilter, this.gridOption.filter?.externalFilters);\r\n }\r\n\r\n clearFilter = () => {\r\n this.filter = {};\r\n this.externalFilter = {};\r\n this.initFilter();\r\n this.initExternalFilter();\r\n if (this.sdGridPopupFilter) {\r\n this.sdGridPopupFilter.filter = this.filter;\r\n this.sdGridPopupFilter.externalFilter = this.externalFilter;\r\n }\r\n }\r\n\r\n onClearFilter = () => {\r\n this.clearFilter();\r\n this.reload();\r\n }\r\n\r\n expandOrCollapse = async (gridItem: GridItem) => {\r\n const { temporary,\r\n originItem,\r\n editorHandler,\r\n editingStatus,\r\n isChecked,\r\n subInformation,\r\n ...item } = gridItem;\r\n if (!this.gridOption.subInformation) {\r\n return;\r\n }\r\n if (gridItem.subInformation?.isOpened) {\r\n gridItem.subInformation.isOpened = false;\r\n return;\r\n }\r\n if (this.gridOption.subInformation.lazyLoading && !gridItem.subInformation?.isLoaded) {\r\n gridItem.subInformation.isLoading = true;\r\n try {\r\n gridItem.subInformation.subItems = await this.gridOption.subInformation.onLoad(item);\r\n if (!Array.isArray(gridItem.subInformation.subItems)) {\r\n this.notifyService.alert.warning(`Data is not an array`);\r\n gridItem.subInformation.subItems = [];\r\n }\r\n gridItem.subInformation.isLoading = false;\r\n gridItem.subInformation.isLoaded = true;\r\n gridItem.subInformation.isOpened = true;\r\n this.ref.detectChanges();\r\n } catch (err) {\r\n this.notifyService.handle.error(err);\r\n gridItem.subInformation.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n return;\r\n }\r\n if (this.gridOption.subInformation.lazyLoading === false && !gridItem.subInformation.isLoaded) {\r\n gridItem.subInformation.subItems = gridItem[this.gridOption.subInformation.field];\r\n if (!Array.isArray(gridItem.subInformation.subItems)) {\r\n this.notifyService.alert.warning(`Data is not an array`);\r\n gridItem.subInformation.subItems = [];\r\n }\r\n gridItem.subInformation.isLoaded = true;\r\n gridItem.subInformation.isOpened = true;\r\n return;\r\n }\r\n gridItem.subInformation.isOpened = true;\r\n this.ref.detectChanges();\r\n }\r\n //#region Editable\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: GridItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n editor.onAdd?.(item);\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n this.viewItems.splice(0, 0, item);\r\n }\r\n this.onUpdate(item, false);\r\n }\r\n onUpdate = (item: GridItem, isModified?: boolean) => {\r\n const { editor, columns } = this.gridOption;\r\n item.editingStatus = isModified ? 'update' : 'create';\r\n item.temporary = { ...item };\r\n this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n }\r\n onSave = async (item: GridItem) => {\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandler.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editingStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editingStatus = undefined;\r\n this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandler.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n onCancel = (item: GridItem) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n }\r\n const idx2 = this.viewItems.indexOf(item);\r\n this.viewItems.splice(idx2, 1);\r\n return;\r\n }\r\n if (item.editingStatus === 'create') {\r\n if (editor.type !== 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 1);\r\n }\r\n this.viewItems.splice(0, 1);\r\n }\r\n } else {\r\n Object.assign(item, item.temporary);\r\n item.editingStatus = undefined;\r\n this.generateEditorHanlder(item);\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n private initExternalFilter = () => {\r\n if (this.gridOption.filter?.externalFilters?.length) {\r\n this.gridOption.filter.externalFilters.forEach(externalFilter => {\r\n if (externalFilter.type === 'string') {\r\n if (externalFilter.default) {\r\n this.externalFilter[externalFilter.field] = externalFilter.default ?? '';\r\n }\r\n return;\r\n }\r\n if (externalFilter.type === 'number') {\r\n if (externalFilter.default) {\r\n this.externalFilter[externalFilter.field] = externalFilter.default ?? undefined;\r\n }\r\n return;\r\n }\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: externalFilter.defaultFrom ?? undefined,\r\n to: externalFilter.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (externalFilter.type === 'numberrange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: externalFilter.defaultFrom ?? undefined,\r\n to: externalFilter.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (externalFilter.type === 'daterangefull') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: externalFilter.defaultFrom ?? undefined,\r\n to: externalFilter.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (externalFilter.type === 'values') { // andn1\r\n if (externalFilter.default) {\r\n this.externalFilter[externalFilter.field] = externalFilter.default ?? '';\r\n }\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n onSearch = (searchValue: string, item: GridItem, column: SdGridColumn) => {\r\n item[column.field] = searchValue;\r\n }\r\n\r\n onFilterConfigurationLoaded = (param: FilterConfiguration) => {\r\n this.quickFilters = param.quickFilters || [];\r\n this.selectedQuickFilter = param.selectedQuickFilter || '';\r\n if (this.selectedQuickFilter) {\r\n const quickFilter = this.quickFilters.find(e => e.code === this.selectedQuickFilter);\r\n if (quickFilter) {\r\n const f1 = JSON.stringify(quickFilter.filter);\r\n const f2 = JSON.stringify(quickFilter.externalFilter);\r\n this.filter = JSON.parse(f1);\r\n this.externalFilter = this.refreshExternalFilter(this.gridOption?.filter?.externalFilters, JSON.parse(f2));\r\n }\r\n }\r\n this.inlineExternal = param.inlineExternal || {};\r\n this.inlineColumn = param.inlineColumn || {};\r\n this.resize();\r\n }\r\n\r\n onSelectQuickFilter = (value: string) => {\r\n const quickFilter = this.quickFilters.find(e => e.code === value);\r\n if (quickFilter?.code) {\r\n const f1 = JSON.stringify(quickFilter.filter);\r\n const f2 = JSON.stringify(quickFilter.externalFilter);\r\n this.selectedQuickFilter = quickFilter?.code;\r\n this.filter = JSON.parse(f1);\r\n this.externalFilter = this.refreshExternalFilter(this.gridOption?.filter?.externalFilters, JSON.parse(f2));\r\n this.updateFilter();\r\n } else {\r\n this.selectedQuickFilter = '';\r\n this.onClearFilter();\r\n }\r\n this.sdGridPopupFilter?.updateConfiguration(this.selectedQuickFilter);\r\n }\r\n\r\n private getExportItems = async (pageNumber: number = 1, pageSize: number = 10000) => {\r\n if (this.isLoading) {\r\n return;\r\n }\r\n this.isLoading = true;\r\n try {\r\n if (this.gridOption.type !== 'local') {\r\n const handler = this.handler as IHandlerServer;\r\n const filter = handler.mapRequest(this.getFilterInfo(pageNumber, pageSize));\r\n if (this.gridOption.method === 'GET') {\r\n const queryString = Object.keys(filter).filter(key => filter[key] !== null && filter[key] !== undefined)\r\n .map(key => key + '=' + filter[key]).join('&');\r\n const url = this.gridOption.url.includes('?') ? `${this.gridOption.url}&${queryString}` : `${this.gridOption.url}?${queryString}`;\r\n const response = await this.apiService.get(url);\r\n return handler.mapResponse(response).items;\r\n } else {\r\n const response = await this.apiService.post(this.gridOption.url, filter);\r\n return handler.mapResponse(response).items;\r\n }\r\n } else {\r\n let localItems = [];\r\n const handler = this.handler as IHandlerLocal;\r\n if (typeof (this.gridOption.items) === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n localItems = await results;\r\n } else {\r\n localItems = results;\r\n }\r\n } else {\r\n localItems = this.gridOption.items;\r\n }\r\n const response = handler.filter(localItems, {\r\n customFilter: this.gridOption.filter.customFilter,\r\n rawFilter: this.filter,\r\n columns: this.gridOption.columns,\r\n rawExternalFilter: this.externalFilter,\r\n externalFilters: this.gridOption.filter?.externalFilters,\r\n orderBy: this.orderBy,\r\n orderDirection: this.orderDirection,\r\n pageNumber,\r\n pageSize\r\n });\r\n return response.items;\r\n }\r\n } catch (error) {\r\n this.notifyService.handle.error(error);\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n private getFilterInfo = (pageNumber: number, pageSize: number): SdGridFilterInfo => {\r\n for (const key of Object.keys(this.filter)) {\r\n if (typeof (this.filter[key]) === 'string') {\r\n this.filter[key] = this.filter[key].trim();\r\n }\r\n }\r\n for (const key of Object.keys(this.externalFilter)) {\r\n if (typeof (this.externalFilter[key]) === 'string') {\r\n this.externalFilter[key] = this.externalFilter[key].trim();\r\n }\r\n }\r\n return {\r\n customFilter: this.gridOption.filter.customFilter,\r\n rawFilter: this.filter,\r\n columns: this.gridOption.columns,\r\n rawExternalFilter: this.externalFilter,\r\n externalFilters: this.gridOption.filter?.externalFilters,\r\n orderBy: this.orderBy,\r\n orderDirection: this.orderDirection,\r\n pageNumber,\r\n pageSize\r\n };\r\n }\r\n\r\n onExportByTemplate = async (params: { excelConfig: ExcelConfig, excelColumns: ExcelTempateColumn[] }) => {\r\n this.loadingService.start();\r\n let exportItems = [];\r\n if (this.gridOption.export?.items) {\r\n exportItems = await this.gridOption.export?.items(this.getFilterInfo(1, 10000)).finally(this.loadingService.stop);\r\n } else {\r\n exportItems = await this.getExportItems().finally(this.loadingService.stop);\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems, params.excelConfig.name);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const columns = [...this.gridOption.columns, ...(this.gridOption.export?.columns || [])];\r\n const items = exportItems.map(item => {\r\n const obj: any = {};\r\n const handle = (column: SdGridColumn) => {\r\n if (column.type === 'children') {\r\n column.children.forEach(handle);\r\n } else if (column.transform) {\r\n obj[column.field] = column.transform(item[column.field], item);\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number' || column.type === 'color') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.trueValue || 'True';\r\n } else {\r\n obj[column.field] = column.falseValue || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n // Nếu là date thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = this.datePipe.transform(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n // Nếu là datetime thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = this.datePipe.transform(date, 'dd/MM/yyyy HH:mm:ss');\r\n } else if (column.type === 'time') {\r\n // Nếu là time thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = this.datePipe.transform(date, 'HH:mm:ss');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n const data = column.values.find(e => e.value === item[column.field]);\r\n if (data) {\r\n obj[column.field] = data.text;\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n } else if (column.type === 'radio') {\r\n const data = column.values.find(e => e[column.valueField] === item[column.field]);\r\n if (data) {\r\n obj[column.field] = data[column.displayField];\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n }\r\n };\r\n columns.forEach(handle);\r\n return obj;\r\n });\r\n this.excelService.generateExcelDataByTemplate(params.excelConfig.fullPath, params.excelColumns, items, params.excelConfig.name);\r\n }\r\n\r\n bigExport = async () => {\r\n const pageSize = 1000;\r\n let pageNumber = 1;\r\n this.loadingService.start();\r\n try {\r\n let exportItems = [];\r\n let filePath: string = null;\r\n let destination: string = null;\r\n let latestRow = 0;\r\n while (true) {\r\n if (this.gridOption.export?.items) {\r\n exportItems = await this.gridOption.export?.items(this.getFilterInfo(pageNumber, pageSize)).finally(this.loadingService.stop);\r\n } else {\r\n exportItems = await this.getExportItems(pageNumber, pageSize).finally(this.loadingService.stop);\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const columns = [...this.gridOption.columns, ...(this.gridOption.export?.columns || [])];\r\n const items = exportItems.map(item => {\r\n const obj: any = {};\r\n const handle = (column: SdGridColumn) => {\r\n if (column.type === 'children') {\r\n column.children.forEach(handle);\r\n } else if (column.transform) {\r\n obj[column.field] = column.transform(item[column.field], item);\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number' || column.type === 'color') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.trueValue || 'True';\r\n } else {\r\n obj[column.field] = column.falseValue || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n // Nếu là date thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = this.datePipe.transform(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n // Nếu là datetime thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = this.datePipe.transform(date, 'dd/MM/yyyy HH:mm:ss');\r\n } else if (column.type === 'time') {\r\n // Nếu là time thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = this.datePipe.transform(date, 'HH:mm:ss');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n const data = column.values.find(e => e.value === item[column.field]);\r\n if (data) {\r\n obj[column.field] = data.text;\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n } else if (column.type === 'radio') {\r\n const data = column.values.find(e => e[column.valueField] === item[column.field]);\r\n if (data) {\r\n obj[column.field] = data[column.displayField];\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n }\r\n };\r\n columns.forEach(handle);\r\n return obj;\r\n });\r\n const result = await this.excelService.bigExport({\r\n columns,\r\n items,\r\n latestRow,\r\n filePath,\r\n destination\r\n });\r\n latestRow = result.latestRow;\r\n filePath = result.filePath;\r\n destination = result.destination;\r\n if ((pageNumber - 1) * pageSize + items.length >= this.total) {\r\n await this.excelService.download(filePath);\r\n break;\r\n }\r\n pageNumber++;\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n get invalidItems() {\r\n return this.items.filter(e => e.editorHandler?.errorMessage).map(e => {\r\n const { temporary,\r\n originItem,\r\n editorHandler,\r\n editingStatus,\r\n isChecked,\r\n subInformation,\r\n blinker,\r\n ...item } = e;\r\n return {\r\n item,\r\n message: e.editorHandler.errorMessage\r\n };\r\n });\r\n }\r\n\r\n get gridItems() {\r\n return this.items.map(e => {\r\n const { temporary,\r\n originItem,\r\n editorHandler,\r\n editingStatus,\r\n isChecked,\r\n subInformation,\r\n blinker,\r\n ...item } = e;\r\n return item;\r\n });\r\n }\r\n\r\n onEditorChange = () => {\r\n this.ref.detectChanges();\r\n }\r\n onSelectPageSize = () => {\r\n this.reload();\r\n }\r\n private refreshExternalFilter = (externalFilters: SdGridExternalFilter[], externalFilter: any) => {\r\n externalFilter = externalFilter || {};\r\n externalFilters = externalFilters || [];\r\n externalFilters.forEach(e => {\r\n if (e.type === 'string') {\r\n externalFilter[e.field] = externalFilter[e.field] ?? e.default ?? '';\r\n return;\r\n }\r\n if (e.type === 'number') {\r\n externalFilter[e.field] = externalFilter[e.field] ?? e.default ?? undefined;\r\n return;\r\n }\r\n if (e.type === 'daterange') {\r\n externalFilter[e.field] = {\r\n from: externalFilter[e.field]?.from ?? e.defaultFrom ?? undefined,\r\n to: externalFilter[e.field]?.to ?? e.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (e.type === 'numberrange') {\r\n externalFilter[e.field] = {\r\n from: externalFilter[e.field]?.from ?? e.defaultFrom ?? undefined,\r\n to: externalFilter[e.field]?.to ?? e.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (e.type === 'daterangefull') {\r\n externalFilter[e.field] = {\r\n from: externalFilter[e.field]?.from ?? e.defaultFrom ?? undefined,\r\n to: externalFilter[e.field]?.to ?? e.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (e.type === 'values') { // andn1\r\n externalFilter[e.field] = (externalFilter[e.field] || e.default) ?? '';\r\n return;\r\n }\r\n });\r\n return externalFilter;\r\n }\r\n\r\n onCreateQuickFilter = (ev?: Event) => {\r\n this.matSelect?.close();\r\n this.onFilterPopup();\r\n this.sdGridPopupFilter?.close();\r\n this.sdGridPopupFilter?.onCreateQuickFilter(ev);\r\n }\r\n\r\n onEditQuickFilter = (ev: Event, quickFilter?: QuickFilter) => {\r\n this.matSelect?.close();\r\n this.onFilterPopup();\r\n this.sdGridPopupFilter?.close();\r\n this.sdGridPopupFilter?.onEditQuickFilter(ev, quickFilter);\r\n }\r\n\r\n onDeleteQuickFilter = (ev: Event, quickFilter?: QuickFilter) => {\r\n this.matSelect?.close();\r\n this.onFilterPopup();\r\n this.sdGridPopupFilter?.close();\r\n this.sdGridPopupFilter?.onDeleteQuickFilter(ev, quickFilter);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdDynamicItems'\r\n})\r\nexport class SdDynamicItems implements PipeTransform {\r\n transform(value: any, dynamicItems: (value: any) => Promise<any[]>) {\r\n return dynamicItems;\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport { ConfigOption, ConfigResult, ConfigStorage } from './grid-config.model';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\n\r\nimport {\r\n SdSetting,\r\n SdSettingService\r\n} from '@sd-angular/core/setting';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\n\r\n@Component({\r\n selector: 'sd-grid-config',\r\n templateUrl: './grid-config.component.html',\r\n styleUrls: ['./grid-config.component.scss']\r\n})\r\nexport class SdGridConfig implements OnInit {\r\n @ViewChild('modal') modal: SdModal;\r\n @Output() sdChange = new EventEmitter<ConfigResult>();\r\n\r\n option: ConfigOption;\r\n storage: ConfigStorage;\r\n #setting: SdSetting<ConfigStorage>;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private settingService: SdSettingService,\r\n private translateService: SdTranslateService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n async setOption(option: ConfigOption) {\r\n this.ref.detectChanges();\r\n this.option = option;\r\n if (this.option.key) {\r\n this.#setting = this.settingService.create<ConfigStorage>(this.option.key);\r\n } else {\r\n this.#setting = null;\r\n }\r\n await this.init();\r\n this.emitOnChange();\r\n }\r\n\r\n private async init() {\r\n if (this.#setting) {\r\n const storage: ConfigStorage = await this.#setting.get();\r\n try {\r\n if (!storage) {\r\n await this.#setting.remove();\r\n this.#initDefault();\r\n return;\r\n }\r\n this.storage = storage;\r\n\r\n // Loại bỏ những column đã bị xóa khỏi originColumns\r\n this.storage.columnConfigs = this.storage.columnConfigs\r\n .filter(column => this.option.columns.some(e => e.field === column.originColumn.field));\r\n\r\n // Thêm những column mới vào storage nếu có\r\n this.option.columns.forEach(column => {\r\n if (!this.storage.columnConfigs.some(e => e.originColumn.field === column.field)) {\r\n this.storage.columnConfigs.push({\r\n originColumn: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n fixed: column.fixed\r\n },\r\n hidden: false,\r\n fixed: column.fixed\r\n });\r\n }\r\n });\r\n\r\n // Cập nhật originColumn\r\n this.storage.columnConfigs.forEach(column => {\r\n const originColumn = this.option.columns.find(e => e.field === column.originColumn.field);\r\n if (originColumn) {\r\n Object.assign(column.originColumn, {\r\n title: originColumn.title,\r\n width: originColumn.width,\r\n fixed: originColumn.fixed\r\n });\r\n }\r\n });\r\n } catch (ex) {\r\n this.#setting.remove();\r\n this.#initDefault();\r\n }\r\n } else {\r\n this.#initDefault();\r\n }\r\n }\r\n\r\n #initDefault = () => {\r\n this.storage = {};\r\n this.storage.pageSize = this.option.pageSize;\r\n this.storage.columnConfigs = [];\r\n this.option.columns.forEach(column => {\r\n this.storage.columnConfigs.push({\r\n originColumn: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n fixed: column.fixed\r\n },\r\n hidden: false,\r\n fixed: column.fixed\r\n });\r\n });\r\n }\r\n\r\n open() {\r\n this.modal.open();\r\n }\r\n\r\n save() {\r\n if (!Number.isSafeInteger(+this.storage.pageSize)) {\r\n this.notifyService.notify.warning(this.translateService.translate('Page size must be an integer'));\r\n return;\r\n }\r\n if (this.storage.pageSize > 200) {\r\n this.notifyService.notify.warning(this.translateService.translate('Page size is too large'));\r\n return;\r\n }\r\n this.#setting?.set?.(this.storage);\r\n this.emitOnChange();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n }\r\n\r\n reset() {\r\n this.#setting?.remove?.();\r\n this.#initDefault();\r\n this.emitOnChange();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n }\r\n\r\n moveColumnUp(index: number) {\r\n const temp = this.storage.columnConfigs[index];\r\n this.storage.columnConfigs[index] = this.storage.columnConfigs[index - 1];\r\n this.storage.columnConfigs[index - 1] = temp;\r\n }\r\n\r\n moveColumnDown(index: number) {\r\n const temp = this.storage.columnConfigs[index];\r\n this.storage.columnConfigs[index] = this.storage.columnConfigs[index + 1];\r\n this.storage.columnConfigs[index + 1] = temp;\r\n }\r\n\r\n emitOnChange() {\r\n const pageSize = +this.storage.pageSize || this.option.pageSize;\r\n const columns = this.option.columns.filter(column => {\r\n // Hidden column theo config\r\n // Lấy các thuộc tính Title, Width, Fixed từ config\r\n const columnConfig = this.storage.columnConfigs.find(e => e.originColumn.field === column.field);\r\n if (columnConfig) {\r\n column.title = columnConfig.title || column.title;\r\n column.width = columnConfig.width || column.width;\r\n column.fixed = columnConfig.fixed;\r\n return !columnConfig.hidden;\r\n }\r\n return true;\r\n }).sort((current, next) => {\r\n // Sắp xếp theo config\r\n const currentIndex = this.storage.columnConfigs.findIndex(e => e.originColumn.field === current.field);\r\n const nextIndex = this.storage.columnConfigs.findIndex(e => e.originColumn.field === next.field);\r\n return currentIndex - nextIndex;\r\n }).filter(column => {\r\n // Hidden column theo option truyền vào\r\n if (column.hidden === undefined) {\r\n return true;\r\n }\r\n if (typeof (column.hidden) === 'boolean') {\r\n return !column.hidden;\r\n }\r\n if (typeof (column.hidden) === 'function') {\r\n return !column.hidden();\r\n }\r\n return false;\r\n });\r\n const result: ConfigResult = {\r\n pageSize,\r\n columns,\r\n fixedColumns: columns.filter(e => e.fixed),\r\n normalColumns: columns.filter(e => !e.fixed)\r\n };\r\n this.sdChange.emit(result);\r\n }\r\n}\r\n","import { Component, Input, ChangeDetectorRef, EventEmitter, ChangeDetectionStrategy, Output } from '@angular/core';\r\nimport { SdGridColumn, GridItem } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-desktop-column-edit',\r\n templateUrl: './grid-desktop-column-edit.component.html',\r\n styleUrls: ['./grid-desktop-column-edit.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGridDesktopColumnEdit {\r\n @Input() column: SdGridColumn;\r\n @Input() item: GridItem;\r\n @Output() sdChange = new EventEmitter<{ column: SdGridColumn, item: GridItem, value: any }>();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n ) { }\r\n\r\n onEditorChange = (column: SdGridColumn, item: GridItem, value: any) => {\r\n if (column.type !== 'children') {\r\n column.editor?.change?.(item, value);\r\n this.ref.detectChanges();\r\n this.sdChange.emit();\r\n }\r\n }\r\n\r\n onAutocompleteChange = (item: any) => {\r\n if (this.column.type === 'string' || this.column.type === 'values') {\r\n this.column.editor?.change?.(this.item, this.item[this.column.field], item);\r\n this.ref.detectChanges();\r\n this.sdChange.emit();\r\n }\r\n }\r\n\r\n onSelectionChange = (params: { value: any, item: any, items: any[] }) => {\r\n if (this.column.type === 'string' || this.column.type === 'values') {\r\n this.column.editor?.change?.(this.item, params?.value, params?.item || params?.items);\r\n this.ref.detectChanges();\r\n this.sdChange.emit();\r\n }\r\n }\r\n\r\n dynamicItems = async (value: any) => {\r\n if ('editor' in this.column && 'item' in this.column.editor) {\r\n const items = this.column.editor.item.items || [];\r\n if (Array.isArray(items)) {\r\n return items;\r\n }\r\n const results = items(this.item, value);\r\n if (results instanceof Promise) {\r\n return await results;\r\n }\r\n return results;\r\n } else {\r\n return [];\r\n }\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { SdGridColumn, GridItem } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-desktop-column-view',\r\n templateUrl: './grid-desktop-column-view.component.html',\r\n styleUrls: ['./grid-desktop-column-view.component.scss']\r\n})\r\nexport class SdGridDesktopColumnView {\r\n @Input() column: SdGridColumn;\r\n @Input() item: GridItem;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\nimport { SdGridColumn, GridBaseOptionFilter } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-desktop-inline-filter',\r\n templateUrl: './grid-desktop-inline-filter.component.html',\r\n styleUrls: ['./grid-desktop-inline-filter.component.scss']\r\n})\r\nexport class SdGridDesktopInlineFilter {\r\n @Input() columns: SdGridColumn[] = [];\r\n @Input() externalFilter: any = {};\r\n @Input() filter: any = {};\r\n @Input() filterOption: GridBaseOptionFilter;\r\n @Input() inlineExternal: {\r\n [key: string]: boolean;\r\n } = {};\r\n @Input() inlineColumn: {\r\n [key: string]: boolean;\r\n } = {};\r\n @Output() sdChange = new EventEmitter();\r\n isDesktop: boolean;\r\n displayKey = 'SDCUSTOM';\r\n constructor() { }\r\n\r\n onUpdateFilter = () => {\r\n this.sdChange.emit();\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\nimport { GridItem, SdGridOption } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-mobile-item-view',\r\n templateUrl: './grid-mobile-item-view.component.html',\r\n styleUrls: ['./grid-mobile-item-view.component.scss']\r\n})\r\nexport class SdGridMobileItemView {\r\n @Input() gridOption: SdGridOption;\r\n @Input() item: GridItem;\r\n @Output() check = new EventEmitter<GridItem>();\r\n constructor(\r\n ) { }\r\n\r\n onCheck = (item: GridItem) => {\r\n this.check.emit(item);\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridOption, SdGridColumn, GridItem } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-popup-editor',\r\n templateUrl: './grid-popup-editor.component.html'\r\n})\r\nexport class SdGridPopupEditor implements OnInit {\r\n\r\n @ViewChild('modal') modal: SdModal;\r\n @Output() save = new EventEmitter<GridItem>();\r\n columns: SdGridColumn[] = [];\r\n gridOption: SdGridOption;\r\n item: GridItem;\r\n isModified: boolean;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n open = (item: GridItem, columns: SdGridColumn[], isModified?: boolean) => {\r\n this.item = item;\r\n this.isModified = isModified ?? false;\r\n this.columns = [];\r\n columns.forEach(column => {\r\n if (column.type !== 'image' && column.type !== 'children') {\r\n this.columns.push(column);\r\n }\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n if (childColumn.type !== 'image') {\r\n this.columns.push(childColumn);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n onCancel = () => {\r\n this.modal.close();\r\n }\r\n\r\n onSave = () => {\r\n this.modal.close();\r\n this.save.emit(this.item);\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef } from '@angular/core';\r\nimport { SdGridColumn, GridBaseOptionExport } from '../../grid.model';\r\n\r\nimport {\r\n SdExcelService,\r\n ExcelConfig,\r\n ExcelTempateColumn\r\n} from '@sd-angular/core/excel';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdLoadingService\r\n} from '@sd-angular/core/loading';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatRadioChange } from '@angular/material/radio';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\n\r\n@Component({\r\n selector: 'sd-grid-popup-export-excel',\r\n templateUrl: './grid-popup-export-excel.component.html',\r\n styleUrls: ['./grid-popup-export-excel.component.scss']\r\n})\r\nexport class SdGridPopupExportExcel implements OnInit, AfterViewInit {\r\n private prefix = 'Popup Export Excel';\r\n newExcelConfig = 'fd8fb5db-a7ad-4398-93ac-cb3350261180';\r\n @ViewChild('modal') modal: SdModal;\r\n @Input() key = '';\r\n get fullKey() {\r\n if (!this.key) {\r\n return '';\r\n }\r\n return hash({\r\n prefix: this.prefix,\r\n key: this.key\r\n });\r\n }\r\n @Input() columns: SdGridColumn[] = [];\r\n @Input() extendColumns: SdGridColumn[] = [];\r\n @Input() fileName: string;\r\n @Input() validator: (fileName: string) => string;\r\n @Input() exportOption: GridBaseOptionExport;\r\n excelConfigs: ExcelConfig[] = [];\r\n @Output() exportByTemplate = new EventEmitter<{ excelConfig: ExcelConfig, excelColumns: ExcelTempateColumn[] }>();\r\n tabIndex = 0;\r\n selectedExcelConfig: ExcelConfig = {};\r\n exportableColumns: SdGridColumn[] = [];\r\n selected: {\r\n [key: string]: boolean\r\n } = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private excelService: SdExcelService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n async open() {\r\n if (!this.fullKey) {\r\n await this.exportDefault();\r\n return;\r\n }\r\n await this.loadConfiguration();\r\n this.exportableColumns = [...this.columns, ...(this.extendColumns || [])].filter(e => e.type !== 'image');\r\n this.selected = {};\r\n if (!this.selectedExcelConfig?.name) {\r\n if (this.excelConfigs?.length > 0) {\r\n this.selectedExcelConfig = this.excelConfigs[0];\r\n } else {\r\n this.selectedExcelConfig = {\r\n name: this.newExcelConfig\r\n };\r\n }\r\n }\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n }\r\n\r\n private generateExcelColumns = (columns: SdGridColumn[]) => {\r\n const excelColumns: ExcelTempateColumn[] = [];\r\n for (const column of columns) {\r\n if (column.type === 'children') {\r\n for (const childColumn of column.children) {\r\n if (childColumn.type !== 'image') {\r\n excelColumns.push({\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n description: childColumn.description,\r\n width: childColumn.width\r\n });\r\n }\r\n }\r\n } else if (column.type !== 'image') {\r\n excelColumns.push({\r\n field: column.field,\r\n title: column.title,\r\n description: column.description,\r\n width: column.width\r\n });\r\n }\r\n }\r\n return excelColumns;\r\n }\r\n\r\n private initTemplate = async (columns: SdGridColumn[], fileName?: string) => {\r\n columns = columns || [];\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.exportOption?.sheets)) {\r\n for (const sheet of this.exportOption.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.excelService.generateExcelTemplate({\r\n fileName: fileName || this.fileName,\r\n columns: this.generateExcelColumns(columns),\r\n sheets\r\n });\r\n }\r\n\r\n private initDefaultTemplate = async () => {\r\n const extendColumns = this.extendColumns || [];\r\n const columns = [...this.columns, ...extendColumns];\r\n return await this.initTemplate(columns);\r\n }\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n const result = await this.initDefaultTemplate().finally(this.loadingService.stop);\r\n if (result?.filePath) {\r\n this.excelService.downloadTemplate(result.filePath, `${this.fileName}.xlsx`);\r\n }\r\n }\r\n\r\n generateAndUploadTemplate = async (columns: SdGridColumn[], fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.exportOption?.sheets)) {\r\n for (const sheet of this.exportOption.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.excelService.generateAndUploadExcelTemplate(this.fullKey, {\r\n fileName: fileName || this.fileName,\r\n columns: this.generateExcelColumns(columns),\r\n sheets\r\n });\r\n }\r\n\r\n onExportByTemplate = (excelConfig: ExcelConfig) => {\r\n const extendColumns = this.extendColumns || [];\r\n const columns = [...this.columns, ...extendColumns];\r\n this.exportByTemplate.emit({\r\n excelConfig,\r\n excelColumns: this.generateExcelColumns(columns)\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n uploadTemplate = async () => {\r\n const excelConfig = await this.excelService.uploadTemplate(this.fullKey, this.validator);\r\n this.excelConfigs.push({\r\n name: excelConfig.name,\r\n fullPath: excelConfig.fullPath,\r\n removable: true\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n downloadTemplate = (excelConfig: ExcelConfig) => {\r\n this.excelService.downloadTemplate(excelConfig.fullPath, excelConfig.name);\r\n }\r\n\r\n removeTemplate = (excelConfig: ExcelConfig) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(async () => {\r\n this.loadingService.start();\r\n await this.excelService.remove(this.fullKey, excelConfig.name).finally(this.loadingService.stop);\r\n const idx = this.excelConfigs.indexOf(excelConfig);\r\n this.excelConfigs.splice(idx, 1);\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n async loadConfiguration() {\r\n this.excelConfigs = [];\r\n this.excelConfigs = await this.excelService.getFiles(this.fullKey);\r\n }\r\n\r\n exportDefault = async () => {\r\n this.loadingService.start();\r\n const result = await this.initDefaultTemplate().finally(this.loadingService.stop);\r\n const excelColumns: ExcelTempateColumn[] = [];\r\n const extendColumns = this.extendColumns || [];\r\n const columns = [...this.columns, ...extendColumns];\r\n for (const column of columns) {\r\n if (column.type === 'children') {\r\n for (const childColumn of column.children) {\r\n if (childColumn.type !== 'image') {\r\n excelColumns.push({\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width\r\n });\r\n }\r\n }\r\n } else if (column.type !== 'image') {\r\n excelColumns.push({\r\n field: column.field,\r\n title: column.title,\r\n width: column.width\r\n });\r\n }\r\n }\r\n this.exportByTemplate.emit({\r\n excelConfig: {\r\n fullPath: result.filePath,\r\n name: `[${this.fullKey}] Default.xlsx`\r\n },\r\n excelColumns\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n newTemplate = () => {\r\n this.notifyService.confirmWithInput(this.translateService.translate('Enter your template name'), {\r\n maxlength: 50\r\n }).then(async (fileName: string) => {\r\n this.loadingService.start();\r\n fileName = fileName + '.xlsx';\r\n try {\r\n if (this.validator?.(fileName)) {\r\n this.notifyService.notify.warning(this.validator(fileName));\r\n return;\r\n }\r\n let exportableColumns = this.exportableColumns.filter(column => this.selected[column.field]);\r\n if (!exportableColumns.length) {\r\n exportableColumns = this.exportableColumns;\r\n }\r\n const result = await this.generateAndUploadTemplate(exportableColumns, fileName);\r\n if (result?.filePath) {\r\n const excelConfig: ExcelConfig = {\r\n fullPath: result.filePath,\r\n name: result.fileName,\r\n removable: true\r\n };\r\n this.excelConfigs.push(excelConfig);\r\n this.onExportByTemplate(excelConfig);\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n });\r\n }\r\n\r\n onChangeRadio = (matRadioChange: MatRadioChange) => {\r\n const selectedExcelConfig = this.excelConfigs.find(e => e.name === matRadioChange.value);\r\n if (!selectedExcelConfig) {\r\n this.selectedExcelConfig = {\r\n name: this.newExcelConfig\r\n };\r\n } else {\r\n this.selectedExcelConfig = selectedExcelConfig;\r\n }\r\n this.exportableColumns = [...this.columns, ...(this.extendColumns || [])].filter(e => e.type !== 'image');\r\n this.selected = {};\r\n }\r\n}\r\n","// tslint:disable-next-line:max-line-length\r\nimport { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { SdGridColumn, SdGridExternalFilter, GridBaseOptionFilter } from '../../grid.model';\r\nimport { QuickFilter, FilterConfiguration } from './grid-popup-filter.model';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdSettingService\r\n} from '@sd-angular/core/setting';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridPopupQuickFilterDetail } from '../grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component';\r\nimport { MatSelect, MatSelectChange } from '@angular/material/select';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\n\r\n@Component({\r\n selector: 'sd-grid-popup-filter',\r\n templateUrl: './grid-popup-filter.component.html',\r\n styleUrls: ['./grid-popup-filter.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class SdGridPopupFilter implements OnInit, AfterViewInit {\r\n private keyPrefix = 'PopupFilter';\r\n displayKey = 'SDCUSTOM';\r\n isMobileOrTablet = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('popupQuickFilterDetail') popupQuickFilterDetail: SdGridPopupQuickFilterDetail;\r\n @ViewChild('matSelect') matSelect: MatSelect;\r\n @Input() key = '';\r\n @Input() filterOption: GridBaseOptionFilter;\r\n @Output() accept = new EventEmitter<{ filter: any, externalFilter: any }>();\r\n @Output() clear = new EventEmitter<void>();\r\n @Output() loadInlineFilter = new EventEmitter<FilterConfiguration>();\r\n selectedField: string;\r\n newQuickFilter = 'e1ef1d43-d689-424f-959e-e6cd154cfee7';\r\n filter: any = {};\r\n externalFilter: any = {};\r\n columns: SdGridColumn[] = [];\r\n externalFilters: SdGridExternalFilter[] = [];\r\n quickFilters: QuickFilter[] = [];\r\n selectedCode: string;\r\n maxQuickFilters = 5;\r\n @Input() inlineExternal: {\r\n [key: string]: boolean\r\n } = {};\r\n @Input() inlineColumn: {\r\n [key: string]: boolean\r\n } = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n deviceService: DeviceDetectorService,\r\n private settingService: SdSettingService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n\r\n ngOnInit() {\r\n this.#loadConfiguration().then(() => {\r\n this.loadInlineFilter.emit({\r\n quickFilters: this.quickFilters || [],\r\n selectedQuickFilter: this.selectedCode || '',\r\n inlineExternal: this.inlineExternal,\r\n inlineColumn: this.inlineColumn\r\n });\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n open = (\r\n fixedColums: SdGridColumn[],\r\n normalColumns: SdGridColumn[],\r\n filter: any,\r\n externalFilter: any,\r\n externalFilters?: SdGridExternalFilter[]) => {\r\n this.init(fixedColums, normalColumns, filter, externalFilter, externalFilters);\r\n this.modal.open();\r\n }\r\n\r\n init = (\r\n fixedColums: SdGridColumn[],\r\n normalColumns: SdGridColumn[],\r\n filter: any,\r\n externalFilter: any,\r\n externalFilters?: SdGridExternalFilter[]) => {\r\n this.columns = [...fixedColums, ...normalColumns].filter(e => !e.filter?.disabled && e.type !== 'image');\r\n this.columns.forEach(column => {\r\n if (column.type === 'children') {\r\n column.children = column.children.filter(e => !e.filter?.disabled && e.type !== 'image');\r\n }\r\n });\r\n if (externalFilters) {\r\n this.externalFilters = externalFilters.filter(e => !e.disabled);\r\n } else {\r\n this.externalFilters = [];\r\n }\r\n this.filter = filter;\r\n this.externalFilter = this.initExternalFilter(externalFilters, externalFilter);\r\n for (const eFilter of this.externalFilters) {\r\n if (this.inlineExternal[eFilter.field] === undefined) {\r\n this.inlineExternal[eFilter.field] = true;\r\n }\r\n }\r\n for (const column of this.columns) {\r\n if (this.inlineColumn[column.field] === undefined) {\r\n this.inlineColumn[column.field] = true;\r\n }\r\n }\r\n }\r\n\r\n close = () => {\r\n this.modal.close();\r\n }\r\n\r\n onAccept() {\r\n if (this.filterOption?.multiple === false) {\r\n if (this.selectedField) {\r\n if (this.selectedField.startsWith('column')) {\r\n const field = this.selectedField.replace('column', '');\r\n this.accept.emit({\r\n filter: {\r\n [field]: this.filter[field]\r\n },\r\n externalFilter: {}\r\n });\r\n } else if (this.selectedField.startsWith('external')) {\r\n const field = this.selectedField.replace('external', '');\r\n this.accept.emit({\r\n filter: {},\r\n externalFilter: this.initExternalFilter(this.externalFilters, {\r\n [field]: this.externalFilter[field]\r\n })\r\n });\r\n }\r\n }\r\n } else {\r\n this.accept.emit({\r\n filter: this.filter,\r\n externalFilter: this.externalFilter\r\n });\r\n }\r\n this.modal.close();\r\n }\r\n\r\n onClear() {\r\n delete this.selectedCode;\r\n this.clear.emit();\r\n }\r\n\r\n #loadConfiguration = async () => {\r\n this.quickFilters = [];\r\n if (!this.key) {\r\n return;\r\n }\r\n const { get, has } = this.settingService.create<FilterConfiguration>({\r\n prefix: this.keyPrefix,\r\n key: this.key\r\n });\r\n if (!await has()) {\r\n return;\r\n }\r\n const configuration = await get();\r\n if (Array.isArray(configuration?.quickFilters)) {\r\n this.quickFilters = configuration.quickFilters;\r\n }\r\n this.selectedCode = configuration?.selectedQuickFilter || '';\r\n this.inlineExternal = configuration?.inlineExternal || {};\r\n this.inlineColumn = configuration?.inlineColumn || {};\r\n for (const externalFilter of this.externalFilters) {\r\n if (this.inlineExternal[externalFilter.field] === undefined) {\r\n this.inlineExternal[externalFilter.field] = true;\r\n }\r\n }\r\n for (const column of this.columns) {\r\n if (this.inlineColumn[column.field] === undefined) {\r\n this.inlineColumn[column.field] = true;\r\n }\r\n }\r\n }\r\n\r\n async updateConfiguration(selectedQuickFilterCode?: string) {\r\n if (!this.key) {\r\n return;\r\n }\r\n if (selectedQuickFilterCode !== undefined) {\r\n this.selectedCode = selectedQuickFilterCode;\r\n }\r\n const { set } = this.settingService.create<FilterConfiguration>({\r\n prefix: this.keyPrefix,\r\n key: this.key\r\n });\r\n await set({\r\n quickFilters: this.quickFilters,\r\n selectedQuickFilter: this.selectedCode,\r\n inlineExternal: this.inlineExternal,\r\n inlineColumn: this.inlineColumn\r\n });\r\n this.loadInlineFilter.emit({\r\n quickFilters: this.quickFilters || [],\r\n selectedQuickFilter: this.selectedCode || '',\r\n inlineExternal: this.inlineExternal,\r\n inlineColumn: this.inlineColumn\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n onSelectionChange = (change: MatSelectChange) => {\r\n const value = change?.value || '';\r\n if (value === this.newQuickFilter) {\r\n this.selectedCode = '';\r\n this.onCreateQuickFilter();\r\n this.ref.detectChanges();\r\n } else {\r\n const quickFilter = this.quickFilters.find(e => e.code === value);\r\n if (quickFilter) {\r\n this.onDetailQuickFilter(quickFilter);\r\n }\r\n }\r\n }\r\n\r\n onCreateQuickFilter = (ev?: Event) => {\r\n ev?.stopPropagation();\r\n ev?.preventDefault();\r\n this.matSelect?.close();\r\n this.popupQuickFilterDetail.open(this.columns, this.externalFilters);\r\n }\r\n\r\n onDetailQuickFilter = async (quickFilter?: QuickFilter) => {\r\n if (quickFilter) {\r\n this.selectedCode = quickFilter.code;\r\n const f1 = JSON.stringify(quickFilter.filter);\r\n const f2 = JSON.stringify(quickFilter.externalFilter);\r\n this.filter = JSON.parse(f1);\r\n this.externalFilter = this.initExternalFilter(this.externalFilters, JSON.parse(f2));\r\n await this.updateConfiguration();\r\n }\r\n }\r\n\r\n onEditQuickFilter = (ev: Event, quickFilter?: QuickFilter) => {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.matSelect?.close();\r\n if (quickFilter) {\r\n this.popupQuickFilterDetail.open(this.columns,\r\n this.externalFilters,\r\n quickFilter.filter,\r\n quickFilter.externalFilter,\r\n quickFilter.code);\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n onDeleteQuickFilter = (ev: Event, quickFilter?: QuickFilter) => {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.matSelect?.close();\r\n if (quickFilter) {\r\n this.notifyService.confirm(this.translateService.translate('Remove filter')).then(async () => {\r\n if (quickFilter.code === this.selectedCode) {\r\n this.selectedCode = '';\r\n }\r\n const idx = this.quickFilters.findIndex(e => e.code === quickFilter.code);\r\n this.quickFilters.splice(idx, 1);\r\n await this.updateConfiguration();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n onAcceptQuickFilter = async (args: { code: string, filter: any, externalFilter: any }) => {\r\n const quickFilter = this.quickFilters.find(e => e.code === args.code);\r\n if (!quickFilter) {\r\n this.quickFilters.push({\r\n code: args.code,\r\n filter: args.filter,\r\n externalFilter: this.initExternalFilter(this.externalFilters, args.externalFilter)\r\n });\r\n } else {\r\n quickFilter.filter = args.filter;\r\n quickFilter.externalFilter = this.initExternalFilter(this.externalFilters, args.externalFilter);\r\n }\r\n await this.updateConfiguration();\r\n }\r\n\r\n onInlineChange = () => {\r\n this.updateConfiguration();\r\n }\r\n\r\n private initExternalFilter = (externalFilters: SdGridExternalFilter[], externalFilter: any) => {\r\n externalFilter = externalFilter || {};\r\n externalFilters = externalFilters || [];\r\n externalFilters.forEach(e => {\r\n if (e.type === 'string') {\r\n externalFilter[e.field] = externalFilter[e.field] ?? e.default ?? '';\r\n return;\r\n }\r\n if (e.type === 'number') {\r\n externalFilter[e.field] = externalFilter[e.field] ?? e.default ?? undefined;\r\n return;\r\n }\r\n if (e.type === 'daterange') {\r\n externalFilter[e.field] = {\r\n from: externalFilter[e.field]?.from ?? e.defaultFrom ?? undefined,\r\n to: externalFilter[e.field]?.to ?? e.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (e.type === 'numberrange') {\r\n externalFilter[e.field] = {\r\n from: externalFilter[e.field]?.from ?? e.defaultFrom ?? undefined,\r\n to: externalFilter[e.field]?.to ?? e.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (e.type === 'daterangefull') {\r\n externalFilter[e.field] = {\r\n from: externalFilter[e.field]?.from ?? e.defaultFrom ?? undefined,\r\n to: externalFilter[e.field]?.to ?? e.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (e.type === 'values') { // andn1\r\n externalFilter[e.field] = (externalFilter[e.field] || e.default) ?? '';\r\n return;\r\n }\r\n });\r\n return externalFilter;\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input } from '@angular/core';\r\nimport { SdGridColumn, SdGridExternalFilter } from '../../grid.model';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { QuickFilter } from '../grid-popup-filter/grid-popup-filter.model';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\n\r\n@Component({\r\n selector: 'sd-grid-popup-quick-filter-detail',\r\n templateUrl: './grid-popup-quick-filter-detail.component.html',\r\n styleUrls: ['./grid-popup-quick-filter-detail.component.scss']\r\n})\r\nexport class SdGridPopupQuickFilterDetail implements OnInit, AfterViewInit {\r\n displayKey = 'SDCUSTOM';\r\n isMobileOrTablet = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @Input() quickFilters: QuickFilter[];\r\n @Output() accept = new EventEmitter<any>();\r\n fields: Field[] = [];\r\n selectableFields: Field[] = [];\r\n columns: SdGridColumn[] = [];\r\n externalFilters: SdGridExternalFilter[] = [];\r\n filter: Filter = {};\r\n externalFilter: Filter = {};\r\n selectedField: {\r\n [key: string]: boolean;\r\n } = {};\r\n page: 1 | 2 = 1;\r\n code: string;\r\n constructor(\r\n deviceService: DeviceDetectorService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n open(columns: SdGridColumn[], externalFilters: SdGridExternalFilter[], filter?: Filter, externalFilter?: Filter, code?: string) {\r\n this.fields = [];\r\n this.filter = {};\r\n this.externalFilter = {};\r\n this.columns = columns;\r\n this.externalFilters = externalFilters;\r\n this.code = code;\r\n if (filter) {\r\n Object.keys(filter).forEach(key => {\r\n if (filter[key] === undefined || filter[key] === null || filter[key] === '') {\r\n return;\r\n }\r\n const column = columns.find(e => e.field === key);\r\n if (!column) {\r\n return;\r\n }\r\n this.filter[key] = filter[key];\r\n this.fields.push({\r\n ...column,\r\n id: 'column' + column.field,\r\n group: 'column',\r\n type: column.type,\r\n code: column.field,\r\n title: column.title\r\n });\r\n });\r\n }\r\n if (externalFilter) {\r\n Object.keys(externalFilter).forEach(key => {\r\n if (externalFilter[key] === undefined || externalFilter[key] === null || externalFilter[key] === '') {\r\n return;\r\n }\r\n if (key.startsWith(this.displayKey)) {\r\n this.externalFilter[key] = externalFilter[key];\r\n return;\r\n }\r\n const item = externalFilters.find(e => e.field === key);\r\n if (!item) {\r\n return;\r\n }\r\n if (item.type === 'daterange' || item.type === 'numberrange') {\r\n this.externalFilter[key] = { ...externalFilter[key] };\r\n if (!externalFilter[key]?.from && !externalFilter[key]?.to) {\r\n return;\r\n }\r\n this.fields.push({\r\n ...item,\r\n id: 'external' + item.field,\r\n group: 'external',\r\n type: item.type,\r\n code: item.field,\r\n title: item.title,\r\n fromTitle: item.fromTitle,\r\n toTitle: item.toTitle,\r\n });\r\n } else if (item.type === 'daterangefull') {\r\n this.externalFilter[key] = { ...externalFilter[key] };\r\n if (!externalFilter[key]?.from && !externalFilter[key]?.to) {\r\n return;\r\n }\r\n this.fields.push({\r\n ...item,\r\n id: 'external' + item.field,\r\n group: 'external',\r\n type: item.type,\r\n code: item.field,\r\n title: item.title\r\n });\r\n } else {\r\n this.externalFilter[key] = externalFilter[key];\r\n this.fields.push({\r\n ...item,\r\n id: 'external' + item.field,\r\n group: 'external',\r\n type: item.type,\r\n code: item.field,\r\n title: item.title\r\n });\r\n }\r\n });\r\n }\r\n const externalFields: Field[] = externalFilters?.map(e => ({\r\n ...e,\r\n id: 'external' + e.field,\r\n group: 'external',\r\n code: e.field,\r\n type: e.type,\r\n title: e.title\r\n })) || [];\r\n const columnFields: Field[] = [];\r\n columns?.filter(e => e.type !== 'image').forEach(column => {\r\n if ('children' in column) {\r\n column.children?.filter(e => e.type !== 'image').forEach(e => {\r\n columnFields.push({\r\n ...e,\r\n id: 'column' + e.field,\r\n group: 'column',\r\n code: e.field,\r\n type: e.type,\r\n title: e.title\r\n });\r\n });\r\n } else {\r\n columnFields.push({\r\n ...column,\r\n id: 'column' + column.field,\r\n group: 'column',\r\n code: column.field,\r\n type: column.type,\r\n title: column.title\r\n });\r\n }\r\n });\r\n this.selectableFields = [...externalFields, ...columnFields];\r\n this.selectedField = {};\r\n this.fields.forEach(e => this.selectedField[e.id] = true);\r\n this.page = this.fields.length > 0 ? 2 : 1;\r\n this.modal.open();\r\n }\r\n\r\n onAccept = () => {\r\n const execute = () => {\r\n const filter = {};\r\n const externalFilter = {};\r\n Object.keys(this.filter).forEach(key => {\r\n if (this.filter[key] === undefined || this.filter[key] === null || this.filter[key] === '') {\r\n return;\r\n }\r\n if (!this.fields.some(e => e.group === 'column' && e.code === key)) {\r\n return;\r\n }\r\n filter[key] = this.filter[key];\r\n });\r\n Object.keys(this.externalFilter).forEach(key => {\r\n if (this.externalFilter[key] === undefined || this.externalFilter[key] === null || this.externalFilter[key] === '') {\r\n return;\r\n }\r\n externalFilter[key] = this.externalFilter[key];\r\n });\r\n this.accept.emit({\r\n code: this.code,\r\n filter,\r\n externalFilter\r\n });\r\n this.modal.close();\r\n };\r\n if (!this.code) {\r\n this.notifyService.confirmWithInput('Enter your quick filter name').then((value: string) => {\r\n if (value) {\r\n if (this.quickFilters?.some(e => e.code === value)) {\r\n this.notifyService.notify.warning(this.translateService.translate('Code is existed'));\r\n return;\r\n }\r\n this.code = value;\r\n execute();\r\n }\r\n });\r\n } else {\r\n execute();\r\n }\r\n }\r\n\r\n onCancel = () => {\r\n this.modal.close();\r\n }\r\n\r\n onSelectField = (values: string[]) => {\r\n this.fields = this.selectableFields.filter(e => values.some(v => e.code === v));\r\n for (const field of this.fields) {\r\n if (field.group === 'external' && field.type.includes('range')) {\r\n this.externalFilter[field.code] = this.externalFilter[field.code] || {};\r\n }\r\n }\r\n }\r\n\r\n onSelectFields = () => {\r\n this.fields = this.selectableFields.filter(e => this.selectedField[e.id]);\r\n for (const field of this.fields) {\r\n if (field.group === 'external' && field.type.includes('range')) {\r\n this.externalFilter[field.code] = this.externalFilter[field.code] || {};\r\n }\r\n }\r\n }\r\n}\r\n\r\ninterface Field {\r\n id: string;\r\n group: 'column' | 'external';\r\n type: string;\r\n code: string;\r\n title?: string;\r\n fromTitle?: string;\r\n toTitle?: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface Filter {\r\n [field: string]: any;\r\n}\r\n","import { Component, OnInit, AfterViewInit, Input, ChangeDetectorRef } from '@angular/core';\r\n\r\nimport { SubOption } from '../../grid.model';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n\r\n@Component({\r\n selector: 'sd-grid-sub-information',\r\n templateUrl: './grid-sub-information.component.html',\r\n styleUrls: ['./grid-sub-information.component.scss']\r\n})\r\nexport class SdGridSubInformation implements OnInit, AfterViewInit {\r\n @Input() height = 'auto';\r\n @Input() option: SubOption;\r\n @Input() subItems: any[] = [];\r\n isMobileOrTablet: boolean;\r\n filter: any = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n deviceService: DeviceDetectorService\r\n ) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n updateFilter() {\r\n\r\n }\r\n trackById(index, item) {\r\n return item.id;\r\n }\r\n\r\n onEditorChange = () => {\r\n this.ref.detectChanges();\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { GridItem, GridColumnChildren } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-desktop-column-children-view',\r\n templateUrl: './grid-desktop-column-children-view.component.html',\r\n styleUrls: ['./grid-desktop-column-children-view.component.scss']\r\n})\r\nexport class GridDesktopColumnChildrenViewComponent {\r\n @Input() column: GridColumnChildren;\r\n @Input() item: GridItem;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridColumn } from '../grid.model';\r\n@Pipe({\r\n name: 'cellDesktopClassName'\r\n})\r\nexport class CellDesktopClassNamePipe implements PipeTransform {\r\n transform(value: any, rowData: GridItem, column: SdGridColumn, isChildren?: boolean): string {\r\n const classNames = [];\r\n if (column.click) {\r\n classNames.push('cursor-pointer');\r\n }\r\n if (isChildren) {\r\n classNames.push('c-children');\r\n }\r\n if (column.badge) {\r\n const badge = column.badge(rowData, value);\r\n if (badge) {\r\n classNames.push('c-badge');\r\n classNames.push('badge');\r\n if (badge === 'PRIMARY') {\r\n classNames.push('badge-primary');\r\n } else if (badge === 'SECONDARY') {\r\n classNames.push('badge-secondary');\r\n } else if (badge === 'WARNING') {\r\n classNames.push('badge-warning');\r\n } else if (badge === 'SUCCESS') {\r\n classNames.push('badge-success');\r\n } else if (badge === 'DANGER') {\r\n classNames.push('badge-danger');\r\n } else if (badge === 'LIGHT') {\r\n classNames.push('badge-light');\r\n } else if (badge === 'DARK') {\r\n classNames.push('badge-dark');\r\n }\r\n }\r\n }\r\n return classNames.join(' ');\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridColumn } from '../grid.model';\r\n\r\n@Pipe({\r\n name: 'cellMobileClassName'\r\n})\r\nexport class CellMobileClassNamePipe implements PipeTransform {\r\n transform(value: any, rowData: GridItem, column: SdGridColumn): string {\r\n const classNames = [];\r\n if (column.click) {\r\n classNames.push('cursor-pointer');\r\n }\r\n if (column.badge) {\r\n const badge = column.badge(rowData, value);\r\n if (badge) {\r\n classNames.push('badge');\r\n classNames.push('c-badge');\r\n if (badge === 'PRIMARY') {\r\n classNames.push('badge-primary');\r\n } else if (badge === 'SECONDARY') {\r\n classNames.push('badge-secondary');\r\n } else if (badge === 'WARNING') {\r\n classNames.push('badge-warning');\r\n } else if (badge === 'SUCCESS') {\r\n classNames.push('badge-success');\r\n } else if (badge === 'DANGER') {\r\n classNames.push('badge-danger');\r\n } else if (badge === 'LIGHT') {\r\n classNames.push('badge-light');\r\n } else if (badge === 'DARK') {\r\n classNames.push('badge-dark');\r\n }\r\n }\r\n }\r\n return classNames.join(' ');\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, ColumnCommand } from '../grid.model';\r\n@Pipe({\r\n name: 'columnCommandFilter'\r\n})\r\nexport class ColumnCommandFilterPipe implements PipeTransform {\r\n async transform(commands: ColumnCommand[], item: GridItem): Promise<ColumnCommand[]> {\r\n const results: ColumnCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n const { hiddenByItem } = command;\r\n if (!hiddenByItem) {\r\n results.push(command);\r\n } else {\r\n const hidden = hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (!await hidden) {\r\n results.push(command);\r\n }\r\n } else {\r\n if (!hidden) {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem } from '../grid.model';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n@Pipe({\r\n name: 'columnHtmlTemplate'\r\n})\r\nexport class ColumnHtmlTemplatePipe implements PipeTransform {\r\n private isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(value: any, rowData: GridItem, htmlTemplate: (value: any, rowData?: any, isMobileOrTablet?: boolean) => string): string {\r\n if (typeof (htmlTemplate) !== 'function') {\r\n return value;\r\n }\r\n return htmlTemplate(value, rowData, this.isMobileOrTablet);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'columnTitle'\r\n})\r\nexport class ColumnTitlePipe implements PipeTransform {\r\n async transform(item: GridItem, title: string, dynamicTitle: ((rowData: any) => string | Promise<string>)): Promise<string> {\r\n if (!title) {\r\n return '';\r\n }\r\n if (dynamicTitle) {\r\n const result = dynamicTitle(item);\r\n if (result instanceof Promise) {\r\n return (await result) || title;\r\n }\r\n return result || title;\r\n }\r\n return title;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class ColumnValuesPipe implements PipeTransform {\r\n private static cache: {\r\n [key: string]: {\r\n values: ValueData[],\r\n obj: {\r\n [key: string]: ValueData\r\n }\r\n }\r\n } = {};\r\n constructor(private utilityService: SdUtilityService) { }\r\n transform(value: any, values: ValueData[]): ValueData {\r\n const hashKey = hash(values);\r\n if (!ColumnValuesPipe.cache[hashKey]) {\r\n ColumnValuesPipe.cache[hashKey] = {\r\n values,\r\n obj: this.utilityService.arrayToObject(values, 'value')\r\n };\r\n }\r\n if (!ColumnValuesPipe.cache[hashKey].obj[value]) {\r\n return {\r\n value,\r\n text: value\r\n };\r\n }\r\n return ColumnValuesPipe.cache[hashKey].obj[value];\r\n\r\n }\r\n}\r\n\r\ninterface ValueData {\r\n value: string;\r\n text: string;\r\n icon?: string;\r\n color?: string;\r\n backgroundColor?: string;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'commandDisabled'\r\n})\r\nexport class CommandDisabledPipe implements PipeTransform {\r\n transform(disabled: boolean | ((item?: any) => boolean), item: GridItem): boolean {\r\n if (!disabled) {\r\n return false;\r\n }\r\n if (typeof (disabled) === 'boolean') {\r\n return disabled;\r\n }\r\n return disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridCommand, GridCommandNoChildren } from '../grid.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class CommandFilterPipe implements PipeTransform {\r\n async transform(commands: SdGridCommand[], item: GridItem): Promise<SdGridCommand[]> {\r\n const results: SdGridCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n if ('children' in command) {\r\n let flag = true;\r\n const { hiddenByItem } = command;\r\n if (hiddenByItem) {\r\n const hidden = hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (await hidden) {\r\n flag = false;\r\n }\r\n } else {\r\n if (hidden) {\r\n flag = false;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n const children: GridCommandNoChildren[] = [];\r\n for (const childCommand of command.children) {\r\n if (!childCommand.hiddenByItem) {\r\n children.push(childCommand);\r\n } else {\r\n const hidden = childCommand.hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (!await hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length) {\r\n results.push({\r\n ...command,\r\n children\r\n });\r\n }\r\n }\r\n } else {\r\n const { hiddenByItem } = command;\r\n if (!hiddenByItem) {\r\n results.push(command);\r\n } else {\r\n const hidden = hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (!await hidden) {\r\n results.push(command);\r\n }\r\n } else {\r\n if (!hidden) {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridCommand } from '../grid.model';\r\n@Pipe({\r\n name: 'commandHidden'\r\n})\r\nexport class CommandHidden implements PipeTransform {\r\n async transform(item: GridItem, command: SdGridCommand): Promise<boolean> {\r\n const { hidden, hiddenByItem } = command;\r\n if (hidden) {\r\n return true;\r\n }\r\n if (hiddenByItem) {\r\n const hiddenResult = hiddenByItem(item);\r\n if (hiddenResult instanceof Promise) {\r\n if (await hiddenResult) {\r\n return true;\r\n }\r\n } else {\r\n if (hiddenResult) {\r\n return true;\r\n }\r\n }\r\n }\r\n if ('children' in command) {\r\n const results = [];\r\n for (const childCommand of command.children) {\r\n const { hidden: childHidden, hiddenByItem: childHiddenByItem } = childCommand;\r\n if (!childHidden && !childHiddenByItem) {\r\n results.push(childCommand);\r\n } else {\r\n if (childHiddenByItem) {\r\n const hiddenResult = childHiddenByItem(item);\r\n if (hiddenResult instanceof Promise) {\r\n if (!await hiddenResult) {\r\n results.push(childCommand);\r\n }\r\n } else {\r\n if (!hiddenResult) {\r\n results.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (results.length === 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class CommandIconPipe implements PipeTransform {\r\n transform(icon: string | ((item?: any) => string), item: GridItem): string {\r\n if (!icon) {\r\n return '';\r\n }\r\n if (typeof (icon) === 'string') {\r\n return icon;\r\n }\r\n return icon(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class CommandTitlePipe implements PipeTransform {\r\n transform(title: string | ((item?: any) => string), item: GridItem): string {\r\n if (!title) {\r\n return '';\r\n }\r\n if (typeof (title) === 'string') {\r\n return title;\r\n }\r\n return title(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, DynamicEditorItem } from '../grid.model';\r\n@Pipe({\r\n name: 'editorDynamicItem'\r\n})\r\nexport class EditorDynamicItemPipe implements PipeTransform {\r\n private previous: Date;\r\n private previousResults: any[] = [];\r\n private delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện gọi hàm\r\n async transform(value: any, item: GridItem, editor: DynamicEditorItem) {\r\n if (!editor.dependOnField) {\r\n return editor.items || [];\r\n }\r\n this.previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.previous.getTime();\r\n if (dif < this.delay) {\r\n return this.previousResults;\r\n }\r\n const items = editor.items || [];\r\n if (typeof (items) === 'function') {\r\n const results = items(item, value);\r\n if (results instanceof Promise) {\r\n this.previousResults = await results;\r\n } else {\r\n this.previousResults = results;\r\n }\r\n } else {\r\n this.previousResults = items;\r\n }\r\n this.previousResults = this.previousResults || [];\r\n return this.previousResults;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridColumn, GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'editorSubInformationHandler'\r\n})\r\nexport class EditorSubInformationHandlerPipe implements PipeTransform {\r\n transform(value: any, item: GridItem, columns: SdGridColumn[]): boolean {\r\n const visible = (column: SdGridColumn) => {\r\n if (column.type === 'children') {\r\n return false;\r\n }\r\n let isDisabled = false;\r\n\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (column.editor) {\r\n isDisabled = typeof (column.editor.disabled) === 'function' ? column.editor.disabled(item) : column.editor.disabled;\r\n }\r\n // Nếu bị disabled return false\r\n if (isDisabled) {\r\n return false;\r\n }\r\n // Nếu bị disabled return false\r\n if (isDisabled) {\r\n return false;\r\n }\r\n\r\n // Hiển thị editor nếu dòng đó:\r\n // Đang được edit: editingStatus\r\n return item.editingStatus\r\n // Được thiết lập alwayDisplay\r\n || (column.editor && column.editor.alwayDisplay);\r\n };\r\n item.editorHandler = item.editorHandler || {};\r\n for (const column of columns) {\r\n item.editorHandler.disabled = false;\r\n item.editorHandler[column.field] = {};\r\n\r\n if (item.editorHandler.disabled) {\r\n item.editorHandler[column.field].visible = false;\r\n } else {\r\n item.editorHandler[column.field].visible = visible(column);\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'editorValidate'\r\n})\r\nexport class EditorValidatePipe implements PipeTransform {\r\n private previous: Date;\r\n private delay = 1000; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện validate\r\n async transform(value: string, item: GridItem, validate: (item: GridItem) => string | Promise<string>): Promise<boolean> {\r\n this.previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.previous.getTime();\r\n if (dif < this.delay) {\r\n return true;\r\n }\r\n item.editorHandler = item.editorHandler || {};\r\n if (!validate) {\r\n item.editorHandler.errorMessage = null;\r\n return true;\r\n }\r\n const result = validate(item);\r\n if (result instanceof Promise) {\r\n item.editorHandler.errorMessage = await result;\r\n return true;\r\n } else {\r\n item.editorHandler.errorMessage = result;\r\n return true;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridColumn, GridItem } from '../grid.model';\r\n\r\n@Pipe({\r\n name: 'filterMobile',\r\n pure: false\r\n})\r\nexport class FilterMobilePipe implements PipeTransform {\r\n transform(columns: SdGridColumn[], item: GridItem): SdGridColumn[] {\r\n // Những giá trị undefined, null và rỗng sẽ bỏ qua khi hiển thị trên mobile\r\n return columns.filter(column => (item[column.field] !== undefined\r\n && item[column.field] !== null\r\n && item[column.field] !== '')\r\n || column.htmlTemplate\r\n || column.type === 'children'\r\n || (column.type === 'string' && column.commands?.length > 0));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridCommand } from '../grid.model';\r\n@Pipe({\r\n name: 'mobileCommandFilter'\r\n})\r\nexport class MobileCommandFilterPipe implements PipeTransform {\r\n async transform(commands: SdGridCommand[], item: GridItem): Promise<SdGridCommand[]> {\r\n const results: SdGridCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n if ('children' in command) {\r\n let flag = true;\r\n const { hiddenByItem } = command;\r\n if (hiddenByItem) {\r\n const hidden = hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (await hidden) {\r\n flag = false;\r\n }\r\n } else {\r\n if (hidden) {\r\n flag = false;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n for (const childCommand of command.children) {\r\n if (!childCommand.hiddenByItem) {\r\n results.push(childCommand);\r\n } else {\r\n const hidden = childCommand.hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (!await hidden) {\r\n results.push(childCommand);\r\n }\r\n } else {\r\n if (!hidden) {\r\n results.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n const { hiddenByItem } = command;\r\n if (!hiddenByItem) {\r\n results.push(command);\r\n } else {\r\n const hidden = hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (!await hidden) {\r\n results.push(command);\r\n }\r\n } else {\r\n if (!hidden) {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridColumn } from '../grid.model';\r\n\r\n@Pipe({\r\n name: 'mobileViewHtmlTempate'\r\n})\r\nexport class MobileViewHtmlTemplatePipe implements PipeTransform {\r\n transform(rowData: GridItem, columns: SdGridColumn[], htmlTemplate: (rowData: any, columns?: SdGridColumn[]) => string): string {\r\n return htmlTemplate(rowData, columns);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridColumn } from '../grid.model';\r\nimport { DecimalPipe } from '@angular/common';\r\n@Pipe({\r\n name: 'valueTransform'\r\n})\r\nexport class ValueTransformPipe implements PipeTransform {\r\n constructor(private decimalPipe: DecimalPipe) {}\r\n transform(value: any, rowData: GridItem, column: SdGridColumn): string {\r\n if (column.transform) {\r\n return column.transform(value, rowData);\r\n } else if (column.type === 'number' && Number.isNumber(value)) {\r\n return this.decimalPipe.transform(value, '1.0-2');\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridColumn, GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'editorPopupVisible'\r\n})\r\nexport class EditorPopupVisiblePipe implements PipeTransform {\r\n transform(column: SdGridColumn, item: GridItem): boolean {\r\n if (column.type === 'children') {\r\n return false;\r\n }\r\n if (typeof (column.editor?.hidden) === 'boolean' && column.editor.hidden) {\r\n return false;\r\n }\r\n if (typeof (column.editor?.hidden) === 'function' && column.editor.hidden(item)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdSubHeaderDef]'\r\n})\r\nexport class SdSubHeaderDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, ViewChild, Input } from '@angular/core';\r\nimport { SdUploadExcel, SdUploadExcelColumn, SdUploadExcelOption } from '@sd-angular/core/upload-excel';\r\nimport { SdGridColumn } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-import-excel',\r\n templateUrl: './grid-import-excel.component.html'\r\n})\r\nexport class SdGridImportExcel {\r\n @Input() key: string;\r\n @Input() accept: (item: any[], successItems: any[], errorItems: any[], warningItems: []) => void | Promise<void>;\r\n @Input() set columns(gridColumns: SdGridColumn[]) {\r\n const columns: SdUploadExcelColumn[] = [];\r\n gridColumns.forEach(column => {\r\n if (column.ignoreImport) {\r\n return;\r\n }\r\n if (column.type === 'string' || column.type === 'color') {\r\n columns.push({\r\n type: 'string',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width\r\n });\r\n } else if (column.type === 'number') {\r\n columns.push({\r\n type: 'number',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width\r\n });\r\n } else if (column.type === 'bool') {\r\n columns.push({\r\n type: 'bool',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width\r\n });\r\n } else if (column.type === 'date') {\r\n columns.push({\r\n type: 'date',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width\r\n });\r\n } else if (column.type === 'datetime' || column.type === 'time') {\r\n columns.push({\r\n type: 'datetime',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width\r\n });\r\n } else if (column.type === 'values') {\r\n columns.push({\r\n type: 'values',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n values: column.values.map(e => e.value),\r\n });\r\n } else if (column.type === 'radio') {\r\n columns.push({\r\n type: 'radio',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n values: column.values.map(e => e[column.valueField])\r\n });\r\n }\r\n if (column.type === 'children' && column.children?.length) {\r\n column.children.forEach(childColumn => {\r\n if (childColumn.ignoreImport) {\r\n return;\r\n }\r\n if (childColumn.type === 'string' || childColumn.type === 'color') {\r\n columns.push({\r\n type: 'string',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width\r\n });\r\n } else if (childColumn.type === 'number') {\r\n columns.push({\r\n type: 'number',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width\r\n });\r\n } else if (childColumn.type === 'bool') {\r\n columns.push({\r\n type: 'bool',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width\r\n });\r\n } else if (childColumn.type === 'date') {\r\n columns.push({\r\n type: 'date',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width\r\n });\r\n } else if (childColumn.type === 'datetime' || childColumn.type === 'time') {\r\n columns.push({\r\n type: 'datetime',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width\r\n });\r\n } else if (childColumn.type === 'values') {\r\n columns.push({\r\n type: 'values',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width,\r\n values: childColumn.values.map(e => e.value),\r\n });\r\n } else if (childColumn.type === 'radio') {\r\n columns.push({\r\n type: 'radio',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width,\r\n values: childColumn.values.map(e => e[childColumn.valueField])\r\n });\r\n }\r\n });\r\n }\r\n });\r\n this.option = {\r\n key: `GridImport${this.key}`,\r\n columns,\r\n onAccept: this.accept\r\n };\r\n }\r\n option: SdUploadExcelOption;\r\n @ViewChild(SdUploadExcel) control: SdUploadExcel;\r\n constructor() { }\r\n\r\n open = () => {\r\n this.control?.open();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdGrid } from './grid.component';\r\nimport { SdDynamicItems } from './pipes/dynamic-items.pipe';\r\nimport { SdGridConfig } from './components/grid-config/grid-config.component';\r\nimport { SdGridDesktopColumnEdit } from './components/grid-desktop-column-edit/grid-desktop-column-edit.component';\r\nimport { SdGridDesktopColumnView } from './components/grid-desktop-column-view/grid-desktop-column-view.component';\r\nimport { SdGridDesktopInlineFilter } from './components/grid-desktop-inline-filter/grid-desktop-inline-filter.component';\r\nimport { SdGridMobileItemView } from './components/grid-mobile-item-view/grid-mobile-item-view.component';\r\nimport { SdGridPopupEditor } from './components/grid-popup-editor/grid-popup-editor.component';\r\nimport { SdGridPopupExportExcel } from './components/grid-popup-export-excel/grid-popup-export-excel.component';\r\nimport { SdGridPopupFilter } from './components/grid-popup-filter/grid-popup-filter.component';\r\nimport { SdGridPopupQuickFilterDetail } from './components/grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component';\r\nimport { SdGridSubInformation } from './components/grid-sub-information/grid-sub-information.component';\r\nimport { GridDesktopColumnChildrenViewComponent } from './components/grid-desktop-column-children-view/grid-desktop-column-children-view.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { CellDesktopClassNamePipe } from './pipes/cell-desktop-class-name.pipe';\r\nimport { CellMobileClassNamePipe } from './pipes/cell-mobile-class-name.pipe';\r\nimport { ColumnCommandFilterPipe } from './pipes/column-command-filter.pipe';\r\nimport { ColumnHtmlTemplatePipe } from './pipes/column-html-template.pipe';\r\nimport { ColumnTitlePipe } from './pipes/column-title.pipe';\r\nimport { ColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { CommandDisabledPipe } from './pipes/command-disabled.pipe';\r\nimport { CommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { CommandHidden } from './pipes/command-hidden.pipe';\r\nimport { CommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { CommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { EditorDynamicItemPipe } from './pipes/editor-dynamic-item.pipe';\r\nimport { EditorHandlerPipe } from './pipes/editor-handler.pipe';\r\nimport { EditorSubInformationHandlerPipe } from './pipes/editor-sub-information-handler.pipe';\r\nimport { EditorValidatePipe } from './pipes/editor-validate.pipe';\r\nimport { FilterMobilePipe } from './pipes/filter-mobile.pipe';\r\nimport { MobileCommandFilterPipe } from './pipes/mobile-command-filter';\r\nimport { MobileViewHtmlTemplatePipe } from './pipes/mobile-view-html-template.pipe';\r\nimport { ValueTransformPipe } from './pipes/value-transform.pipe';\r\nimport { EditorPopupVisiblePipe } from './pipes/editor-popup-visible.pipe';\r\nimport { SdCellDefDirective } from './directives/cell-def.directive';\r\nimport { SdCellEditorDefDirective } from './directives/cell-editor-def.directive';\r\nimport { SdCellFooterDevDirective } from './directives/cell-footer-def.directive';\r\nimport { SdSubHeaderDefDirective } from './directives/sub-information-header-def.directive';\r\nimport { SdGridImportExcel } from './components/grid-import-excel/grid-import-excel.component';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdUploadExcelModule } from '@sd-angular/core/upload-excel';\r\nimport { HandlerLocal } from './models/handler-local';\r\nimport { HandlerDotnet } from './models/handler-dotnet';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatSelectModule,\r\n MatCheckboxModule,\r\n SdUploadExcelModule,\r\n SdFormModule,\r\n SdServiceModule\r\n ],\r\n declarations: [\r\n SdGrid,\r\n SdGridConfig,\r\n SdGridDesktopColumnEdit,\r\n SdGridDesktopColumnView,\r\n SdGridDesktopInlineFilter,\r\n SdGridMobileItemView,\r\n SdGridPopupEditor,\r\n SdGridPopupExportExcel,\r\n SdGridPopupFilter,\r\n SdGridPopupQuickFilterDetail,\r\n SdGridSubInformation,\r\n SdGridImportExcel,\r\n\r\n GridDesktopColumnChildrenViewComponent,\r\n CellDesktopClassNamePipe,\r\n CellMobileClassNamePipe,\r\n ColumnCommandFilterPipe,\r\n ColumnHtmlTemplatePipe,\r\n ColumnTitlePipe,\r\n ColumnValuesPipe,\r\n CommandDisabledPipe,\r\n CommandFilterPipe,\r\n CommandHidden,\r\n CommandIconPipe,\r\n CommandTitlePipe,\r\n SdDynamicItems,\r\n EditorDynamicItemPipe,\r\n EditorHandlerPipe,\r\n EditorSubInformationHandlerPipe,\r\n EditorValidatePipe,\r\n FilterMobilePipe,\r\n MobileCommandFilterPipe,\r\n MobileViewHtmlTemplatePipe,\r\n ValueTransformPipe,\r\n EditorPopupVisiblePipe,\r\n\r\n SdCellDefDirective,\r\n SdCellEditorDefDirective,\r\n SdCellFooterDevDirective,\r\n SdSubHeaderDefDirective,\r\n ],\r\n exports: [\r\n SdGrid,\r\n SdCellDefDirective,\r\n SdCellEditorDefDirective,\r\n SdCellFooterDevDirective,\r\n SdSubHeaderDefDirective,\r\n ],\r\n providers: [\r\n HandlerLocal,\r\n HandlerDotnet,\r\n EditorHandlerPipe\r\n ]\r\n})\r\nexport class SdGridModule {\r\n}\r\n","export class QuickFilter {\r\n code: string;\r\n filter: {\r\n [field: string]: any\r\n };\r\n externalFilter: {\r\n [field: string]: any\r\n };\r\n}\r\n\r\nexport interface FilterConfiguration {\r\n selectedQuickFilter: string;\r\n quickFilters: QuickFilter[];\r\n inlineExternal: {\r\n [key: string]: boolean;\r\n };\r\n inlineColumn: {\r\n [key: string]: boolean;\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-grid.js","sources":["../../../../projects/sd-core/grid/src/lib/grid.model.ts","../../../../projects/sd-core/grid/src/lib/pipes/editor-handler.pipe.ts","../../../../projects/sd-core/grid/src/lib/models/grid-configuration.model.ts","../../../../projects/sd-core/grid/src/lib/directives/cell-def.directive.ts","../../../../projects/sd-core/grid/src/lib/directives/cell-footer-def.directive.ts","../../../../projects/sd-core/grid/src/lib/directives/cell-editor-def.directive.ts","../../../../projects/sd-core/grid/src/lib/models/handler-local.ts","../../../../projects/sd-core/grid/src/lib/models/handler-dotnet.ts","../../../../projects/sd-core/grid/src/lib/grid.component.ts","../../../../projects/sd-core/grid/src/lib/pipes/dynamic-items.pipe.ts","../../../../projects/sd-core/grid/src/lib/components/grid-config/grid-config.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-desktop-column-edit/grid-desktop-column-edit.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-desktop-column-view/grid-desktop-column-view.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-desktop-inline-filter/grid-desktop-inline-filter.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-mobile-item-view/grid-mobile-item-view.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-popup-editor/grid-popup-editor.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-popup-filter/grid-popup-filter.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-sub-information/grid-sub-information.component.ts","../../../../projects/sd-core/grid/src/lib/components/grid-desktop-column-children-view/grid-desktop-column-children-view.component.ts","../../../../projects/sd-core/grid/src/lib/pipes/cell-desktop-class-name.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/cell-mobile-class-name.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/column-command-filter.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/column-title.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/command-disabled.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/command-hidden.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/editor-dynamic-item.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/editor-sub-information-handler.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/editor-validate.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/filter-mobile.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/mobile-command-filter.ts","../../../../projects/sd-core/grid/src/lib/pipes/mobile-view-html-template.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/value-transform.pipe.ts","../../../../projects/sd-core/grid/src/lib/pipes/editor-popup-visible.pipe.ts","../../../../projects/sd-core/grid/src/lib/directives/sub-information-header-def.directive.ts","../../../../projects/sd-core/grid/src/lib/components/grid-import-excel/grid-import-excel.component.ts","../../../../projects/sd-core/grid/src/lib/grid.module.ts","../../../../projects/sd-core/grid/src/lib/components/grid-popup-filter/grid-popup-filter.model.ts","../../../../projects/sd-core/grid/sd-angular-core-grid.ts"],"names":[],"mappings":"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","sourcesContent":["import { IHandlerServer } from './models/handler';\r\nimport { Observable } from 'rxjs';\r\nimport { SdGridFilterInfo } from './models/filter-info.model';\r\n\r\nexport declare type SdGridOption =\r\n GridLocalOption |\r\n GridDotnetOption |\r\n GridCustomOption;\r\n\r\nexport declare type SdGridCommand = GridCommandNoChildren | GridCommandWithChildren;\r\n\r\nexport declare type SdGridColumn =\r\n GridColumnText |\r\n GridColumnColor |\r\n GridColumnNumber |\r\n GridColumnBool |\r\n GridColumnDate |\r\n GridColumnDateTime |\r\n GridColumnTime |\r\n GridColumnValues |\r\n GridColumnRadio |\r\n GridColumnImage |\r\n GridColumnChildren;\r\n\r\nexport declare type SdGridExternalFilter =\r\n GridExternalFilterText |\r\n GridExternalFilterDate |\r\n GridExternalFilterDateRange |\r\n GridExternalFilterDateRangeFull |\r\n GridExternalFilterNumber |\r\n GridExternalFilterNumberRange |\r\n GridExternalFilterValues |\r\n GridExternalFilterRadio |\r\n GridExternalFilterBool |\r\n GridExternalFilterCustom;\r\n\r\nexport const defaultGridOption: SdGridOption = {\r\n type: undefined,\r\n items: [],\r\n filter: {\r\n type: 'inline',\r\n disabled: false\r\n },\r\n sortable: true,\r\n paginate: {\r\n pageSize: 50,\r\n pageCount: 5\r\n },\r\n commands: [],\r\n columns: []\r\n};\r\n\r\nexport interface SdGridBaseOption {\r\n height?: string;\r\n key?: string;\r\n filter?: GridBaseOptionFilter;\r\n checkable?: boolean;\r\n sortable?: boolean;\r\n numberable?: boolean;\r\n editor?: {\r\n type?: 'focus' | 'inline' | 'popup',\r\n addable?: boolean;\r\n editable?: boolean;\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n limit?: number;\r\n onAdd?: (rowData: any) => void,\r\n onEdit?: (rowData: any) => void,\r\n onSave?: (rowData: any) => void | Promise<void>,\r\n validate?: (rowData: any) => string | Promise<string>\r\n };\r\n paginate?: {\r\n pageSize?: number,\r\n pageCount?: number\r\n };\r\n export?: GridBaseOptionExport;\r\n translate?: boolean;\r\n hideFooter?: boolean;\r\n hideReload?: boolean;\r\n commands?: SdGridCommand[];\r\n columns: SdGridColumn[];\r\n subInformation?: SubOption;\r\n mobileOrTablet?: {\r\n useGridView?: boolean;\r\n htmlTemplate?: (rowData: any, columns?: SdGridColumn[]) => string;\r\n };\r\n // events\r\n onClickRow?: (rowData: any) => void;\r\n onDblClickRow?: (rowData: any) => void;\r\n onCheck?: (items: any[], rowData?: any) => void;\r\n onImportExcel?: (items: any[]) => void;\r\n onReloadCompleted?: (items: any[]) => Promise<void> | void;\r\n}\r\n\r\nexport interface GridBaseOptionExport {\r\n disabled?: boolean;\r\n fileName?: string;\r\n validator?: (fileName: string) => string;\r\n items?: (filterInfo: SdGridFilterInfo) => Promise<any[]>;\r\n mapping?: (items: any[], fileName?: string) => any[] | Promise<any[]>;\r\n columns?: SdGridColumn[];\r\n bigExport?: boolean;\r\n sheets?: {\r\n name: string,\r\n items: any[] | (() => Promise<any[]>),\r\n fields: string[]\r\n }[];\r\n}\r\n\r\nexport interface GridBaseOptionFilter {\r\n type?: 'inline' | 'popup';\r\n columnInline?: 'outside';\r\n disabled?: boolean;\r\n customFilter?: any | (() => any);\r\n externalFilters?: SdGridExternalFilter[];\r\n quickFilterVisibility?: 'inline' | 'popup' | 'none';\r\n multiple?: boolean;\r\n}\r\n\r\ninterface GridLocalOption extends SdGridBaseOption {\r\n type: 'local';\r\n items: any[] | (() => any[] | Promise<any[]>);\r\n}\r\n\r\ninterface GridDotnetOption extends SdGridBaseOption {\r\n type: 'dotnet';\r\n method?: 'POST' | 'GET';\r\n url: string;\r\n handler?: {\r\n beforeRequest: (filterInfo: SdGridFilterInfo) => Promise<SdGridFilterInfo>;\r\n afterResponse: (items: any[], total: number) => Promise<{ items: any[], total: number }>;\r\n };\r\n}\r\n\r\ninterface GridCustomOption extends SdGridBaseOption {\r\n type: 'custom';\r\n url: string;\r\n method?: 'POST' | 'GET';\r\n handlerCustom?: IHandlerServer;\r\n}\r\n\r\ninterface GridCommandBase {\r\n title?: string | ((rowData?: any) => string);\r\n translate?: boolean;\r\n disabled?: boolean | ((rowData?: any) => boolean);\r\n hidden?: boolean | (() => boolean);\r\n hiddenByItem?: ((rowData: any) => boolean) | ((rowData: any) => Promise<boolean>);\r\n}\r\n\r\nexport interface GridCommandNoChildren extends GridCommandBase {\r\n icon: string | ((rowData?: any) => string);\r\n fontSet?: 'material-icons' |\r\n 'material-icons-outlined' |\r\n 'material-icons-outlined' |\r\n 'material-icons-round' |\r\n 'material-icons-sharp';\r\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning';\r\n click?: (rowData?: any) => void;\r\n}\r\n\r\nexport interface GridCommandWithChildren extends GridCommandBase {\r\n icon?: string | ((rowData?: any) => string);\r\n children?: GridCommandNoChildren[];\r\n}\r\n\r\ninterface GridBaseColumn {\r\n field: string;\r\n title: string;\r\n translate?: boolean;\r\n description?: string;\r\n width?: string;\r\n fixed?: boolean;\r\n format?: string;\r\n hidden?: boolean | (() => boolean);\r\n htmlTemplate?: (value: any, rowData?: any, isMobileOrTablet?: boolean) => string;\r\n transform?: (value: any, rowData?: any) => string;\r\n badge?: ((rowData?: any, value?: any) => 'PRIMARY' | 'SECONDARY' | 'INFO' | 'SUCCESS' | 'WARNING' | 'DANGER' | 'LIGHT' | 'DARK');\r\n click?: (value: any, rowData?: any) => void | Promise<void>;\r\n ignoreImport?: boolean;\r\n sortable?: boolean;\r\n align?: 'left' | 'center' | 'right';\r\n filter?: {\r\n disabled?: boolean;\r\n priority?: 'low';\r\n };\r\n}\r\n\r\nexport interface EditorHandler {\r\n [column: string]: {\r\n visible?: boolean | 'create' | 'update',\r\n items?: any[] | Observable<any[]>\r\n };\r\n}\r\n\r\nexport interface GridItem {\r\n blinker?: any;\r\n originItem?: any;\r\n temporary?: any;\r\n isChecked?: boolean;\r\n editingStatus?: 'create' | 'update';\r\n editorHandler?: EditorHandler & {\r\n disabled?: boolean;\r\n errorMessage?: string;\r\n saving?: boolean;\r\n };\r\n subInformation?: {\r\n isOpened?: boolean;\r\n isLoaded?: boolean;\r\n isLoading?: boolean;\r\n subItems?: any[];\r\n };\r\n [key: string]: any;\r\n}\r\n\r\nexport interface ColumnCommand {\r\n icon: string | ((rowData?: any) => string);\r\n title?: string | ((rowData?: any) => string);\r\n click: (rowData: GridItem) => void | Promise<void>;\r\n hiddenByItem?: ((rowData: any) => boolean) | ((rowData: any) => Promise<boolean>);\r\n}\r\n\r\ninterface GridColumnText extends GridBaseColumn {\r\n type: 'string';\r\n commands?: ColumnCommand[];\r\n editor?: {\r\n autocomplete?: boolean,\r\n alwayDisplay?: boolean,\r\n click?: (rowData: any) => void,\r\n change?: (rowData: any, value?: any, selected?: any | any[]) => void,\r\n keyupEnter?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n item?: DynamicEditorItem,\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string\r\n };\r\n}\r\n\r\ninterface GridColumnColor extends GridBaseColumn {\r\n type: 'color';\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string\r\n };\r\n}\r\n\r\ninterface GridColumnNumber extends GridBaseColumn {\r\n type: 'number';\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n click?: (rowData: any) => void,\r\n change?: (rowData: any) => void,\r\n keyupEnter?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: number\r\n };\r\n}\r\n\r\ninterface GridColumnBool extends GridBaseColumn {\r\n type: 'bool';\r\n // properties for bool type\r\n trueValue?: string;\r\n falseValue?: string;\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n click?: (rowData: any) => void,\r\n change?: (rowData: any) => void,\r\n keyupEnter?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: boolean\r\n };\r\n}\r\n\r\ninterface GridColumnDate extends GridBaseColumn {\r\n type: 'date';\r\n timeDifferent?: 'second' | 'minute' | 'hour';\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any) => void,\r\n keyupEnter?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string | Date\r\n };\r\n}\r\n\r\ninterface GridColumnDateTime extends GridBaseColumn {\r\n type: 'datetime';\r\n timeDifferent?: 'second' | 'minute' | 'hour' | 'day' | 'month';\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any) => void,\r\n keyupEnter?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string | Date\r\n };\r\n}\r\n\r\ninterface GridColumnTime extends GridBaseColumn {\r\n type: 'time';\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any) => void,\r\n keyupEnter?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string | Date\r\n };\r\n}\r\n\r\ninterface GridColumnValues extends GridBaseColumn {\r\n type: 'values';\r\n values: {\r\n value: string,\r\n text: string,\r\n icon?: string,\r\n color?: string,\r\n backgroundColor?: string\r\n }[];\r\n dictionary?: {\r\n [value: string]: {\r\n text: string,\r\n icon?: string,\r\n color?: string,\r\n backgroundColor?: string\r\n }\r\n };\r\n editor?: {\r\n autocomplete?: boolean,\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any, value?: any, selected?: any | any[]) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n item?: DynamicEditorItem,\r\n required?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string | number\r\n };\r\n}\r\n\r\ninterface GridColumnRadio extends GridBaseColumn {\r\n type: 'radio';\r\n values?: any[];\r\n valueField: string;\r\n displayField: string;\r\n editor?: {\r\n required?: boolean;\r\n values?: {\r\n value: string,\r\n text: string,\r\n }[];\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean),\r\n defaultValue?: string | number\r\n };\r\n}\r\n\r\ninterface GridColumnImage extends GridBaseColumn {\r\n type: 'image';\r\n display: {\r\n height: number,\r\n width: number\r\n };\r\n editor?: {\r\n alwayDisplay?: boolean,\r\n change?: (rowData: any) => void,\r\n hidden?: boolean | ((rowData: any) => boolean),\r\n disabled?: boolean | ((rowData: any) => boolean)\r\n };\r\n}\r\n\r\nexport type GridColumnChild = (Exclude<SdGridColumn, GridColumnChildren>\r\n & { dynamicTitle?: (rowData: any) => string | Promise<string>, colSpan: 1 | 2 });\r\n\r\nexport interface GridColumnChildren extends GridBaseColumn {\r\n type: 'children';\r\n children: GridColumnChild[];\r\n}\r\n\r\ninterface GridBaseExternalFilter {\r\n field: string;\r\n priority?: 'low';\r\n disabled?: boolean;\r\n}\r\n\r\ninterface GridExternalFilterText extends GridBaseExternalFilter {\r\n type: 'string';\r\n title: string;\r\n default?: string;\r\n}\r\n\r\ninterface GridExternalFilterDate extends GridBaseExternalFilter {\r\n type: 'date';\r\n title: string;\r\n default?: Date | string;\r\n}\r\n\r\ninterface GridExternalFilterDateRange extends GridBaseExternalFilter {\r\n type: 'daterange';\r\n title: string;\r\n fromTitle: string;\r\n toTitle: string;\r\n enableTime?: boolean;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n defaultFrom?: Date | string;\r\n defaultTo?: Date | string;\r\n}\r\n\r\ninterface GridExternalFilterDateRangeFull extends GridBaseExternalFilter {\r\n type: 'daterangefull';\r\n title: string;\r\n enableTime?: boolean;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n defaultFrom?: Date | string;\r\n defaultTo?: Date | string;\r\n}\r\n\r\ninterface GridExternalFilterNumber extends GridBaseExternalFilter {\r\n type: 'number';\r\n title: string;\r\n default?: number;\r\n}\r\n\r\ninterface GridExternalFilterNumberRange extends GridBaseExternalFilter {\r\n type: 'numberrange';\r\n title: string;\r\n fromTitle: string;\r\n toTitle: string;\r\n defaultFrom?: Date | string;\r\n defaultTo?: Date | string;\r\n}\r\n\r\ninterface GridExternalFilterValues extends GridBaseExternalFilter {\r\n type: 'values';\r\n title: string;\r\n values: any[] | ((searchText?: string) => Promise<any[]>);\r\n valueField: string;\r\n displayField: string;\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n default?: string;\r\n}\r\n\r\ninterface GridExternalFilterRadio extends GridBaseExternalFilter {\r\n type: 'radio';\r\n title: string;\r\n values: any[];\r\n valueField: string;\r\n displayField: string;\r\n}\r\n\r\ninterface GridExternalFilterBool extends GridBaseExternalFilter {\r\n type: 'bool';\r\n title: string;\r\n trueValue?: string;\r\n falseValue?: string;\r\n}\r\n\r\ninterface GridExternalFilterCustom extends GridBaseExternalFilter {\r\n type: 'custom';\r\n title: string;\r\n onLoad?: (externalFilter: any, valueKey?: string, displayKey?: string) => { valueKey?: string, displayKey?: string };\r\n onClick: (externalFilter: any, valueKey?: string, displayKey?: string) => void;\r\n}\r\n\r\n// subInformation\r\nexport type SubOption = SubInformationDisabledLazyLoading | SubInformationEnabledLazyLoading;\r\ninterface BaseSubInformation {\r\n height?: string;\r\n commands?: SdGridCommand[];\r\n columns: (SdGridColumn & { title: string | ((rowData: any) => string) })[];\r\n}\r\ninterface SubInformationDisabledLazyLoading extends BaseSubInformation {\r\n lazyLoading: false;\r\n field: string;\r\n}\r\ninterface SubInformationEnabledLazyLoading extends BaseSubInformation {\r\n lazyLoading: true;\r\n onLoad: (rowData: any) => Promise<any[]>;\r\n}\r\n\r\nexport interface DynamicEditorItem {\r\n value: string;\r\n display: string;\r\n items: any[] | ((rowData?: any, value?: any) => any[] | Promise<any[]>);\r\n dependOnField?: string;\r\n}\r\n\r\n\r\nexport interface MobileConfiguration {\r\n htmlTemplate: (rowData?: any, columns?: SdGridColumn[]) => string;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridColumn, SdGridOption, GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'editorHandler'\r\n})\r\nexport class EditorHandlerPipe implements PipeTransform {\r\n transform(value: any, item: GridItem, gridOption: SdGridOption): boolean {\r\n const visible = (column: SdGridColumn) => {\r\n if (column.type === 'children') {\r\n return false;\r\n }\r\n let isDisabled = false;\r\n\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (column.editor) {\r\n isDisabled = typeof (column.editor.disabled) === 'function' ? column.editor.disabled(item) : column.editor.disabled;\r\n }\r\n // Nếu bị disabled return false\r\n if (isDisabled) {\r\n return false;\r\n }\r\n\r\n if (typeof (gridOption.editor?.disabled) === 'function') {\r\n isDisabled = gridOption.editor.disabled(item);\r\n } else {\r\n isDisabled = gridOption.editor?.disabled;\r\n }\r\n // Nếu bị disabled return false\r\n if (isDisabled) {\r\n return false;\r\n }\r\n\r\n // Hiển thị editor nếu dòng đó:\r\n // Đang được edit: editingStatus\r\n return item.editingStatus\r\n // Được thiết lập alwayDisplay\r\n || column.editor?.alwayDisplay\r\n // Editable có thuộc tính type inline\r\n || gridOption.editor?.type === 'inline';\r\n };\r\n item.editorHandler = item.editorHandler || {};\r\n for (const column of gridOption.columns) {\r\n item.editorHandler.disabled = false;\r\n item.editorHandler[column.field] = {};\r\n if (typeof (gridOption.editor) === 'object') {\r\n if (typeof (gridOption.editor.disabled) === 'function') {\r\n item.editorHandler.disabled = gridOption.editor.disabled(item);\r\n } else {\r\n item.editorHandler.disabled = gridOption.editor.disabled;\r\n }\r\n } else {\r\n item.editorHandler.disabled = false;\r\n }\r\n\r\n if (item.editorHandler.disabled) {\r\n item.editorHandler[column.field].visible = false;\r\n } else {\r\n item.editorHandler[column.field].visible = visible(column);\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { IHandlerServer } from './handler';\r\n\r\nexport interface IGridConfiguration {\r\n filter?: {\r\n type?: 'inline' | 'popup',\r\n columnInline?: 'outside',\r\n quickFilterVisibility?: 'inline' | 'popup' | 'none'\r\n };\r\n style?: {\r\n bordered?: boolean;\r\n stripped?: boolean;\r\n };\r\n translate?: boolean;\r\n handlerCustom?: IHandlerServer;\r\n}\r\n\r\nexport const GRID_CONFIG = new InjectionToken<IGridConfiguration>('grid.configuration');\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdCellDef]'\r\n})\r\nexport class SdCellDefDirective {\r\n @Input() sdCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdCellFooterDef]'\r\n})\r\nexport class SdCellFooterDevDirective {\r\n @Input() sdCellFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdCellEditorDef]'\r\n})\r\nexport class SdCellEditorDefDirective {\r\n @Input() sdCellEditorDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { SdGridFilterInfo } from '../models/filter-info.model';\r\nimport { IHandlerLocal } from './handler';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Injectable()\r\nexport class HandlerLocal implements IHandlerLocal {\r\n constructor(private datePipe: DatePipe) { }\r\n filter = (localItems: any[], filterInfo: SdGridFilterInfo) => {\r\n const items = localItems.filter(item => {\r\n for (const column of filterInfo.columns) {\r\n const filterValue: string = (filterInfo.rawFilter[column.field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[column.field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n if (column.type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (column.type === 'values' || column.type === 'radio') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (column.type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (column.type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (column.type === 'date' || column.type === 'datetime') {\r\n const date = this.datePipe.transform(filterValue, 'yyyy/MM/dd');\r\n const fromDate = new Date(date);\r\n const toDate = new Date(date);\r\n toDate.setDate(toDate.getDate() + 1);\r\n if (new Date(columnValue).getTime() < fromDate.getTime() || new Date(columnValue).getTime() >= toDate.getTime()) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (filterInfo.orderBy && filterInfo.orderDirection) {\r\n const column = filterInfo.columns.find(e => e.field === filterInfo.orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((current, next) => {\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (filterInfo.orderDirection === 'DESC') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items,\r\n total: items.length\r\n };\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { SdGridFilterInfo } from '../models/filter-info.model';\r\nimport { IHandlerServer } from './handler';\r\nimport { SdGridColumn, GridColumnChildren } from '../grid.model';\r\n\r\n@Injectable()\r\nexport class HandlerDotnet implements IHandlerServer {\r\n mapRequest = (filterInfo: SdGridFilterInfo) => {\r\n const result = {\r\n whereClause: '1>0',\r\n pageSize: filterInfo.pageSize,\r\n pageNumber: filterInfo.pageNumber,\r\n orderBy: filterInfo.orderBy,\r\n orderDirection: filterInfo.orderDirection,\r\n filter: {},\r\n externalFilter: {}\r\n };\r\n if (filterInfo.customFilter) {\r\n // Nếu custom filter là string\r\n if (typeof (filterInfo.customFilter) === 'string') {\r\n result.whereClause += ` AND ${filterInfo.customFilter}`;\r\n } else if (typeof (filterInfo.customFilter) === 'function') {\r\n result.whereClause += ` AND ${filterInfo.customFilter()}`;\r\n }\r\n }\r\n const executeColumnNoChildren = (column: Exclude<SdGridColumn, GridColumnChildren>) => {\r\n if (!filterInfo.rawFilter[column.field] && filterInfo.rawFilter[column.field] !== 0) {\r\n return;\r\n }\r\n result.filter[column.field] = filterInfo.rawFilter[column.field];\r\n if (column.type === 'string') {\r\n const filterValue: string = (filterInfo.rawFilter[column.field] ?? '').toString();\r\n if (this.#isGuid(filterValue)) {\r\n result.whereClause += ` AND ${column.field} = GUID(\"${filterInfo.rawFilter[column.field]}\")`;\r\n } else if (filterValue.startsWith('!=')) {\r\n result.whereClause += ` AND ${column.field} != \"${filterValue.substring(2, filterValue.length)}\"`;\r\n } else if (filterValue.startsWith('=')) {\r\n result.whereClause += ` AND ${column.field} = \"${filterValue.substring(1, filterValue.length)}\"`;\r\n } else if (filterValue.startsWith('%')) {\r\n result.whereClause += ` AND ${column.field}.EndsWith(\"${filterValue.substring(1, filterValue.length)}\")`;\r\n } else if (filterValue.endsWith('%')) {\r\n result.whereClause += ` AND ${column.field}.StartsWith(\"${filterValue.substring(0, filterValue.length - 1)}\")`;\r\n } else {\r\n result.whereClause += ` AND ${column.field}.Contains(\"${filterValue}\")`;\r\n }\r\n } else if (column.type === 'number') {\r\n const value = +(filterInfo.rawFilter[column.field].replace('>=', '').replace('<=', '').replace('>', '').replace('<', '').trim());\r\n if (filterInfo.rawFilter[column.field].indexOf('>=') > -1) {\r\n result.whereClause += ` AND ${column.field} >= ${value}`;\r\n } else if (filterInfo.rawFilter[column.field].indexOf('<=') > -1) {\r\n result.whereClause += ` AND ${column.field} <= ${value}`;\r\n } else if (filterInfo.rawFilter[column.field].indexOf('>') > -1) {\r\n result.whereClause += ` AND ${column.field} > ${value}`;\r\n } else if (filterInfo.rawFilter[column.field].indexOf('<') > -1) {\r\n result.whereClause += ` AND ${column.field} < ${value}`;\r\n } else {\r\n result.whereClause += ` AND ${column.field} = ${value}`;\r\n }\r\n } else if (column.type === 'bool') {\r\n if (filterInfo.rawFilter[column.field] === '0' || filterInfo.rawFilter[column.field] === '1') {\r\n result.whereClause += ` AND ${column.field} = ${filterInfo.rawFilter[column.field] === '1' ? 'true' : 'false'}`;\r\n }\r\n } else if (column.type === 'values') {\r\n if (filterInfo.rawFilter[column.field]) {\r\n if (this.#isGuid(filterInfo.rawFilter[column.field])) {\r\n result.whereClause += ` AND ${column.field} = GUID(\"${filterInfo.rawFilter[column.field]}\")`;\r\n } else if (typeof (filterInfo.rawFilter[column.field]) === 'string') {\r\n result.whereClause += ` AND ${column.field} = \"${filterInfo.rawFilter[column.field]}\"`;\r\n } else {\r\n result.whereClause += ` AND ${column.field} = ${filterInfo.rawFilter[column.field]}`;\r\n }\r\n }\r\n } else if (column.type === 'radio') {\r\n if (filterInfo.rawFilter[column.field]) {\r\n result.whereClause += ` AND ${column.field} = \"${filterInfo.rawFilter[column.field]}\"`;\r\n }\r\n } else if (column.type === 'date' || column.type === 'datetime') {\r\n // \"DateTime(yyyy,mm,dd,HH,mm,ss)\"\r\n // generate fromDate, toDate\r\n let date = new Date(filterInfo.rawFilter[column.field]);\r\n\r\n // From Date\r\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\r\n result.whereClause += ` AND ${column.field} >= DateTime(${date.getFullYear()},${date.getMonth() + 1},${date.getDate()})`;\r\n\r\n // To Date\r\n date.setDate(date.getDate() + 1);\r\n result.whereClause += ` AND ${column.field} < DateTime(${date.getFullYear()},${date.getMonth() + 1},${date.getDate()})`;\r\n }\r\n };\r\n const executeColumnChildren = (columnChildren: GridColumnChildren) => {\r\n let flag = false;\r\n for (const column of columnChildren.children) {\r\n if (filterInfo.rawFilter[column.field] || filterInfo.rawFilter[column.field] === 0) {\r\n executeColumnNoChildren(column);\r\n flag = true;\r\n }\r\n }\r\n if (flag) {\r\n return;\r\n }\r\n if (!filterInfo.rawFilter[columnChildren.field]) {\r\n return;\r\n }\r\n result.filter[columnChildren.field] = filterInfo.rawFilter[columnChildren.field];\r\n let whereClause = '';\r\n const filterValue: string = (filterInfo.rawFilter[columnChildren.field] ?? '').toString().trim();\r\n for (const column of columnChildren.children) {\r\n if (column.type === 'string') {\r\n if (this.#isGuid(filterValue)) {\r\n whereClause += ` OR ${column.field} = GUID(\"${filterValue}\")`;\r\n } else if (filterValue.startsWith('!=')) {\r\n whereClause += ` OR ${column.field} != \"${filterValue.substring(2, filterValue.length)}\"`;\r\n } else if (filterValue.startsWith('=')) {\r\n whereClause += ` OR ${column.field} = \"${filterValue.substring(1, filterValue.length)}\"`;\r\n } else if (filterValue.startsWith('%')) {\r\n whereClause += ` OR ${column.field}.EndsWith(\"${filterValue.substring(1, filterValue.length)}\")`;\r\n } else if (filterValue.endsWith('%')) {\r\n whereClause += ` OR ${column.field}.StartsWith(\"${filterValue.substring(0, filterValue.length - 1)}\")`;\r\n } else {\r\n whereClause += ` OR ${column.field}.Contains(\"${filterValue}\")`;\r\n }\r\n } else if (column.type === 'number') {\r\n const value = +(filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '').trim());\r\n if (!Number.isNaN(value)) {\r\n if (filterValue.indexOf('>=') > -1) {\r\n whereClause += ` OR ${column.field} >= ${value}`;\r\n } else if (filterValue.indexOf('<=') > -1) {\r\n whereClause += ` OR ${column.field} <= ${value}`;\r\n } else if (filterValue.indexOf('>') > -1) {\r\n whereClause += ` OR ${column.field} > ${value}`;\r\n } else if (filterValue.indexOf('<') > -1) {\r\n whereClause += ` OR ${column.field} < ${value}`;\r\n } else {\r\n whereClause += ` OR ${column.field} = ${value}`;\r\n }\r\n }\r\n } else if (column.type === 'bool') {\r\n if (filterValue === '0' || filterValue === '1') {\r\n whereClause += ` OR ${column.field} = ${filterValue === '1' ? 'true' : 'false'}`;\r\n }\r\n } else if (column.type === 'values') {\r\n if (this.#isGuid(filterValue)) {\r\n whereClause += ` OR ${column.field} = GUID(\"${filterValue}\")`;\r\n } if (typeof (filterInfo.rawFilter[column.field]) === 'string') {\r\n whereClause += ` OR ${column.field} = \"${filterValue}\"`;\r\n } else {\r\n whereClause += ` OR ${column.field} = ${filterValue}`;\r\n }\r\n } else if (column.type === 'radio') {\r\n if (filterValue) {\r\n whereClause += ` OR ${column.field} = \"${filterValue}\"`;\r\n }\r\n } else if (column.type === 'date' || column.type === 'datetime') {\r\n // \"DateTime(yyyy,mm,dd,HH,mm,ss)\"\r\n // generate fromDate, toDate\r\n if (Date.isDate(filterValue)) {\r\n let date = new Date(filterValue);\r\n\r\n // From Date\r\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\r\n whereClause += ` OR (${column.field} >= DateTime(${date.getFullYear()},${date.getMonth() + 1},${date.getDate()})`;\r\n\r\n // To Date\r\n date.setDate(date.getDate() + 1);\r\n whereClause += ` AND ${column.field} < DateTime(${date.getFullYear()},${date.getMonth() + 1},${date.getDate()}))`;\r\n }\r\n }\r\n }\r\n if (whereClause.trim().startsWith('OR')) {\r\n whereClause = whereClause.trim().substr(2).trim();\r\n result.whereClause += ` AND(${whereClause})`;\r\n }\r\n };\r\n filterInfo.columns.forEach(column => {\r\n if (column.type !== 'children') {\r\n executeColumnNoChildren(column);\r\n } else {\r\n executeColumnChildren(column);\r\n }\r\n });\r\n filterInfo.externalFilters?.forEach(externalFilter => {\r\n const { field, type } = externalFilter;\r\n if (type === 'daterangefull') {\r\n result.externalFilter[field] = filterInfo.rawExternalFilter?.[field];\r\n if (result.externalFilter[field]?.from && result.externalFilter[field]?.to) {\r\n const fromDate = new Date(result.externalFilter[field]?.from);\r\n const toDate = Date.addDays(result.externalFilter[field]?.to, 1);\r\n // tslint:disable-next-line: max-line-length\r\n result.whereClause += ` AND ${field} >= DateTime(${fromDate.getFullYear()},${fromDate.getMonth() + 1},${fromDate.getDate()})`;\r\n result.whereClause += ` AND ${field} < DateTime(${toDate.getFullYear()},${toDate.getMonth() + 1},${toDate.getDate()})`;\r\n }\r\n return;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n mapResponse = (res: any) => {\r\n const { items, total } = res;\r\n return {\r\n items,\r\n total\r\n };\r\n }\r\n\r\n #isGuid = (key: string): boolean => {\r\n const regex = /[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}/i;\r\n return regex.test(key);\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n ViewChildren,\r\n QueryList,\r\n AfterViewInit,\r\n OnDestroy,\r\n Inject,\r\n Optional,\r\n ContentChildren\r\n} from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport $ from 'jquery';\r\n\r\nimport {\r\n SdApiService\r\n} from '@sd-angular/core/api';\r\n\r\nimport {\r\n SdExcelService,\r\n ExcelConfig,\r\n ExcelTempateColumn\r\n} from '@sd-angular/core/excel';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdLoadingService\r\n} from '@sd-angular/core/loading';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\n\r\nimport { SdGridOption, defaultGridOption, GridItem, SdGridColumn, SdGridExternalFilter } from './grid.model';\r\n\r\nimport { ConfigResult } from './components/grid-config/grid-config.model';\r\nimport { SdGridConfig } from './components/grid-config/grid-config.component';\r\nimport { EditorHandlerPipe } from './pipes/editor-handler.pipe';\r\nimport { SdGridPopupEditor } from './components/grid-popup-editor/grid-popup-editor.component';\r\nimport { SdGridPopupFilter } from './components/grid-popup-filter/grid-popup-filter.component';\r\nimport { merge, Subscription } from 'rxjs';\r\nimport { SdGridPopupExportExcel } from './components/grid-popup-export-excel/grid-popup-export-excel.component';\r\nimport { QuickFilter, FilterConfiguration } from './components/grid-popup-filter/grid-popup-filter.model';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport { SdGridFilterInfo } from './models/filter-info.model';\r\n\r\nimport { IGridConfiguration, GRID_CONFIG } from './models/grid-configuration.model';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { SdCellDefDirective } from './directives/cell-def.directive';\r\nimport { SdCellFooterDevDirective } from './directives/cell-footer-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdCellEditorDefDirective } from './directives/cell-editor-def.directive';\r\nimport { IHandlerServer, IHandlerLocal } from './models/handler';\r\nimport { HandlerLocal } from './models/handler-local';\r\nimport { HandlerDotnet } from './models/handler-dotnet';\r\nimport { SdGridImportExcel } from './components/grid-import-excel/grid-import-excel.component';\r\n\r\n\r\n@Component({\r\n selector: 'sd-grid',\r\n templateUrl: './grid.component.html',\r\n styleUrls: ['./grid.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGrid implements AfterViewInit, OnDestroy {\r\n private handler: IHandlerServer | IHandlerLocal;\r\n isMobileOrTablet = false;\r\n displayKey = 'SDCUSTOM';\r\n gridOption: SdGridOption;\r\n orderBy: string;\r\n orderDirection: 'ASC' | 'DESC';\r\n localItems: GridItem[] = [];\r\n items: GridItem[] = [];\r\n total: number;\r\n filter: {\r\n [key: string]: any\r\n } = {};\r\n externalFilter: {\r\n [key: string]: any\r\n } = {};\r\n hiddenPaginate = false;\r\n inlineExternal: {\r\n [key: string]: boolean;\r\n } = {};\r\n inlineColumn: {\r\n [key: string]: boolean;\r\n } = {};\r\n quickFilters: QuickFilter[] = [];\r\n selectedQuickFilter: string;\r\n // Paginate\r\n pages = [1];\r\n pageCount = 5;\r\n totalPage = 1;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n viewItems: GridItem[] = [];\r\n sumarize: string;\r\n\r\n fixedColumns: SdGridColumn[] = [];\r\n normalColumns: SdGridColumn[] = [];\r\n columns: SdGridColumn[] = [];\r\n\r\n isCheckedAll = false;\r\n selectedItems: any[] = [];\r\n\r\n @ViewChildren('fixedHeader') private fixedHeaders: QueryList<ElementRef>;\r\n @ViewChildren('fixedBody') private fixedBodies: QueryList<ElementRef>;\r\n\r\n @ViewChild('fixedGridContainer') fixedGridContainer: ElementRef;\r\n @ViewChild('gridFixedBody') gridFixedBody: ElementRef;\r\n\r\n @ViewChild('gridContainer') gridContainer: ElementRef;\r\n @ViewChild('gridHeader') gridHeader: ElementRef;\r\n @ViewChild('gridBody') gridBody: ElementRef;\r\n\r\n @ViewChild('sdGridConfig', { static: true }) sdGridConfig: SdGridConfig;\r\n @ViewChild('sdGridPopupEditor') sdGridPopupEditor: SdGridPopupEditor;\r\n\r\n @ViewChild('sdGridPopupFilter') sdGridPopupFilter: SdGridPopupFilter;\r\n @ViewChild('matSelect') matSelect: MatSelect;\r\n\r\n @ViewChild('sdGridPopupExportExcel') sdGridPopupExportExcel: SdGridPopupExportExcel;\r\n @ViewChild('sdGridImportExcel') sdGridImportExcel: SdGridImportExcel;\r\n\r\n @ContentChildren(SdCellDefDirective) cellDefs = new QueryList<SdCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdCellDefDirective\r\n } = {};\r\n\r\n @ContentChildren(SdCellEditorDefDirective) cellEditorDefs = new QueryList<SdCellEditorDefDirective>();\r\n cellEditorDef: {\r\n [column: string]: SdCellEditorDefDirective\r\n } = {};\r\n\r\n @ContentChildren(SdCellFooterDevDirective) cellFooterDefs = new QueryList<SdCellFooterDevDirective>();\r\n cellFooterDef: {\r\n [column: string]: SdCellFooterDevDirective[];\r\n } = {};\r\n #numberOfFooterRows = 0;\r\n footerRows: number[] = [];\r\n\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(paginator.page.subscribe(this.selectPage));\r\n }\r\n }\r\n\r\n @Input() set option(value: SdGridOption) {\r\n this.setOption(value);\r\n }\r\n selectedItem: any = null;\r\n #subscription = new Subscription();\r\n rowHandler = {\r\n click: (item: any) => {\r\n this.selectedItem = item;\r\n if (this.gridOption.onClickRow) {\r\n this.gridOption.onClickRow(item);\r\n }\r\n },\r\n dblClick: (item: any) => {\r\n this.selectedItem = item;\r\n if (this.gridOption.onDblClickRow) {\r\n this.gridOption.onDblClickRow(item);\r\n }\r\n }\r\n };\r\n\r\n private setOption = (option: SdGridOption) => {\r\n option = this.initConfiguration(option);\r\n option = this.initTranslate(option);\r\n delete this.gridOption;\r\n this.gridOption = option;\r\n // Loại bỏ những command bị ẩn\r\n this.gridOption.commands = this.gridOption.commands.filter(command => {\r\n const hidden = command.hidden;\r\n if (hidden !== undefined) {\r\n if (typeof (hidden) === 'boolean') {\r\n return !hidden;\r\n } else if (typeof (hidden) === 'function') {\r\n return !hidden();\r\n }\r\n } else {\r\n return true;\r\n }\r\n });\r\n this.sdGridConfig.setOption({\r\n key: option.key,\r\n pageSize: this.gridOption.paginate.pageSize,\r\n columns: this.gridOption.columns\r\n });\r\n this.initExternalFilter();\r\n this.resize();\r\n this.detectChanges();\r\n }\r\n\r\n private initConfiguration = (option: SdGridOption) => {\r\n const gridConfiguration = this.configuration;\r\n // Filter\r\n if (!option.filter?.type && gridConfiguration?.filter?.type) {\r\n if (!option.filter) {\r\n option.filter = {\r\n type: gridConfiguration.filter.type\r\n };\r\n } else {\r\n option.filter.type = gridConfiguration.filter.type;\r\n }\r\n }\r\n if (!option.filter?.columnInline && gridConfiguration?.filter?.columnInline) {\r\n if (!option.filter) {\r\n option.filter = {\r\n columnInline: gridConfiguration.filter.columnInline\r\n };\r\n } else {\r\n option.filter.columnInline = gridConfiguration.filter.columnInline;\r\n }\r\n }\r\n if (!option.filter?.quickFilterVisibility && gridConfiguration?.filter?.quickFilterVisibility) {\r\n if (!option.filter) {\r\n option.filter = {\r\n quickFilterVisibility: gridConfiguration.filter.quickFilterVisibility\r\n };\r\n } else {\r\n option.filter.quickFilterVisibility = gridConfiguration.filter.quickFilterVisibility;\r\n }\r\n }\r\n // Translate\r\n option.translate = option.translate ?? gridConfiguration?.translate;\r\n switch (option.type) {\r\n case 'local':\r\n this.handler = this.handlerLocal;\r\n break;\r\n case 'dotnet':\r\n this.handler = this.handlerDotnet;\r\n break;\r\n case 'custom':\r\n this.handler = option.handlerCustom || gridConfiguration?.handlerCustom;\r\n if (!this.handler) {\r\n this.notifyService.notify.warning(`Handler custom was not found`);\r\n return;\r\n }\r\n break;\r\n }\r\n return { ...defaultGridOption, ...option };\r\n }\r\n\r\n private initTranslate = (option: SdGridOption) => {\r\n const { translate } = this.translateService;\r\n option.commands?.forEach(command => {\r\n if (!option.translate) {\r\n return;\r\n }\r\n if (typeof (command.title) === 'string') {\r\n command.title = translate(command.title);\r\n }\r\n if ('children' in command) {\r\n command.children?.forEach(childCommand => {\r\n if (typeof (childCommand.title) === 'string') {\r\n childCommand.title = translate(childCommand.title);\r\n }\r\n });\r\n }\r\n });\r\n option.columns?.forEach(column => {\r\n if (column.translate === false) {\r\n return;\r\n }\r\n if (option.translate || column.translate) {\r\n column.title = translate(column.title);\r\n }\r\n if (column.type === 'children') {\r\n column?.children?.forEach(childColumn => {\r\n if (childColumn.translate === false) {\r\n return;\r\n }\r\n if (option.translate || childColumn.translate) {\r\n childColumn.title = translate(childColumn.title);\r\n }\r\n });\r\n }\r\n });\r\n option.filter?.externalFilters?.forEach(externalFilter => {\r\n if (option.translate) {\r\n externalFilter.title = translate(externalFilter.title);\r\n }\r\n });\r\n return option;\r\n }\r\n\r\n constructor(\r\n @Inject(GRID_CONFIG) @Optional() public configuration: IGridConfiguration,\r\n private ref: ChangeDetectorRef,\r\n deviceService: DeviceDetectorService,\r\n private handlerLocal: HandlerLocal,\r\n private handlerDotnet: HandlerDotnet,\r\n private translateService: SdTranslateService,\r\n private datePipe: DatePipe,\r\n private loadingService: SdLoadingService,\r\n private apiService: SdApiService,\r\n private excelService: SdExcelService,\r\n private notifyService: SdNotifyService,\r\n private editorVisiblePipe: EditorHandlerPipe) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n // this.ref.detach();\r\n // setInterval(() => {\r\n // this.ref.markForCheck();\r\n // }, 1000);\r\n // ref.detach();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.fixedHeaders.changes.pipe(startWith([])).subscribe(() => {\r\n setTimeout(() => {\r\n const fixedHeaders = this.fixedHeaders.toArray();\r\n if (fixedHeaders.length > 0) {\r\n let left = $(fixedHeaders[0].nativeElement).outerWidth(true);\r\n for (let i = 1; i < fixedHeaders.length; i++) {\r\n $(fixedHeaders[i].nativeElement).css({ left });\r\n left += $(fixedHeaders[i].nativeElement).outerWidth(true);\r\n }\r\n }\r\n }, 100);\r\n }));\r\n this.#subscription.add(merge(this.fixedBodies.changes, this.cellFooterDefs.changes).pipe(startWith({})).subscribe(() => {\r\n setTimeout(() => {\r\n const fixedBodies = this.fixedBodies.toArray();\r\n if (fixedBodies.length > 0) {\r\n const fixedPerRow = this.fixedBodies.length / (this.viewItems.length + this.#numberOfFooterRows);\r\n let left = $(fixedBodies[0].nativeElement).outerWidth(true);\r\n for (let i = 1; i < fixedBodies.length; i++) {\r\n if (i % fixedPerRow === 0) {\r\n left = 0;\r\n }\r\n $(fixedBodies[i].nativeElement).css({ left });\r\n left += $(fixedBodies[i].nativeElement).outerWidth(true);\r\n }\r\n }\r\n const fixedHeaders = this.fixedHeaders.toArray();\r\n if (fixedHeaders.length > 0) {\r\n let left = $(fixedHeaders[0].nativeElement).outerWidth(true);\r\n for (let i = 1; i < fixedHeaders.length; i++) {\r\n $(fixedHeaders[i].nativeElement).css({ left });\r\n left += $(fixedHeaders[i].nativeElement).outerWidth(true);\r\n }\r\n }\r\n }, 100);\r\n }));\r\n this.#subscription.add(this.cellDefs.changes.pipe(startWith([])).subscribe(() => {\r\n this.cellDef = {};\r\n for (const cellDef of this.cellDefs) {\r\n if (cellDef.sdCellDef) {\r\n this.cellDef[cellDef.sdCellDef] = cellDef;\r\n }\r\n }\r\n }));\r\n this.#subscription.add(this.cellEditorDefs.changes.pipe(startWith([])).subscribe(() => {\r\n this.cellEditorDef = {};\r\n for (const cellEditorDef of this.cellEditorDefs) {\r\n if (cellEditorDef.sdCellEditorDef) {\r\n this.cellEditorDef[cellEditorDef.sdCellEditorDef] = cellEditorDef;\r\n }\r\n }\r\n }));\r\n this.#subscription.add(this.cellFooterDefs.changes.pipe(startWith([])).subscribe(() => {\r\n this.cellFooterDef = {};\r\n this.#numberOfFooterRows = 0;\r\n for (const cellFooterDef of this.cellFooterDefs) {\r\n if (cellFooterDef.sdCellFooterDef) {\r\n if (!this.cellFooterDef[cellFooterDef.sdCellFooterDef]) {\r\n this.cellFooterDef[cellFooterDef.sdCellFooterDef] = [];\r\n }\r\n this.cellFooterDef[cellFooterDef.sdCellFooterDef].push(cellFooterDef);\r\n if (this.cellFooterDef[cellFooterDef.sdCellFooterDef].length > this.#numberOfFooterRows) {\r\n this.#numberOfFooterRows = this.cellFooterDef[cellFooterDef.sdCellFooterDef].length;\r\n }\r\n }\r\n }\r\n this.footerRows = Array(this.#numberOfFooterRows).fill(0).map((v, i) => i);\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n reload = async (gridItems?: any[]) => {\r\n if (this.isLoading) {\r\n return;\r\n }\r\n this.isLoading = true;\r\n const currentPage = (this.#paginator?.pageIndex || 0) + 1;\r\n const pageSize = this.#paginator?.pageSize || 50;\r\n try {\r\n if (this.gridOption.type !== 'local') {\r\n const handler = this.handler as IHandlerServer;\r\n const filter = handler.mapRequest(this.getFilterInfo(currentPage, pageSize));\r\n if (this.gridOption.method === 'GET') {\r\n const queryString = Object.keys(filter).filter(key => filter[key] !== null && filter[key] !== undefined)\r\n .map(key => key + '=' + filter[key]).join('&');\r\n const url = this.gridOption.url.includes('?') ? `${this.gridOption.url}&${queryString}` : `${this.gridOption.url}?${queryString}`;\r\n const response = await this.apiService.get(url);\r\n const { items, total } = handler.mapResponse(response);\r\n this.items = items;\r\n this.total = total;\r\n } else {\r\n const response = await this.apiService.post(this.gridOption.url, filter);\r\n const { items, total } = handler.mapResponse(response);\r\n this.items = items;\r\n this.total = total;\r\n }\r\n } else {\r\n const handler = this.handler as IHandlerLocal;\r\n if (typeof (this.gridOption.items) === 'function') {\r\n if (Array.isArray(gridItems)) {\r\n this.localItems = gridItems;\r\n } else {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n this.localItems = await results;\r\n } else {\r\n this.localItems = results;\r\n }\r\n }\r\n } else {\r\n this.gridOption.items = gridItems || this.gridOption.items;\r\n this.localItems = this.gridOption.items;\r\n }\r\n const response = handler.filter(this.localItems, {\r\n customFilter: this.gridOption.filter.customFilter,\r\n rawFilter: this.filter,\r\n columns: this.gridOption.columns,\r\n rawExternalFilter: this.externalFilter,\r\n externalFilters: this.gridOption.filter?.externalFilters,\r\n orderBy: this.orderBy,\r\n orderDirection: this.orderDirection,\r\n pageNumber: currentPage,\r\n pageSize\r\n });\r\n this.items = response.items;\r\n this.total = response.total;\r\n \r\n }\r\n this.items.forEach(item => item.originItem = { ...item });\r\n this.isCheckedAll = false;\r\n this.#setSelectedItems();\r\n await this.gridOption?.onReloadCompleted?.(this.items);\r\n this.generateViewItems();\r\n this.generateEditorHandlers();\r\n $(this.gridBody.nativeElement).scrollTop(0);\r\n if (currentPage > 1 && !this.viewItems?.length) {\r\n this.#paginator.firstPage();\r\n }\r\n this.detectChanges();\r\n } catch (error) {\r\n this.notifyService.handle.error(error);\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n reloadItem(data: { [id: string]: any }) {\r\n Object.keys(data).forEach(id => {\r\n const item = this.items.find(e => !!e.id && e.id === id);\r\n if (item) {\r\n this.gridOption.columns.forEach(column => {\r\n if (item[column.field] !== undefined && data[id][column.field] !== undefined && item[column.field] !== data[id][column.field]) {\r\n this.blink(item, column.field);\r\n }\r\n });\r\n Object.assign(item, data[id]);\r\n this.generateEditorHanlder(item);\r\n this.stopBlink();\r\n }\r\n });\r\n }\r\n\r\n private blink(item: GridItem, field: string) {\r\n item.blinker = item.blinker || {};\r\n item.blinker[field] = true;\r\n }\r\n private stopBlink() {\r\n setTimeout(() => {\r\n this.viewItems.forEach(item => {\r\n item.blinker = {};\r\n });\r\n }, 1500);\r\n }\r\n\r\n detectChanges = () => {\r\n this.ref.detectChanges();\r\n this.ref.markForCheck();\r\n }\r\n\r\n private generateViewItems() {\r\n const currentPage = (this.#paginator?.pageIndex || 0) + 1;\r\n const pageSize = this.#paginator?.pageSize || 50;\r\n delete this.viewItems;\r\n if (this.gridOption.type === 'local') {\r\n this.viewItems = this.items.filter((item, index) => {\r\n return index >= (currentPage - 1) * pageSize\r\n && index < currentPage * pageSize;\r\n });\r\n } else {\r\n this.viewItems = this.items;\r\n }\r\n this.viewItems.forEach(item => {\r\n item.blinker = item.blinker || {};\r\n item.subInformation = item.subInformation || {};\r\n });\r\n }\r\n\r\n get editedItems() {\r\n return this.items.filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n }).map(item => {\r\n const { temporary,\r\n originItem,\r\n editorHandler,\r\n editingStatus,\r\n isChecked,\r\n subInformation,\r\n blinker,\r\n ...result } = item;\r\n return result;\r\n });\r\n }\r\n\r\n selectPage = () => {\r\n if (this.gridOption.type === 'local') {\r\n this.reload(this.localItems);\r\n } else {\r\n this.reload();\r\n }\r\n }\r\n\r\n updateFilter = (param?: { filter: any, externalFilter: any }) => {\r\n this.filter = param?.filter || this.filter;\r\n this.externalFilter = param?.externalFilter || this.externalFilter;\r\n this.#paginator.pageIndex = 0;\r\n if (this.gridOption.type === 'local') {\r\n this.reload(this.localItems);\r\n } else {\r\n this.reload();\r\n }\r\n }\r\n\r\n getItems() {\r\n return this.items;\r\n }\r\n\r\n //#region Checkable\r\n\r\n #setSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.isChecked)\r\n .map(item => {\r\n const { temporary,\r\n originItem,\r\n editorHandler,\r\n editingStatus,\r\n isChecked,\r\n subInformation,\r\n blinker,\r\n ...result } = item;\r\n return result;\r\n });\r\n }\r\n\r\n onCheck = (item: GridItem, isCheckbox?: boolean) => {\r\n if (!this.gridOption.checkable) {\r\n return;\r\n }\r\n if (!isCheckbox) {\r\n item.isChecked = !item.isChecked;\r\n }\r\n this.isCheckedAll = this.items.length === this.items.filter(e => e.isChecked).length;\r\n this.gridOption.onCheck?.(this.items.filter(e => e.isChecked), item);\r\n this.#setSelectedItems();\r\n }\r\n\r\n checkAll(isCheckedAll: boolean) {\r\n this.isCheckedAll = isCheckedAll;\r\n this.items.forEach(item => item.isChecked = this.isCheckedAll);\r\n if (this.gridOption.onCheck) {\r\n this.gridOption.onCheck(this.items.filter(item => item.isChecked));\r\n }\r\n this.#setSelectedItems();\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Sort\r\n sort = (column: SdGridColumn) => {\r\n if (column.type === 'children' || column.type === 'image') {\r\n return;\r\n }\r\n const sortable = this.gridOption.sortable ?? true;\r\n const columnSortable = column.sortable ?? true;\r\n if (!sortable || !columnSortable) {\r\n return;\r\n }\r\n if (this.orderBy === column.field) {\r\n this.orderDirection = this.orderDirection === 'ASC' ? 'DESC' : 'ASC';\r\n } else {\r\n this.orderBy = column.field;\r\n this.orderDirection = 'ASC';\r\n }\r\n if (this.gridOption.type === 'local') {\r\n this.reload(this.localItems);\r\n } else {\r\n this.reload();\r\n }\r\n }\r\n //#endregion\r\n\r\n // #region Resize Grid\r\n private resize() {\r\n this.detectChanges();\r\n if (this.gridOption.height) {\r\n this.gridBody.nativeElement.style.height = this.gridOption.height;\r\n } else {\r\n this.gridBody.nativeElement.style.height = `${window.innerHeight - 300}px`;\r\n setTimeout(() => {\r\n // Lấy offset top để điều chỉnh kích thước Grid vừa với màn hình\r\n const top = this.gridBody.nativeElement.getBoundingClientRect().top;\r\n // const top = $(this.gridBody.nativeElement).offset().top;\r\n const bottom = this.gridOption.hideFooter ? 0 : (this.isMobileOrTablet ? 45 : 55);\r\n const height = window.innerHeight - top - bottom;\r\n this.gridBody.nativeElement.style.height = `${height}px`;\r\n }, 0);\r\n setTimeout(() => {\r\n // Lấy offset top để điều chỉnh kích thước Grid vừa với màn hình\r\n const top = this.gridBody.nativeElement.getBoundingClientRect().top;\r\n // const top = $(this.gridBody.nativeElement).offset().top;\r\n const bottom = this.gridOption.hideFooter ? 0 : (this.isMobileOrTablet ? 45 : 55);\r\n const height = window.innerHeight - top - bottom;\r\n this.gridBody.nativeElement.style.height = `${height}px`;\r\n }, 200);\r\n setTimeout(() => {\r\n // Lấy offset top để điều chỉnh kích thước Grid vừa với màn hình\r\n const top = this.gridBody.nativeElement.getBoundingClientRect().top;\r\n // const top = $(this.gridBody.nativeElement).offset().top;\r\n const bottom = this.gridOption.hideFooter ? 0 : (this.isMobileOrTablet ? 45 : 55);\r\n const height = window.innerHeight - top - bottom;\r\n this.gridBody.nativeElement.style.height = `${height}px`;\r\n }, 500);\r\n setTimeout(() => {\r\n // Lấy offset top để điều chỉnh kích thước Grid vừa với màn hình\r\n const top = this.gridBody.nativeElement.getBoundingClientRect().top;\r\n // const top = $(this.gridBody.nativeElement).offset().top;\r\n const bottom = this.gridOption.hideFooter ? 0 : (this.isMobileOrTablet ? 45 : 55);\r\n const height = window.innerHeight - top - bottom;\r\n this.gridBody.nativeElement.style.height = `${height}px`;\r\n }, 1000);\r\n }\r\n }\r\n\r\n setHeight(height?: string) {\r\n this.gridOption.height = height;\r\n this.resize();\r\n }\r\n\r\n // #endregion\r\n\r\n //#region Import, Export, Config\r\n\r\n loadConfig(configResult: ConfigResult) {\r\n this.gridOption.paginate.pageSize = configResult.pageSize;\r\n this.gridOption.columns = configResult.columns;\r\n this.fixedColumns = configResult.fixedColumns;\r\n this.normalColumns = configResult.normalColumns;\r\n this.columns = [...this.fixedColumns, ...this.normalColumns];\r\n this.initFilter();\r\n this.initDictionaryColumnValues();\r\n this.reload();\r\n }\r\n\r\n private initFilter() {\r\n this.gridOption.columns.forEach(column => {\r\n // Gán giá trị filter mặc định cho từng cột\r\n this.filter[column.field] = this.filter[column.field] ?? '';\r\n });\r\n }\r\n\r\n private initDictionaryColumnValues() {\r\n this.gridOption.columns.forEach(column => {\r\n if (column.type === 'values') {\r\n column.dictionary = {};\r\n if (column.values) {\r\n column.values.forEach(e => {\r\n column.dictionary[e.value.toString()] = {\r\n text: e.text,\r\n icon: e.icon,\r\n color: e.color,\r\n backgroundColor: e.backgroundColor\r\n };\r\n });\r\n }\r\n }\r\n if (column.type === 'children') {\r\n column.children.forEach(childColumn => {\r\n if (childColumn.type === 'values') {\r\n childColumn.dictionary = {};\r\n if (childColumn.values) {\r\n childColumn.values.forEach(e => {\r\n childColumn.dictionary[e.value.toString()] = {\r\n text: e.text,\r\n icon: e.icon,\r\n color: e.color,\r\n backgroundColor: e.backgroundColor\r\n };\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n //#endregion\r\n\r\n private generateEditorHandlers() {\r\n this.viewItems.forEach(item => {\r\n this.generateEditorHanlder(item);\r\n });\r\n }\r\n\r\n private generateEditorHanlder(item: GridItem) {\r\n // item.editorHandler = item.editorHandler || {};\r\n this.editorVisiblePipe.transform(null, item, this.gridOption);\r\n }\r\n trackById(index, item) {\r\n return item.id;\r\n }\r\n\r\n get isFiltering() {\r\n return Object.values(this.filter).some(value => !!value);\r\n }\r\n\r\n onFilterPopup() {\r\n const f1 = JSON.stringify(this.filter);\r\n const f2 = JSON.stringify(this.externalFilter);\r\n const filter = JSON.parse(f1);\r\n const externalFilter = JSON.parse(f2);\r\n this.sdGridPopupFilter.open(this.fixedColumns, this.normalColumns, filter, externalFilter, this.gridOption.filter?.externalFilters);\r\n }\r\n\r\n clearFilter = () => {\r\n this.filter = {};\r\n this.externalFilter = {};\r\n this.initFilter();\r\n this.initExternalFilter();\r\n if (this.sdGridPopupFilter) {\r\n this.sdGridPopupFilter.filter = this.filter;\r\n this.sdGridPopupFilter.externalFilter = this.externalFilter;\r\n }\r\n }\r\n\r\n onClearFilter = () => {\r\n this.clearFilter();\r\n this.reload();\r\n }\r\n\r\n expandOrCollapse = async (gridItem: GridItem) => {\r\n const { temporary,\r\n originItem,\r\n editorHandler,\r\n editingStatus,\r\n isChecked,\r\n subInformation,\r\n ...item } = gridItem;\r\n if (!this.gridOption.subInformation) {\r\n return;\r\n }\r\n if (gridItem.subInformation?.isOpened) {\r\n gridItem.subInformation.isOpened = false;\r\n return;\r\n }\r\n if (this.gridOption.subInformation.lazyLoading && !gridItem.subInformation?.isLoaded) {\r\n gridItem.subInformation.isLoading = true;\r\n try {\r\n gridItem.subInformation.subItems = await this.gridOption.subInformation.onLoad(item);\r\n if (!Array.isArray(gridItem.subInformation.subItems)) {\r\n this.notifyService.alert.warning(`Data is not an array`);\r\n gridItem.subInformation.subItems = [];\r\n }\r\n gridItem.subInformation.isLoading = false;\r\n gridItem.subInformation.isLoaded = true;\r\n gridItem.subInformation.isOpened = true;\r\n this.ref.detectChanges();\r\n } catch (err) {\r\n this.notifyService.handle.error(err);\r\n gridItem.subInformation.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n return;\r\n }\r\n if (this.gridOption.subInformation.lazyLoading === false && !gridItem.subInformation.isLoaded) {\r\n gridItem.subInformation.subItems = gridItem[this.gridOption.subInformation.field];\r\n if (!Array.isArray(gridItem.subInformation.subItems)) {\r\n this.notifyService.alert.warning(`Data is not an array`);\r\n gridItem.subInformation.subItems = [];\r\n }\r\n gridItem.subInformation.isLoaded = true;\r\n gridItem.subInformation.isOpened = true;\r\n return;\r\n }\r\n gridItem.subInformation.isOpened = true;\r\n this.ref.detectChanges();\r\n }\r\n //#region Editable\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: GridItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n editor.onAdd?.(item);\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n this.viewItems.splice(0, 0, item);\r\n }\r\n this.onUpdate(item, false);\r\n }\r\n onUpdate = (item: GridItem, isModified?: boolean) => {\r\n const { editor, columns } = this.gridOption;\r\n item.editingStatus = isModified ? 'update' : 'create';\r\n item.temporary = { ...item };\r\n this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n }\r\n onSave = async (item: GridItem) => {\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandler.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editingStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editingStatus = undefined;\r\n this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandler.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n onCancel = (item: GridItem) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n }\r\n const idx2 = this.viewItems.indexOf(item);\r\n this.viewItems.splice(idx2, 1);\r\n return;\r\n }\r\n if (item.editingStatus === 'create') {\r\n if (editor.type !== 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 1);\r\n }\r\n this.viewItems.splice(0, 1);\r\n }\r\n } else {\r\n Object.assign(item, item.temporary);\r\n item.editingStatus = undefined;\r\n this.generateEditorHanlder(item);\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n private initExternalFilter = () => {\r\n if (this.gridOption.filter?.externalFilters?.length) {\r\n this.gridOption.filter.externalFilters.forEach(externalFilter => {\r\n if (externalFilter.type === 'string') {\r\n if (externalFilter.default) {\r\n this.externalFilter[externalFilter.field] = externalFilter.default ?? '';\r\n }\r\n return;\r\n }\r\n if (externalFilter.type === 'number') {\r\n if (externalFilter.default) {\r\n this.externalFilter[externalFilter.field] = externalFilter.default ?? undefined;\r\n }\r\n return;\r\n }\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: externalFilter.defaultFrom ?? undefined,\r\n to: externalFilter.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (externalFilter.type === 'numberrange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: externalFilter.defaultFrom ?? undefined,\r\n to: externalFilter.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (externalFilter.type === 'daterangefull') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: externalFilter.defaultFrom ?? undefined,\r\n to: externalFilter.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (externalFilter.type === 'values') { // andn1\r\n if (externalFilter.default) {\r\n this.externalFilter[externalFilter.field] = externalFilter.default ?? '';\r\n }\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n onSearch = (searchValue: string, item: GridItem, column: SdGridColumn) => {\r\n item[column.field] = searchValue;\r\n }\r\n\r\n onFilterConfigurationLoaded = (param: FilterConfiguration) => {\r\n this.quickFilters = param.quickFilters || [];\r\n this.selectedQuickFilter = param.selectedQuickFilter || '';\r\n if (this.selectedQuickFilter) {\r\n const quickFilter = this.quickFilters.find(e => e.code === this.selectedQuickFilter);\r\n if (quickFilter) {\r\n const f1 = JSON.stringify(quickFilter.filter);\r\n const f2 = JSON.stringify(quickFilter.externalFilter);\r\n this.filter = JSON.parse(f1);\r\n this.externalFilter = this.refreshExternalFilter(this.gridOption?.filter?.externalFilters, JSON.parse(f2));\r\n }\r\n }\r\n this.inlineExternal = param.inlineExternal || {};\r\n this.inlineColumn = param.inlineColumn || {};\r\n this.resize();\r\n }\r\n\r\n onSelectQuickFilter = (value: string) => {\r\n const quickFilter = this.quickFilters.find(e => e.code === value);\r\n if (quickFilter?.code) {\r\n const f1 = JSON.stringify(quickFilter.filter);\r\n const f2 = JSON.stringify(quickFilter.externalFilter);\r\n this.selectedQuickFilter = quickFilter?.code;\r\n this.filter = JSON.parse(f1);\r\n this.externalFilter = this.refreshExternalFilter(this.gridOption?.filter?.externalFilters, JSON.parse(f2));\r\n this.updateFilter();\r\n } else {\r\n this.selectedQuickFilter = '';\r\n this.onClearFilter();\r\n }\r\n this.sdGridPopupFilter?.updateConfiguration(this.selectedQuickFilter);\r\n }\r\n\r\n private getExportItems = async (pageNumber: number = 1, pageSize: number = 10000) => {\r\n if (this.isLoading) {\r\n return;\r\n }\r\n this.isLoading = true;\r\n try {\r\n if (this.gridOption.type !== 'local') {\r\n const handler = this.handler as IHandlerServer;\r\n const filter = handler.mapRequest(this.getFilterInfo(pageNumber, pageSize));\r\n if (this.gridOption.method === 'GET') {\r\n const queryString = Object.keys(filter).filter(key => filter[key] !== null && filter[key] !== undefined)\r\n .map(key => key + '=' + filter[key]).join('&');\r\n const url = this.gridOption.url.includes('?') ? `${this.gridOption.url}&${queryString}` : `${this.gridOption.url}?${queryString}`;\r\n const response = await this.apiService.get(url);\r\n return handler.mapResponse(response).items;\r\n } else {\r\n const response = await this.apiService.post(this.gridOption.url, filter);\r\n return handler.mapResponse(response).items;\r\n }\r\n } else {\r\n let localItems = [];\r\n const handler = this.handler as IHandlerLocal;\r\n if (typeof (this.gridOption.items) === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n localItems = await results;\r\n } else {\r\n localItems = results;\r\n }\r\n } else {\r\n localItems = this.gridOption.items;\r\n }\r\n const response = handler.filter(localItems, {\r\n customFilter: this.gridOption.filter.customFilter,\r\n rawFilter: this.filter,\r\n columns: this.gridOption.columns,\r\n rawExternalFilter: this.externalFilter,\r\n externalFilters: this.gridOption.filter?.externalFilters,\r\n orderBy: this.orderBy,\r\n orderDirection: this.orderDirection,\r\n pageNumber,\r\n pageSize\r\n });\r\n return response.items;\r\n }\r\n } catch (error) {\r\n this.notifyService.handle.error(error);\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n private getFilterInfo = (pageNumber: number, pageSize: number): SdGridFilterInfo => {\r\n for (const key of Object.keys(this.filter)) {\r\n if (typeof (this.filter[key]) === 'string') {\r\n this.filter[key] = this.filter[key].trim();\r\n }\r\n }\r\n for (const key of Object.keys(this.externalFilter)) {\r\n if (typeof (this.externalFilter[key]) === 'string') {\r\n this.externalFilter[key] = this.externalFilter[key].trim();\r\n }\r\n }\r\n return {\r\n customFilter: this.gridOption.filter.customFilter,\r\n rawFilter: this.filter,\r\n columns: this.gridOption.columns,\r\n rawExternalFilter: this.externalFilter,\r\n externalFilters: this.gridOption.filter?.externalFilters,\r\n orderBy: this.orderBy,\r\n orderDirection: this.orderDirection,\r\n pageNumber,\r\n pageSize\r\n };\r\n }\r\n\r\n onExportByTemplate = async (params: { excelConfig: ExcelConfig, excelColumns: ExcelTempateColumn[] }) => {\r\n this.loadingService.start();\r\n let exportItems = [];\r\n if (this.gridOption.export?.items) {\r\n exportItems = await this.gridOption.export?.items(this.getFilterInfo(1, 10000)).finally(this.loadingService.stop);\r\n } else {\r\n exportItems = await this.getExportItems().finally(this.loadingService.stop);\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems, params.excelConfig.name);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const columns = [...this.gridOption.columns, ...(this.gridOption.export?.columns || [])];\r\n const items = exportItems.map(item => {\r\n const obj: any = {};\r\n const handle = (column: SdGridColumn) => {\r\n if (column.type === 'children') {\r\n column.children.forEach(handle);\r\n } else if (column.transform) {\r\n obj[column.field] = column.transform(item[column.field], item);\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number' || column.type === 'color') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.trueValue || 'True';\r\n } else {\r\n obj[column.field] = column.falseValue || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n // Nếu là date thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = this.datePipe.transform(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n // Nếu là datetime thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = this.datePipe.transform(date, 'dd/MM/yyyy HH:mm:ss');\r\n } else if (column.type === 'time') {\r\n // Nếu là time thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = this.datePipe.transform(date, 'HH:mm:ss');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n const data = column.values.find(e => e.value === item[column.field]);\r\n if (data) {\r\n obj[column.field] = data.text;\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n } else if (column.type === 'radio') {\r\n const data = column.values.find(e => e[column.valueField] === item[column.field]);\r\n if (data) {\r\n obj[column.field] = data[column.displayField];\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n }\r\n };\r\n columns.forEach(handle);\r\n return obj;\r\n });\r\n this.excelService.generateExcelDataByTemplate(params.excelConfig.fullPath, params.excelColumns, items, params.excelConfig.name);\r\n }\r\n\r\n bigExport = async () => {\r\n const pageSize = 1000;\r\n let pageNumber = 1;\r\n this.loadingService.start();\r\n try {\r\n let exportItems = [];\r\n let filePath: string = null;\r\n let destination: string = null;\r\n let latestRow = 0;\r\n while (true) {\r\n if (this.gridOption.export?.items) {\r\n exportItems = await this.gridOption.export?.items(this.getFilterInfo(pageNumber, pageSize)).finally(this.loadingService.stop);\r\n } else {\r\n exportItems = await this.getExportItems(pageNumber, pageSize).finally(this.loadingService.stop);\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const columns = [...this.gridOption.columns, ...(this.gridOption.export?.columns || [])];\r\n const items = exportItems.map(item => {\r\n const obj: any = {};\r\n const handle = (column: SdGridColumn) => {\r\n if (column.type === 'children') {\r\n column.children.forEach(handle);\r\n } else if (column.transform) {\r\n obj[column.field] = column.transform(item[column.field], item);\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number' || column.type === 'color') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.trueValue || 'True';\r\n } else {\r\n obj[column.field] = column.falseValue || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n // Nếu là date thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = this.datePipe.transform(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n // Nếu là datetime thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = this.datePipe.transform(date, 'dd/MM/yyyy HH:mm:ss');\r\n } else if (column.type === 'time') {\r\n // Nếu là time thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = this.datePipe.transform(date, 'HH:mm:ss');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n const data = column.values.find(e => e.value === item[column.field]);\r\n if (data) {\r\n obj[column.field] = data.text;\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n } else if (column.type === 'radio') {\r\n const data = column.values.find(e => e[column.valueField] === item[column.field]);\r\n if (data) {\r\n obj[column.field] = data[column.displayField];\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n }\r\n };\r\n columns.forEach(handle);\r\n return obj;\r\n });\r\n const result = await this.excelService.bigExport({\r\n columns,\r\n items,\r\n latestRow,\r\n filePath,\r\n destination\r\n });\r\n latestRow = result.latestRow;\r\n filePath = result.filePath;\r\n destination = result.destination;\r\n if ((pageNumber - 1) * pageSize + items.length >= this.total) {\r\n await this.excelService.download(filePath);\r\n break;\r\n }\r\n pageNumber++;\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n get invalidItems() {\r\n return this.items.filter(e => e.editorHandler?.errorMessage).map(e => {\r\n const { temporary,\r\n originItem,\r\n editorHandler,\r\n editingStatus,\r\n isChecked,\r\n subInformation,\r\n blinker,\r\n ...item } = e;\r\n return {\r\n item,\r\n message: e.editorHandler.errorMessage\r\n };\r\n });\r\n }\r\n\r\n get gridItems() {\r\n return this.items.map(e => {\r\n const { temporary,\r\n originItem,\r\n editorHandler,\r\n editingStatus,\r\n isChecked,\r\n subInformation,\r\n blinker,\r\n ...item } = e;\r\n return item;\r\n });\r\n }\r\n\r\n onEditorChange = () => {\r\n this.ref.detectChanges();\r\n }\r\n onSelectPageSize = () => {\r\n this.reload();\r\n }\r\n private refreshExternalFilter = (externalFilters: SdGridExternalFilter[], externalFilter: any) => {\r\n externalFilter = externalFilter || {};\r\n externalFilters = externalFilters || [];\r\n externalFilters.forEach(e => {\r\n if (e.type === 'string') {\r\n externalFilter[e.field] = externalFilter[e.field] ?? e.default ?? '';\r\n return;\r\n }\r\n if (e.type === 'number') {\r\n externalFilter[e.field] = externalFilter[e.field] ?? e.default ?? undefined;\r\n return;\r\n }\r\n if (e.type === 'daterange') {\r\n externalFilter[e.field] = {\r\n from: externalFilter[e.field]?.from ?? e.defaultFrom ?? undefined,\r\n to: externalFilter[e.field]?.to ?? e.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (e.type === 'numberrange') {\r\n externalFilter[e.field] = {\r\n from: externalFilter[e.field]?.from ?? e.defaultFrom ?? undefined,\r\n to: externalFilter[e.field]?.to ?? e.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (e.type === 'daterangefull') {\r\n externalFilter[e.field] = {\r\n from: externalFilter[e.field]?.from ?? e.defaultFrom ?? undefined,\r\n to: externalFilter[e.field]?.to ?? e.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (e.type === 'values') { // andn1\r\n externalFilter[e.field] = (externalFilter[e.field] || e.default) ?? '';\r\n return;\r\n }\r\n });\r\n return externalFilter;\r\n }\r\n\r\n onCreateQuickFilter = (ev?: Event) => {\r\n this.matSelect?.close();\r\n this.onFilterPopup();\r\n this.sdGridPopupFilter?.close();\r\n this.sdGridPopupFilter?.onCreateQuickFilter(ev);\r\n }\r\n\r\n onEditQuickFilter = (ev: Event, quickFilter?: QuickFilter) => {\r\n this.matSelect?.close();\r\n this.onFilterPopup();\r\n this.sdGridPopupFilter?.close();\r\n this.sdGridPopupFilter?.onEditQuickFilter(ev, quickFilter);\r\n }\r\n\r\n onDeleteQuickFilter = (ev: Event, quickFilter?: QuickFilter) => {\r\n this.matSelect?.close();\r\n this.onFilterPopup();\r\n this.sdGridPopupFilter?.close();\r\n this.sdGridPopupFilter?.onDeleteQuickFilter(ev, quickFilter);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdDynamicItems'\r\n})\r\nexport class SdDynamicItems implements PipeTransform {\r\n transform(value: any, dynamicItems: (value: any) => Promise<any[]>) {\r\n return dynamicItems;\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport { ConfigOption, ConfigResult, ConfigStorage } from './grid-config.model';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\n\r\nimport {\r\n SdSetting,\r\n SdSettingService\r\n} from '@sd-angular/core/setting';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\n\r\n@Component({\r\n selector: 'sd-grid-config',\r\n templateUrl: './grid-config.component.html',\r\n styleUrls: ['./grid-config.component.scss']\r\n})\r\nexport class SdGridConfig implements OnInit {\r\n @ViewChild('modal') modal: SdModal;\r\n @Output() sdChange = new EventEmitter<ConfigResult>();\r\n\r\n option: ConfigOption;\r\n storage: ConfigStorage;\r\n #setting: SdSetting<ConfigStorage>;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private settingService: SdSettingService,\r\n private translateService: SdTranslateService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n async setOption(option: ConfigOption) {\r\n this.ref.detectChanges();\r\n this.option = option;\r\n if (this.option.key) {\r\n this.#setting = this.settingService.create<ConfigStorage>(this.option.key);\r\n } else {\r\n this.#setting = null;\r\n }\r\n await this.init();\r\n this.emitOnChange();\r\n }\r\n\r\n private async init() {\r\n if (this.#setting) {\r\n const storage: ConfigStorage = await this.#setting.get();\r\n try {\r\n if (!storage) {\r\n await this.#setting.remove();\r\n this.#initDefault();\r\n return;\r\n }\r\n this.storage = storage;\r\n\r\n // Loại bỏ những column đã bị xóa khỏi originColumns\r\n this.storage.columnConfigs = this.storage.columnConfigs\r\n .filter(column => this.option.columns.some(e => e.field === column.originColumn.field));\r\n\r\n // Thêm những column mới vào storage nếu có\r\n this.option.columns.forEach(column => {\r\n if (!this.storage.columnConfigs.some(e => e.originColumn.field === column.field)) {\r\n this.storage.columnConfigs.push({\r\n originColumn: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n fixed: column.fixed\r\n },\r\n hidden: false,\r\n fixed: column.fixed\r\n });\r\n }\r\n });\r\n\r\n // Cập nhật originColumn\r\n this.storage.columnConfigs.forEach(column => {\r\n const originColumn = this.option.columns.find(e => e.field === column.originColumn.field);\r\n if (originColumn) {\r\n Object.assign(column.originColumn, {\r\n title: originColumn.title,\r\n width: originColumn.width,\r\n fixed: originColumn.fixed\r\n });\r\n }\r\n });\r\n } catch (ex) {\r\n this.#setting.remove();\r\n this.#initDefault();\r\n }\r\n } else {\r\n this.#initDefault();\r\n }\r\n }\r\n\r\n #initDefault = () => {\r\n this.storage = {};\r\n this.storage.pageSize = this.option.pageSize;\r\n this.storage.columnConfigs = [];\r\n this.option.columns.forEach(column => {\r\n this.storage.columnConfigs.push({\r\n originColumn: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n fixed: column.fixed\r\n },\r\n hidden: false,\r\n fixed: column.fixed\r\n });\r\n });\r\n }\r\n\r\n open() {\r\n this.modal.open();\r\n }\r\n\r\n save() {\r\n if (!Number.isSafeInteger(+this.storage.pageSize)) {\r\n this.notifyService.notify.warning(this.translateService.translate('Page size must be an integer'));\r\n return;\r\n }\r\n if (this.storage.pageSize > 200) {\r\n this.notifyService.notify.warning(this.translateService.translate('Page size is too large'));\r\n return;\r\n }\r\n this.#setting?.set?.(this.storage);\r\n this.emitOnChange();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n }\r\n\r\n reset() {\r\n this.#setting?.remove?.();\r\n this.#initDefault();\r\n this.emitOnChange();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n }\r\n\r\n moveColumnUp(index: number) {\r\n const temp = this.storage.columnConfigs[index];\r\n this.storage.columnConfigs[index] = this.storage.columnConfigs[index - 1];\r\n this.storage.columnConfigs[index - 1] = temp;\r\n }\r\n\r\n moveColumnDown(index: number) {\r\n const temp = this.storage.columnConfigs[index];\r\n this.storage.columnConfigs[index] = this.storage.columnConfigs[index + 1];\r\n this.storage.columnConfigs[index + 1] = temp;\r\n }\r\n\r\n emitOnChange() {\r\n const pageSize = +this.storage.pageSize || this.option.pageSize;\r\n const columns = this.option.columns.filter(column => {\r\n // Hidden column theo config\r\n // Lấy các thuộc tính Title, Width, Fixed từ config\r\n const columnConfig = this.storage.columnConfigs.find(e => e.originColumn.field === column.field);\r\n if (columnConfig) {\r\n column.title = columnConfig.title || column.title;\r\n column.width = columnConfig.width || column.width;\r\n column.fixed = columnConfig.fixed;\r\n return !columnConfig.hidden;\r\n }\r\n return true;\r\n }).sort((current, next) => {\r\n // Sắp xếp theo config\r\n const currentIndex = this.storage.columnConfigs.findIndex(e => e.originColumn.field === current.field);\r\n const nextIndex = this.storage.columnConfigs.findIndex(e => e.originColumn.field === next.field);\r\n return currentIndex - nextIndex;\r\n }).filter(column => {\r\n // Hidden column theo option truyền vào\r\n if (column.hidden === undefined) {\r\n return true;\r\n }\r\n if (typeof (column.hidden) === 'boolean') {\r\n return !column.hidden;\r\n }\r\n if (typeof (column.hidden) === 'function') {\r\n return !column.hidden();\r\n }\r\n return false;\r\n });\r\n const result: ConfigResult = {\r\n pageSize,\r\n columns,\r\n fixedColumns: columns.filter(e => e.fixed),\r\n normalColumns: columns.filter(e => !e.fixed)\r\n };\r\n this.sdChange.emit(result);\r\n }\r\n}\r\n","import { Component, Input, ChangeDetectorRef, EventEmitter, ChangeDetectionStrategy, Output } from '@angular/core';\r\nimport { SdGridColumn, GridItem } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-desktop-column-edit',\r\n templateUrl: './grid-desktop-column-edit.component.html',\r\n styleUrls: ['./grid-desktop-column-edit.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGridDesktopColumnEdit {\r\n @Input() column: SdGridColumn;\r\n @Input() item: GridItem;\r\n @Output() sdChange = new EventEmitter<{ column: SdGridColumn, item: GridItem, value: any }>();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n ) { }\r\n\r\n onEditorChange = (column: SdGridColumn, item: GridItem, value: any) => {\r\n if (column.type !== 'children') {\r\n column.editor?.change?.(item, value);\r\n this.ref.detectChanges();\r\n this.sdChange.emit();\r\n }\r\n }\r\n\r\n onAutocompleteChange = (item: any) => {\r\n if (this.column.type === 'string' || this.column.type === 'values') {\r\n this.column.editor?.change?.(this.item, this.item[this.column.field], item);\r\n this.ref.detectChanges();\r\n this.sdChange.emit();\r\n }\r\n }\r\n\r\n onSelectionChange = (params: { value: any, item: any, items: any[] }) => {\r\n if (this.column.type === 'string' || this.column.type === 'values') {\r\n this.column.editor?.change?.(this.item, params?.value, params?.item || params?.items);\r\n this.ref.detectChanges();\r\n this.sdChange.emit();\r\n }\r\n }\r\n\r\n dynamicItems = async (value: any) => {\r\n if ('editor' in this.column && 'item' in this.column.editor) {\r\n const items = this.column.editor.item.items || [];\r\n if (Array.isArray(items)) {\r\n return items;\r\n }\r\n const results = items(this.item, value);\r\n if (results instanceof Promise) {\r\n return await results;\r\n }\r\n return results;\r\n } else {\r\n return [];\r\n }\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { SdGridColumn, GridItem } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-desktop-column-view',\r\n templateUrl: './grid-desktop-column-view.component.html',\r\n styleUrls: ['./grid-desktop-column-view.component.scss']\r\n})\r\nexport class SdGridDesktopColumnView {\r\n @Input() column: SdGridColumn;\r\n @Input() item: GridItem;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\nimport { SdGridColumn, GridBaseOptionFilter } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-desktop-inline-filter',\r\n templateUrl: './grid-desktop-inline-filter.component.html',\r\n styleUrls: ['./grid-desktop-inline-filter.component.scss']\r\n})\r\nexport class SdGridDesktopInlineFilter {\r\n @Input() columns: SdGridColumn[] = [];\r\n @Input() externalFilter: any = {};\r\n @Input() filter: any = {};\r\n @Input() filterOption: GridBaseOptionFilter;\r\n @Input() inlineExternal: {\r\n [key: string]: boolean;\r\n } = {};\r\n @Input() inlineColumn: {\r\n [key: string]: boolean;\r\n } = {};\r\n @Output() sdChange = new EventEmitter();\r\n isDesktop: boolean;\r\n displayKey = 'SDCUSTOM';\r\n constructor() { }\r\n\r\n onUpdateFilter = () => {\r\n this.sdChange.emit();\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\nimport { GridItem, SdGridOption } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-mobile-item-view',\r\n templateUrl: './grid-mobile-item-view.component.html',\r\n styleUrls: ['./grid-mobile-item-view.component.scss']\r\n})\r\nexport class SdGridMobileItemView {\r\n @Input() gridOption: SdGridOption;\r\n @Input() item: GridItem;\r\n @Output() check = new EventEmitter<GridItem>();\r\n constructor(\r\n ) { }\r\n\r\n onCheck = (item: GridItem) => {\r\n this.check.emit(item);\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridOption, SdGridColumn, GridItem } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-popup-editor',\r\n templateUrl: './grid-popup-editor.component.html'\r\n})\r\nexport class SdGridPopupEditor implements OnInit {\r\n\r\n @ViewChild('modal') modal: SdModal;\r\n @Output() save = new EventEmitter<GridItem>();\r\n columns: SdGridColumn[] = [];\r\n gridOption: SdGridOption;\r\n item: GridItem;\r\n isModified: boolean;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n open = (item: GridItem, columns: SdGridColumn[], isModified?: boolean) => {\r\n this.item = item;\r\n this.isModified = isModified ?? false;\r\n this.columns = [];\r\n columns.forEach(column => {\r\n if (column.type !== 'image' && column.type !== 'children') {\r\n this.columns.push(column);\r\n }\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n if (childColumn.type !== 'image') {\r\n this.columns.push(childColumn);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n onCancel = () => {\r\n this.modal.close();\r\n }\r\n\r\n onSave = () => {\r\n this.modal.close();\r\n this.save.emit(this.item);\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef } from '@angular/core';\r\nimport { SdGridColumn, GridBaseOptionExport } from '../../grid.model';\r\n\r\nimport {\r\n SdExcelService,\r\n ExcelConfig,\r\n ExcelTempateColumn\r\n} from '@sd-angular/core/excel';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdLoadingService\r\n} from '@sd-angular/core/loading';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatRadioChange } from '@angular/material/radio';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\n\r\n@Component({\r\n selector: 'sd-grid-popup-export-excel',\r\n templateUrl: './grid-popup-export-excel.component.html',\r\n styleUrls: ['./grid-popup-export-excel.component.scss']\r\n})\r\nexport class SdGridPopupExportExcel implements OnInit, AfterViewInit {\r\n private prefix = 'Popup Export Excel';\r\n newExcelConfig = 'fd8fb5db-a7ad-4398-93ac-cb3350261180';\r\n @ViewChild('modal') modal: SdModal;\r\n @Input() key = '';\r\n get fullKey() {\r\n if (!this.key) {\r\n return '';\r\n }\r\n return hash({\r\n prefix: this.prefix,\r\n key: this.key\r\n });\r\n }\r\n @Input() columns: SdGridColumn[] = [];\r\n @Input() extendColumns: SdGridColumn[] = [];\r\n @Input() fileName: string;\r\n @Input() validator: (fileName: string) => string;\r\n @Input() exportOption: GridBaseOptionExport;\r\n excelConfigs: ExcelConfig[] = [];\r\n @Output() exportByTemplate = new EventEmitter<{ excelConfig: ExcelConfig, excelColumns: ExcelTempateColumn[] }>();\r\n tabIndex = 0;\r\n selectedExcelConfig: ExcelConfig = {};\r\n exportableColumns: SdGridColumn[] = [];\r\n selected: {\r\n [key: string]: boolean\r\n } = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private excelService: SdExcelService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n async open() {\r\n if (!this.fullKey) {\r\n await this.exportDefault();\r\n return;\r\n }\r\n await this.loadConfiguration();\r\n this.exportableColumns = [...this.columns, ...(this.extendColumns || [])].filter(e => e.type !== 'image');\r\n this.selected = {};\r\n if (!this.selectedExcelConfig?.name) {\r\n if (this.excelConfigs?.length > 0) {\r\n this.selectedExcelConfig = this.excelConfigs[0];\r\n } else {\r\n this.selectedExcelConfig = {\r\n name: this.newExcelConfig\r\n };\r\n }\r\n }\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n }\r\n\r\n private generateExcelColumns = (columns: SdGridColumn[]) => {\r\n const excelColumns: ExcelTempateColumn[] = [];\r\n for (const column of columns) {\r\n if (column.type === 'children') {\r\n for (const childColumn of column.children) {\r\n if (childColumn.type !== 'image') {\r\n excelColumns.push({\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n description: childColumn.description,\r\n width: childColumn.width\r\n });\r\n }\r\n }\r\n } else if (column.type !== 'image') {\r\n excelColumns.push({\r\n field: column.field,\r\n title: column.title,\r\n description: column.description,\r\n width: column.width\r\n });\r\n }\r\n }\r\n return excelColumns;\r\n }\r\n\r\n private initTemplate = async (columns: SdGridColumn[], fileName?: string) => {\r\n columns = columns || [];\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.exportOption?.sheets)) {\r\n for (const sheet of this.exportOption.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.excelService.generateExcelTemplate({\r\n fileName: fileName || this.fileName,\r\n columns: this.generateExcelColumns(columns),\r\n sheets\r\n });\r\n }\r\n\r\n private initDefaultTemplate = async () => {\r\n const extendColumns = this.extendColumns || [];\r\n const columns = [...this.columns, ...extendColumns];\r\n return await this.initTemplate(columns);\r\n }\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n const result = await this.initDefaultTemplate().finally(this.loadingService.stop);\r\n if (result?.filePath) {\r\n this.excelService.downloadTemplate(result.filePath, `${this.fileName}.xlsx`);\r\n }\r\n }\r\n\r\n generateAndUploadTemplate = async (columns: SdGridColumn[], fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.exportOption?.sheets)) {\r\n for (const sheet of this.exportOption.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.excelService.generateAndUploadExcelTemplate(this.fullKey, {\r\n fileName: fileName || this.fileName,\r\n columns: this.generateExcelColumns(columns),\r\n sheets\r\n });\r\n }\r\n\r\n onExportByTemplate = (excelConfig: ExcelConfig) => {\r\n const extendColumns = this.extendColumns || [];\r\n const columns = [...this.columns, ...extendColumns];\r\n this.exportByTemplate.emit({\r\n excelConfig,\r\n excelColumns: this.generateExcelColumns(columns)\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n uploadTemplate = async () => {\r\n const excelConfig = await this.excelService.uploadTemplate(this.fullKey, this.validator);\r\n this.excelConfigs.push({\r\n name: excelConfig.name,\r\n fullPath: excelConfig.fullPath,\r\n removable: true\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n downloadTemplate = (excelConfig: ExcelConfig) => {\r\n this.excelService.downloadTemplate(excelConfig.fullPath, excelConfig.name);\r\n }\r\n\r\n removeTemplate = (excelConfig: ExcelConfig) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(async () => {\r\n this.loadingService.start();\r\n await this.excelService.remove(this.fullKey, excelConfig.name).finally(this.loadingService.stop);\r\n const idx = this.excelConfigs.indexOf(excelConfig);\r\n this.excelConfigs.splice(idx, 1);\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n async loadConfiguration() {\r\n this.excelConfigs = [];\r\n this.excelConfigs = await this.excelService.getFiles(this.fullKey);\r\n }\r\n\r\n exportDefault = async () => {\r\n this.loadingService.start();\r\n const result = await this.initDefaultTemplate().finally(this.loadingService.stop);\r\n const excelColumns: ExcelTempateColumn[] = [];\r\n const extendColumns = this.extendColumns || [];\r\n const columns = [...this.columns, ...extendColumns];\r\n for (const column of columns) {\r\n if (column.type === 'children') {\r\n for (const childColumn of column.children) {\r\n if (childColumn.type !== 'image') {\r\n excelColumns.push({\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width\r\n });\r\n }\r\n }\r\n } else if (column.type !== 'image') {\r\n excelColumns.push({\r\n field: column.field,\r\n title: column.title,\r\n width: column.width\r\n });\r\n }\r\n }\r\n this.exportByTemplate.emit({\r\n excelConfig: {\r\n fullPath: result.filePath,\r\n name: `[${this.fullKey}] Default.xlsx`\r\n },\r\n excelColumns\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n newTemplate = () => {\r\n this.notifyService.confirmWithInput(this.translateService.translate('Enter your template name'), {\r\n maxlength: 50\r\n }).then(async (fileName: string) => {\r\n this.loadingService.start();\r\n fileName = fileName + '.xlsx';\r\n try {\r\n if (this.validator?.(fileName)) {\r\n this.notifyService.notify.warning(this.validator(fileName));\r\n return;\r\n }\r\n let exportableColumns = this.exportableColumns.filter(column => this.selected[column.field]);\r\n if (!exportableColumns.length) {\r\n exportableColumns = this.exportableColumns;\r\n }\r\n const result = await this.generateAndUploadTemplate(exportableColumns, fileName);\r\n if (result?.filePath) {\r\n const excelConfig: ExcelConfig = {\r\n fullPath: result.filePath,\r\n name: result.fileName,\r\n removable: true\r\n };\r\n this.excelConfigs.push(excelConfig);\r\n this.onExportByTemplate(excelConfig);\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n });\r\n }\r\n\r\n onChangeRadio = (matRadioChange: MatRadioChange) => {\r\n const selectedExcelConfig = this.excelConfigs.find(e => e.name === matRadioChange.value);\r\n if (!selectedExcelConfig) {\r\n this.selectedExcelConfig = {\r\n name: this.newExcelConfig\r\n };\r\n } else {\r\n this.selectedExcelConfig = selectedExcelConfig;\r\n }\r\n this.exportableColumns = [...this.columns, ...(this.extendColumns || [])].filter(e => e.type !== 'image');\r\n this.selected = {};\r\n }\r\n}\r\n","// tslint:disable-next-line:max-line-length\r\nimport { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { SdGridColumn, SdGridExternalFilter, GridBaseOptionFilter } from '../../grid.model';\r\nimport { QuickFilter, FilterConfiguration } from './grid-popup-filter.model';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdSettingService\r\n} from '@sd-angular/core/setting';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridPopupQuickFilterDetail } from '../grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component';\r\nimport { MatSelect, MatSelectChange } from '@angular/material/select';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\n\r\n@Component({\r\n selector: 'sd-grid-popup-filter',\r\n templateUrl: './grid-popup-filter.component.html',\r\n styleUrls: ['./grid-popup-filter.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class SdGridPopupFilter implements OnInit, AfterViewInit {\r\n private keyPrefix = 'PopupFilter';\r\n displayKey = 'SDCUSTOM';\r\n isMobileOrTablet = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('popupQuickFilterDetail') popupQuickFilterDetail: SdGridPopupQuickFilterDetail;\r\n @ViewChild('matSelect') matSelect: MatSelect;\r\n @Input() key = '';\r\n @Input() filterOption: GridBaseOptionFilter;\r\n @Output() accept = new EventEmitter<{ filter: any, externalFilter: any }>();\r\n @Output() clear = new EventEmitter<void>();\r\n @Output() loadInlineFilter = new EventEmitter<FilterConfiguration>();\r\n selectedField: string;\r\n newQuickFilter = 'e1ef1d43-d689-424f-959e-e6cd154cfee7';\r\n filter: any = {};\r\n externalFilter: any = {};\r\n columns: SdGridColumn[] = [];\r\n externalFilters: SdGridExternalFilter[] = [];\r\n quickFilters: QuickFilter[] = [];\r\n selectedCode: string;\r\n maxQuickFilters = 5;\r\n @Input() inlineExternal: {\r\n [key: string]: boolean\r\n } = {};\r\n @Input() inlineColumn: {\r\n [key: string]: boolean\r\n } = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n deviceService: DeviceDetectorService,\r\n private settingService: SdSettingService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n\r\n ngOnInit() {\r\n this.#loadConfiguration().then(() => {\r\n this.loadInlineFilter.emit({\r\n quickFilters: this.quickFilters || [],\r\n selectedQuickFilter: this.selectedCode || '',\r\n inlineExternal: this.inlineExternal,\r\n inlineColumn: this.inlineColumn\r\n });\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n open = (\r\n fixedColums: SdGridColumn[],\r\n normalColumns: SdGridColumn[],\r\n filter: any,\r\n externalFilter: any,\r\n externalFilters?: SdGridExternalFilter[]) => {\r\n this.init(fixedColums, normalColumns, filter, externalFilter, externalFilters);\r\n this.modal.open();\r\n }\r\n\r\n init = (\r\n fixedColums: SdGridColumn[],\r\n normalColumns: SdGridColumn[],\r\n filter: any,\r\n externalFilter: any,\r\n externalFilters?: SdGridExternalFilter[]) => {\r\n this.columns = [...fixedColums, ...normalColumns].filter(e => !e.filter?.disabled && e.type !== 'image');\r\n this.columns.forEach(column => {\r\n if (column.type === 'children') {\r\n column.children = column.children.filter(e => !e.filter?.disabled && e.type !== 'image');\r\n }\r\n });\r\n if (externalFilters) {\r\n this.externalFilters = externalFilters.filter(e => !e.disabled);\r\n } else {\r\n this.externalFilters = [];\r\n }\r\n this.filter = filter;\r\n this.externalFilter = this.initExternalFilter(externalFilters, externalFilter);\r\n for (const eFilter of this.externalFilters) {\r\n if (this.inlineExternal[eFilter.field] === undefined) {\r\n this.inlineExternal[eFilter.field] = true;\r\n }\r\n }\r\n for (const column of this.columns) {\r\n if (this.inlineColumn[column.field] === undefined) {\r\n this.inlineColumn[column.field] = true;\r\n }\r\n }\r\n }\r\n\r\n close = () => {\r\n this.modal.close();\r\n }\r\n\r\n onAccept() {\r\n if (this.filterOption?.multiple === false) {\r\n if (this.selectedField) {\r\n if (this.selectedField.startsWith('column')) {\r\n const field = this.selectedField.replace('column', '');\r\n this.accept.emit({\r\n filter: {\r\n [field]: this.filter[field]\r\n },\r\n externalFilter: {}\r\n });\r\n } else if (this.selectedField.startsWith('external')) {\r\n const field = this.selectedField.replace('external', '');\r\n this.accept.emit({\r\n filter: {},\r\n externalFilter: this.initExternalFilter(this.externalFilters, {\r\n [field]: this.externalFilter[field]\r\n })\r\n });\r\n }\r\n }\r\n } else {\r\n this.accept.emit({\r\n filter: this.filter,\r\n externalFilter: this.externalFilter\r\n });\r\n }\r\n this.modal.close();\r\n }\r\n\r\n onClear() {\r\n delete this.selectedCode;\r\n this.clear.emit();\r\n }\r\n\r\n #loadConfiguration = async () => {\r\n this.quickFilters = [];\r\n if (!this.key) {\r\n return;\r\n }\r\n const { get, has } = this.settingService.create<FilterConfiguration>({\r\n prefix: this.keyPrefix,\r\n key: this.key\r\n });\r\n if (!await has()) {\r\n return;\r\n }\r\n const configuration = await get();\r\n if (Array.isArray(configuration?.quickFilters)) {\r\n this.quickFilters = configuration.quickFilters;\r\n }\r\n this.selectedCode = configuration?.selectedQuickFilter || '';\r\n this.inlineExternal = configuration?.inlineExternal || {};\r\n this.inlineColumn = configuration?.inlineColumn || {};\r\n for (const externalFilter of this.externalFilters) {\r\n if (this.inlineExternal[externalFilter.field] === undefined) {\r\n this.inlineExternal[externalFilter.field] = true;\r\n }\r\n }\r\n for (const column of this.columns) {\r\n if (this.inlineColumn[column.field] === undefined) {\r\n this.inlineColumn[column.field] = true;\r\n }\r\n }\r\n }\r\n\r\n async updateConfiguration(selectedQuickFilterCode?: string) {\r\n if (!this.key) {\r\n return;\r\n }\r\n if (selectedQuickFilterCode !== undefined) {\r\n this.selectedCode = selectedQuickFilterCode;\r\n }\r\n const { set } = this.settingService.create<FilterConfiguration>({\r\n prefix: this.keyPrefix,\r\n key: this.key\r\n });\r\n await set({\r\n quickFilters: this.quickFilters,\r\n selectedQuickFilter: this.selectedCode,\r\n inlineExternal: this.inlineExternal,\r\n inlineColumn: this.inlineColumn\r\n });\r\n this.loadInlineFilter.emit({\r\n quickFilters: this.quickFilters || [],\r\n selectedQuickFilter: this.selectedCode || '',\r\n inlineExternal: this.inlineExternal,\r\n inlineColumn: this.inlineColumn\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n onSelectionChange = (change: MatSelectChange) => {\r\n const value = change?.value || '';\r\n if (value === this.newQuickFilter) {\r\n this.selectedCode = '';\r\n this.onCreateQuickFilter();\r\n this.ref.detectChanges();\r\n } else {\r\n const quickFilter = this.quickFilters.find(e => e.code === value);\r\n if (quickFilter) {\r\n this.onDetailQuickFilter(quickFilter);\r\n }\r\n }\r\n }\r\n\r\n onCreateQuickFilter = (ev?: Event) => {\r\n ev?.stopPropagation();\r\n ev?.preventDefault();\r\n this.matSelect?.close();\r\n this.popupQuickFilterDetail.open(this.columns, this.externalFilters);\r\n }\r\n\r\n onDetailQuickFilter = async (quickFilter?: QuickFilter) => {\r\n if (quickFilter) {\r\n this.selectedCode = quickFilter.code;\r\n const f1 = JSON.stringify(quickFilter.filter);\r\n const f2 = JSON.stringify(quickFilter.externalFilter);\r\n this.filter = JSON.parse(f1);\r\n this.externalFilter = this.initExternalFilter(this.externalFilters, JSON.parse(f2));\r\n await this.updateConfiguration();\r\n }\r\n }\r\n\r\n onEditQuickFilter = (ev: Event, quickFilter?: QuickFilter) => {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.matSelect?.close();\r\n if (quickFilter) {\r\n this.popupQuickFilterDetail.open(this.columns,\r\n this.externalFilters,\r\n quickFilter.filter,\r\n quickFilter.externalFilter,\r\n quickFilter.code);\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n onDeleteQuickFilter = (ev: Event, quickFilter?: QuickFilter) => {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.matSelect?.close();\r\n if (quickFilter) {\r\n this.notifyService.confirm(this.translateService.translate('Remove filter')).then(async () => {\r\n if (quickFilter.code === this.selectedCode) {\r\n this.selectedCode = '';\r\n }\r\n const idx = this.quickFilters.findIndex(e => e.code === quickFilter.code);\r\n this.quickFilters.splice(idx, 1);\r\n await this.updateConfiguration();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n onAcceptQuickFilter = async (args: { code: string, filter: any, externalFilter: any }) => {\r\n const quickFilter = this.quickFilters.find(e => e.code === args.code);\r\n if (!quickFilter) {\r\n this.quickFilters.push({\r\n code: args.code,\r\n filter: args.filter,\r\n externalFilter: this.initExternalFilter(this.externalFilters, args.externalFilter)\r\n });\r\n } else {\r\n quickFilter.filter = args.filter;\r\n quickFilter.externalFilter = this.initExternalFilter(this.externalFilters, args.externalFilter);\r\n }\r\n await this.updateConfiguration();\r\n }\r\n\r\n onInlineChange = () => {\r\n this.updateConfiguration();\r\n }\r\n\r\n private initExternalFilter = (externalFilters: SdGridExternalFilter[], externalFilter: any) => {\r\n externalFilter = externalFilter || {};\r\n externalFilters = externalFilters || [];\r\n externalFilters.forEach(e => {\r\n if (e.type === 'string') {\r\n externalFilter[e.field] = externalFilter[e.field] ?? e.default ?? '';\r\n return;\r\n }\r\n if (e.type === 'number') {\r\n externalFilter[e.field] = externalFilter[e.field] ?? e.default ?? undefined;\r\n return;\r\n }\r\n if (e.type === 'daterange') {\r\n externalFilter[e.field] = {\r\n from: externalFilter[e.field]?.from ?? e.defaultFrom ?? undefined,\r\n to: externalFilter[e.field]?.to ?? e.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (e.type === 'numberrange') {\r\n externalFilter[e.field] = {\r\n from: externalFilter[e.field]?.from ?? e.defaultFrom ?? undefined,\r\n to: externalFilter[e.field]?.to ?? e.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (e.type === 'daterangefull') {\r\n externalFilter[e.field] = {\r\n from: externalFilter[e.field]?.from ?? e.defaultFrom ?? undefined,\r\n to: externalFilter[e.field]?.to ?? e.defaultTo ?? undefined\r\n };\r\n return;\r\n }\r\n if (e.type === 'values') { // andn1\r\n externalFilter[e.field] = (externalFilter[e.field] || e.default) ?? '';\r\n return;\r\n }\r\n });\r\n return externalFilter;\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input } from '@angular/core';\r\nimport { SdGridColumn, SdGridExternalFilter } from '../../grid.model';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { QuickFilter } from '../grid-popup-filter/grid-popup-filter.model';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\n\r\n@Component({\r\n selector: 'sd-grid-popup-quick-filter-detail',\r\n templateUrl: './grid-popup-quick-filter-detail.component.html',\r\n styleUrls: ['./grid-popup-quick-filter-detail.component.scss']\r\n})\r\nexport class SdGridPopupQuickFilterDetail implements OnInit, AfterViewInit {\r\n displayKey = 'SDCUSTOM';\r\n isMobileOrTablet = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @Input() quickFilters: QuickFilter[];\r\n @Output() accept = new EventEmitter<any>();\r\n fields: Field[] = [];\r\n selectableFields: Field[] = [];\r\n columns: SdGridColumn[] = [];\r\n externalFilters: SdGridExternalFilter[] = [];\r\n filter: Filter = {};\r\n externalFilter: Filter = {};\r\n selectedField: {\r\n [key: string]: boolean;\r\n } = {};\r\n page: 1 | 2 = 1;\r\n code: string;\r\n constructor(\r\n deviceService: DeviceDetectorService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n open(columns: SdGridColumn[], externalFilters: SdGridExternalFilter[], filter?: Filter, externalFilter?: Filter, code?: string) {\r\n this.fields = [];\r\n this.filter = {};\r\n this.externalFilter = {};\r\n this.columns = columns;\r\n this.externalFilters = externalFilters;\r\n this.code = code;\r\n if (filter) {\r\n Object.keys(filter).forEach(key => {\r\n if (filter[key] === undefined || filter[key] === null || filter[key] === '') {\r\n return;\r\n }\r\n const column = columns.find(e => e.field === key);\r\n if (!column) {\r\n return;\r\n }\r\n this.filter[key] = filter[key];\r\n this.fields.push({\r\n ...column,\r\n id: 'column' + column.field,\r\n group: 'column',\r\n type: column.type,\r\n code: column.field,\r\n title: column.title\r\n });\r\n });\r\n }\r\n if (externalFilter) {\r\n Object.keys(externalFilter).forEach(key => {\r\n if (externalFilter[key] === undefined || externalFilter[key] === null || externalFilter[key] === '') {\r\n return;\r\n }\r\n if (key.startsWith(this.displayKey)) {\r\n this.externalFilter[key] = externalFilter[key];\r\n return;\r\n }\r\n const item = externalFilters.find(e => e.field === key);\r\n if (!item) {\r\n return;\r\n }\r\n if (item.type === 'daterange' || item.type === 'numberrange') {\r\n this.externalFilter[key] = { ...externalFilter[key] };\r\n if (!externalFilter[key]?.from && !externalFilter[key]?.to) {\r\n return;\r\n }\r\n this.fields.push({\r\n ...item,\r\n id: 'external' + item.field,\r\n group: 'external',\r\n type: item.type,\r\n code: item.field,\r\n title: item.title,\r\n fromTitle: item.fromTitle,\r\n toTitle: item.toTitle,\r\n });\r\n } else if (item.type === 'daterangefull') {\r\n this.externalFilter[key] = { ...externalFilter[key] };\r\n if (!externalFilter[key]?.from && !externalFilter[key]?.to) {\r\n return;\r\n }\r\n this.fields.push({\r\n ...item,\r\n id: 'external' + item.field,\r\n group: 'external',\r\n type: item.type,\r\n code: item.field,\r\n title: item.title\r\n });\r\n } else {\r\n this.externalFilter[key] = externalFilter[key];\r\n this.fields.push({\r\n ...item,\r\n id: 'external' + item.field,\r\n group: 'external',\r\n type: item.type,\r\n code: item.field,\r\n title: item.title\r\n });\r\n }\r\n });\r\n }\r\n const externalFields: Field[] = externalFilters?.map(e => ({\r\n ...e,\r\n id: 'external' + e.field,\r\n group: 'external',\r\n code: e.field,\r\n type: e.type,\r\n title: e.title\r\n })) || [];\r\n const columnFields: Field[] = [];\r\n columns?.filter(e => e.type !== 'image').forEach(column => {\r\n if ('children' in column) {\r\n column.children?.filter(e => e.type !== 'image').forEach(e => {\r\n columnFields.push({\r\n ...e,\r\n id: 'column' + e.field,\r\n group: 'column',\r\n code: e.field,\r\n type: e.type,\r\n title: e.title\r\n });\r\n });\r\n } else {\r\n columnFields.push({\r\n ...column,\r\n id: 'column' + column.field,\r\n group: 'column',\r\n code: column.field,\r\n type: column.type,\r\n title: column.title\r\n });\r\n }\r\n });\r\n this.selectableFields = [...externalFields, ...columnFields];\r\n this.selectedField = {};\r\n this.fields.forEach(e => this.selectedField[e.id] = true);\r\n this.page = this.fields.length > 0 ? 2 : 1;\r\n this.modal.open();\r\n }\r\n\r\n onAccept = () => {\r\n const execute = () => {\r\n const filter = {};\r\n const externalFilter = {};\r\n Object.keys(this.filter).forEach(key => {\r\n if (this.filter[key] === undefined || this.filter[key] === null || this.filter[key] === '') {\r\n return;\r\n }\r\n if (!this.fields.some(e => e.group === 'column' && e.code === key)) {\r\n return;\r\n }\r\n filter[key] = this.filter[key];\r\n });\r\n Object.keys(this.externalFilter).forEach(key => {\r\n if (this.externalFilter[key] === undefined || this.externalFilter[key] === null || this.externalFilter[key] === '') {\r\n return;\r\n }\r\n externalFilter[key] = this.externalFilter[key];\r\n });\r\n this.accept.emit({\r\n code: this.code,\r\n filter,\r\n externalFilter\r\n });\r\n this.modal.close();\r\n };\r\n if (!this.code) {\r\n this.notifyService.confirmWithInput('Enter your quick filter name').then((value: string) => {\r\n if (value) {\r\n if (this.quickFilters?.some(e => e.code === value)) {\r\n this.notifyService.notify.warning(this.translateService.translate('Code is existed'));\r\n return;\r\n }\r\n this.code = value;\r\n execute();\r\n }\r\n });\r\n } else {\r\n execute();\r\n }\r\n }\r\n\r\n onCancel = () => {\r\n this.modal.close();\r\n }\r\n\r\n onSelectField = (values: string[]) => {\r\n this.fields = this.selectableFields.filter(e => values.some(v => e.code === v));\r\n for (const field of this.fields) {\r\n if (field.group === 'external' && field.type.includes('range')) {\r\n this.externalFilter[field.code] = this.externalFilter[field.code] || {};\r\n }\r\n }\r\n }\r\n\r\n onSelectFields = () => {\r\n this.fields = this.selectableFields.filter(e => this.selectedField[e.id]);\r\n for (const field of this.fields) {\r\n if (field.group === 'external' && field.type.includes('range')) {\r\n this.externalFilter[field.code] = this.externalFilter[field.code] || {};\r\n }\r\n }\r\n }\r\n}\r\n\r\ninterface Field {\r\n id: string;\r\n group: 'column' | 'external';\r\n type: string;\r\n code: string;\r\n title?: string;\r\n fromTitle?: string;\r\n toTitle?: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface Filter {\r\n [field: string]: any;\r\n}\r\n","import { Component, OnInit, AfterViewInit, Input, ChangeDetectorRef } from '@angular/core';\r\n\r\nimport { SubOption } from '../../grid.model';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n\r\n@Component({\r\n selector: 'sd-grid-sub-information',\r\n templateUrl: './grid-sub-information.component.html',\r\n styleUrls: ['./grid-sub-information.component.scss']\r\n})\r\nexport class SdGridSubInformation implements OnInit, AfterViewInit {\r\n @Input() height = 'auto';\r\n @Input() option: SubOption;\r\n @Input() subItems: any[] = [];\r\n isMobileOrTablet: boolean;\r\n filter: any = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n deviceService: DeviceDetectorService\r\n ) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n updateFilter() {\r\n\r\n }\r\n trackById(index, item) {\r\n return item.id;\r\n }\r\n\r\n onEditorChange = () => {\r\n this.ref.detectChanges();\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { GridItem, GridColumnChildren } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-desktop-column-children-view',\r\n templateUrl: './grid-desktop-column-children-view.component.html',\r\n styleUrls: ['./grid-desktop-column-children-view.component.scss']\r\n})\r\nexport class GridDesktopColumnChildrenViewComponent {\r\n @Input() column: GridColumnChildren;\r\n @Input() item: GridItem;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridColumn } from '../grid.model';\r\n@Pipe({\r\n name: 'cellDesktopClassName'\r\n})\r\nexport class CellDesktopClassNamePipe implements PipeTransform {\r\n transform(value: any, rowData: GridItem, column: SdGridColumn, isChildren?: boolean): string {\r\n const classNames = [];\r\n if (column.click) {\r\n classNames.push('cursor-pointer');\r\n }\r\n if (isChildren) {\r\n classNames.push('c-children');\r\n }\r\n if (column.badge) {\r\n const badge = column.badge(rowData, value);\r\n if (badge) {\r\n classNames.push('c-badge');\r\n classNames.push('badge');\r\n if (badge === 'PRIMARY') {\r\n classNames.push('badge-primary');\r\n } else if (badge === 'SECONDARY') {\r\n classNames.push('badge-secondary');\r\n } else if (badge === 'WARNING') {\r\n classNames.push('badge-warning');\r\n } else if (badge === 'SUCCESS') {\r\n classNames.push('badge-success');\r\n } else if (badge === 'DANGER') {\r\n classNames.push('badge-danger');\r\n } else if (badge === 'LIGHT') {\r\n classNames.push('badge-light');\r\n } else if (badge === 'DARK') {\r\n classNames.push('badge-dark');\r\n }\r\n }\r\n }\r\n return classNames.join(' ');\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridColumn } from '../grid.model';\r\n\r\n@Pipe({\r\n name: 'cellMobileClassName'\r\n})\r\nexport class CellMobileClassNamePipe implements PipeTransform {\r\n transform(value: any, rowData: GridItem, column: SdGridColumn): string {\r\n const classNames = [];\r\n if (column.click) {\r\n classNames.push('cursor-pointer');\r\n }\r\n if (column.badge) {\r\n const badge = column.badge(rowData, value);\r\n if (badge) {\r\n classNames.push('badge');\r\n classNames.push('c-badge');\r\n if (badge === 'PRIMARY') {\r\n classNames.push('badge-primary');\r\n } else if (badge === 'SECONDARY') {\r\n classNames.push('badge-secondary');\r\n } else if (badge === 'WARNING') {\r\n classNames.push('badge-warning');\r\n } else if (badge === 'SUCCESS') {\r\n classNames.push('badge-success');\r\n } else if (badge === 'DANGER') {\r\n classNames.push('badge-danger');\r\n } else if (badge === 'LIGHT') {\r\n classNames.push('badge-light');\r\n } else if (badge === 'DARK') {\r\n classNames.push('badge-dark');\r\n }\r\n }\r\n }\r\n return classNames.join(' ');\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, ColumnCommand } from '../grid.model';\r\n@Pipe({\r\n name: 'columnCommandFilter'\r\n})\r\nexport class ColumnCommandFilterPipe implements PipeTransform {\r\n async transform(commands: ColumnCommand[], item: GridItem): Promise<ColumnCommand[]> {\r\n const results: ColumnCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n const { hiddenByItem } = command;\r\n if (!hiddenByItem) {\r\n results.push(command);\r\n } else {\r\n const hidden = hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (!await hidden) {\r\n results.push(command);\r\n }\r\n } else {\r\n if (!hidden) {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem } from '../grid.model';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n@Pipe({\r\n name: 'columnHtmlTemplate'\r\n})\r\nexport class ColumnHtmlTemplatePipe implements PipeTransform {\r\n private isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(value: any, rowData: GridItem, htmlTemplate: (value: any, rowData?: any, isMobileOrTablet?: boolean) => string): string {\r\n if (typeof (htmlTemplate) !== 'function') {\r\n return value;\r\n }\r\n return htmlTemplate(value, rowData, this.isMobileOrTablet);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'columnTitle'\r\n})\r\nexport class ColumnTitlePipe implements PipeTransform {\r\n async transform(item: GridItem, title: string, dynamicTitle: ((rowData: any) => string | Promise<string>)): Promise<string> {\r\n if (!title) {\r\n return '';\r\n }\r\n if (dynamicTitle) {\r\n const result = dynamicTitle(item);\r\n if (result instanceof Promise) {\r\n return (await result) || title;\r\n }\r\n return result || title;\r\n }\r\n return title;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class ColumnValuesPipe implements PipeTransform {\r\n private static cache: {\r\n [key: string]: {\r\n values: ValueData[],\r\n obj: {\r\n [key: string]: ValueData\r\n }\r\n }\r\n } = {};\r\n constructor(private utilityService: SdUtilityService) { }\r\n transform(value: any, values: ValueData[]): ValueData {\r\n const hashKey = hash(values);\r\n if (!ColumnValuesPipe.cache[hashKey]) {\r\n ColumnValuesPipe.cache[hashKey] = {\r\n values,\r\n obj: this.utilityService.arrayToObject(values, 'value')\r\n };\r\n }\r\n if (!ColumnValuesPipe.cache[hashKey].obj[value]) {\r\n return {\r\n value,\r\n text: value\r\n };\r\n }\r\n return ColumnValuesPipe.cache[hashKey].obj[value];\r\n\r\n }\r\n}\r\n\r\ninterface ValueData {\r\n value: string;\r\n text: string;\r\n icon?: string;\r\n color?: string;\r\n backgroundColor?: string;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'commandDisabled'\r\n})\r\nexport class CommandDisabledPipe implements PipeTransform {\r\n transform(disabled: boolean | ((item?: any) => boolean), item: GridItem): boolean {\r\n if (!disabled) {\r\n return false;\r\n }\r\n if (typeof (disabled) === 'boolean') {\r\n return disabled;\r\n }\r\n return disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridCommand, GridCommandNoChildren } from '../grid.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class CommandFilterPipe implements PipeTransform {\r\n async transform(commands: SdGridCommand[], item: GridItem): Promise<SdGridCommand[]> {\r\n const results: SdGridCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n if ('children' in command) {\r\n let flag = true;\r\n const { hiddenByItem } = command;\r\n if (hiddenByItem) {\r\n const hidden = hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (await hidden) {\r\n flag = false;\r\n }\r\n } else {\r\n if (hidden) {\r\n flag = false;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n const children: GridCommandNoChildren[] = [];\r\n for (const childCommand of command.children) {\r\n if (!childCommand.hiddenByItem) {\r\n children.push(childCommand);\r\n } else {\r\n const hidden = childCommand.hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (!await hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length) {\r\n results.push({\r\n ...command,\r\n children\r\n });\r\n }\r\n }\r\n } else {\r\n const { hiddenByItem } = command;\r\n if (!hiddenByItem) {\r\n results.push(command);\r\n } else {\r\n const hidden = hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (!await hidden) {\r\n results.push(command);\r\n }\r\n } else {\r\n if (!hidden) {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridCommand } from '../grid.model';\r\n@Pipe({\r\n name: 'commandHidden'\r\n})\r\nexport class CommandHidden implements PipeTransform {\r\n async transform(item: GridItem, command: SdGridCommand): Promise<boolean> {\r\n const { hidden, hiddenByItem } = command;\r\n if (hidden) {\r\n return true;\r\n }\r\n if (hiddenByItem) {\r\n const hiddenResult = hiddenByItem(item);\r\n if (hiddenResult instanceof Promise) {\r\n if (await hiddenResult) {\r\n return true;\r\n }\r\n } else {\r\n if (hiddenResult) {\r\n return true;\r\n }\r\n }\r\n }\r\n if ('children' in command) {\r\n const results = [];\r\n for (const childCommand of command.children) {\r\n const { hidden: childHidden, hiddenByItem: childHiddenByItem } = childCommand;\r\n if (!childHidden && !childHiddenByItem) {\r\n results.push(childCommand);\r\n } else {\r\n if (childHiddenByItem) {\r\n const hiddenResult = childHiddenByItem(item);\r\n if (hiddenResult instanceof Promise) {\r\n if (!await hiddenResult) {\r\n results.push(childCommand);\r\n }\r\n } else {\r\n if (!hiddenResult) {\r\n results.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (results.length === 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class CommandIconPipe implements PipeTransform {\r\n transform(icon: string | ((item?: any) => string), item: GridItem): string {\r\n if (!icon) {\r\n return '';\r\n }\r\n if (typeof (icon) === 'string') {\r\n return icon;\r\n }\r\n return icon(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class CommandTitlePipe implements PipeTransform {\r\n transform(title: string | ((item?: any) => string), item: GridItem): string {\r\n if (!title) {\r\n return '';\r\n }\r\n if (typeof (title) === 'string') {\r\n return title;\r\n }\r\n return title(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, DynamicEditorItem } from '../grid.model';\r\n@Pipe({\r\n name: 'editorDynamicItem'\r\n})\r\nexport class EditorDynamicItemPipe implements PipeTransform {\r\n private previous: Date;\r\n private previousResults: any[] = [];\r\n private delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện gọi hàm\r\n async transform(value: any, item: GridItem, editor: DynamicEditorItem) {\r\n if (!editor.dependOnField) {\r\n return editor.items || [];\r\n }\r\n this.previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.previous.getTime();\r\n if (dif < this.delay) {\r\n return this.previousResults;\r\n }\r\n const items = editor.items || [];\r\n if (typeof (items) === 'function') {\r\n const results = items(item, value);\r\n if (results instanceof Promise) {\r\n this.previousResults = await results;\r\n } else {\r\n this.previousResults = results;\r\n }\r\n } else {\r\n this.previousResults = items;\r\n }\r\n this.previousResults = this.previousResults || [];\r\n return this.previousResults;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridColumn, GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'editorSubInformationHandler'\r\n})\r\nexport class EditorSubInformationHandlerPipe implements PipeTransform {\r\n transform(value: any, item: GridItem, columns: SdGridColumn[]): boolean {\r\n const visible = (column: SdGridColumn) => {\r\n if (column.type === 'children') {\r\n return false;\r\n }\r\n let isDisabled = false;\r\n\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (column.editor) {\r\n isDisabled = typeof (column.editor.disabled) === 'function' ? column.editor.disabled(item) : column.editor.disabled;\r\n }\r\n // Nếu bị disabled return false\r\n if (isDisabled) {\r\n return false;\r\n }\r\n // Nếu bị disabled return false\r\n if (isDisabled) {\r\n return false;\r\n }\r\n\r\n // Hiển thị editor nếu dòng đó:\r\n // Đang được edit: editingStatus\r\n return item.editingStatus\r\n // Được thiết lập alwayDisplay\r\n || (column.editor && column.editor.alwayDisplay);\r\n };\r\n item.editorHandler = item.editorHandler || {};\r\n for (const column of columns) {\r\n item.editorHandler.disabled = false;\r\n item.editorHandler[column.field] = {};\r\n\r\n if (item.editorHandler.disabled) {\r\n item.editorHandler[column.field].visible = false;\r\n } else {\r\n item.editorHandler[column.field].visible = visible(column);\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'editorValidate'\r\n})\r\nexport class EditorValidatePipe implements PipeTransform {\r\n private previous: Date;\r\n private delay = 1000; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện validate\r\n async transform(value: string, item: GridItem, validate: (item: GridItem) => string | Promise<string>): Promise<boolean> {\r\n this.previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.previous.getTime();\r\n if (dif < this.delay) {\r\n return true;\r\n }\r\n item.editorHandler = item.editorHandler || {};\r\n if (!validate) {\r\n item.editorHandler.errorMessage = null;\r\n return true;\r\n }\r\n const result = validate(item);\r\n if (result instanceof Promise) {\r\n item.editorHandler.errorMessage = await result;\r\n return true;\r\n } else {\r\n item.editorHandler.errorMessage = result;\r\n return true;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridColumn, GridItem } from '../grid.model';\r\n\r\n@Pipe({\r\n name: 'filterMobile',\r\n pure: false\r\n})\r\nexport class FilterMobilePipe implements PipeTransform {\r\n transform(columns: SdGridColumn[], item: GridItem): SdGridColumn[] {\r\n // Những giá trị undefined, null và rỗng sẽ bỏ qua khi hiển thị trên mobile\r\n return columns.filter(column => (item[column.field] !== undefined\r\n && item[column.field] !== null\r\n && item[column.field] !== '')\r\n || column.htmlTemplate\r\n || column.type === 'children'\r\n || (column.type === 'string' && column.commands?.length > 0));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridCommand } from '../grid.model';\r\n@Pipe({\r\n name: 'mobileCommandFilter'\r\n})\r\nexport class MobileCommandFilterPipe implements PipeTransform {\r\n async transform(commands: SdGridCommand[], item: GridItem): Promise<SdGridCommand[]> {\r\n const results: SdGridCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n if ('children' in command) {\r\n let flag = true;\r\n const { hiddenByItem } = command;\r\n if (hiddenByItem) {\r\n const hidden = hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (await hidden) {\r\n flag = false;\r\n }\r\n } else {\r\n if (hidden) {\r\n flag = false;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n for (const childCommand of command.children) {\r\n if (!childCommand.hiddenByItem) {\r\n results.push(childCommand);\r\n } else {\r\n const hidden = childCommand.hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (!await hidden) {\r\n results.push(childCommand);\r\n }\r\n } else {\r\n if (!hidden) {\r\n results.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n const { hiddenByItem } = command;\r\n if (!hiddenByItem) {\r\n results.push(command);\r\n } else {\r\n const hidden = hiddenByItem(item);\r\n if (hidden instanceof Promise) {\r\n if (!await hidden) {\r\n results.push(command);\r\n }\r\n } else {\r\n if (!hidden) {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridColumn } from '../grid.model';\r\n\r\n@Pipe({\r\n name: 'mobileViewHtmlTempate'\r\n})\r\nexport class MobileViewHtmlTemplatePipe implements PipeTransform {\r\n transform(rowData: GridItem, columns: SdGridColumn[], htmlTemplate: (rowData: any, columns?: SdGridColumn[]) => string): string {\r\n return htmlTemplate(rowData, columns);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GridItem, SdGridColumn } from '../grid.model';\r\nimport { DecimalPipe } from '@angular/common';\r\n@Pipe({\r\n name: 'valueTransform'\r\n})\r\nexport class ValueTransformPipe implements PipeTransform {\r\n constructor(private decimalPipe: DecimalPipe) {}\r\n transform(value: any, rowData: GridItem, column: SdGridColumn): string {\r\n if (column.transform) {\r\n return column.transform(value, rowData);\r\n } else if (column.type === 'number' && Number.isNumber(value)) {\r\n return this.decimalPipe.transform(value, '1.0-2');\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridColumn, GridItem } from '../grid.model';\r\n@Pipe({\r\n name: 'editorPopupVisible'\r\n})\r\nexport class EditorPopupVisiblePipe implements PipeTransform {\r\n transform(column: SdGridColumn, item: GridItem): boolean {\r\n if (column.type === 'children') {\r\n return false;\r\n }\r\n if (typeof (column.editor?.hidden) === 'boolean' && column.editor.hidden) {\r\n return false;\r\n }\r\n if (typeof (column.editor?.hidden) === 'function' && column.editor.hidden(item)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdSubHeaderDef]'\r\n})\r\nexport class SdSubHeaderDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, ViewChild, Input } from '@angular/core';\r\nimport { SdUploadExcel, SdUploadExcelColumn, SdUploadExcelOption } from '@sd-angular/core/upload-excel';\r\nimport { SdGridColumn } from '../../grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-import-excel',\r\n templateUrl: './grid-import-excel.component.html'\r\n})\r\nexport class SdGridImportExcel {\r\n @Input() key: string;\r\n @Input() accept: (item: any[], successItems: any[], errorItems: any[], warningItems: []) => void | Promise<void>;\r\n @Input() set columns(gridColumns: SdGridColumn[]) {\r\n const columns: SdUploadExcelColumn[] = [];\r\n gridColumns.forEach(column => {\r\n if (column.ignoreImport) {\r\n return;\r\n }\r\n if (column.type === 'string' || column.type === 'color') {\r\n columns.push({\r\n type: 'string',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width\r\n });\r\n } else if (column.type === 'number') {\r\n columns.push({\r\n type: 'number',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width\r\n });\r\n } else if (column.type === 'bool') {\r\n columns.push({\r\n type: 'bool',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width\r\n });\r\n } else if (column.type === 'date') {\r\n columns.push({\r\n type: 'date',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width\r\n });\r\n } else if (column.type === 'datetime' || column.type === 'time') {\r\n columns.push({\r\n type: 'datetime',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width\r\n });\r\n } else if (column.type === 'values') {\r\n columns.push({\r\n type: 'values',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n values: column.values.map(e => e.value),\r\n });\r\n } else if (column.type === 'radio') {\r\n columns.push({\r\n type: 'radio',\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n values: column.values.map(e => e[column.valueField])\r\n });\r\n }\r\n if (column.type === 'children' && column.children?.length) {\r\n column.children.forEach(childColumn => {\r\n if (childColumn.ignoreImport) {\r\n return;\r\n }\r\n if (childColumn.type === 'string' || childColumn.type === 'color') {\r\n columns.push({\r\n type: 'string',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width\r\n });\r\n } else if (childColumn.type === 'number') {\r\n columns.push({\r\n type: 'number',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width\r\n });\r\n } else if (childColumn.type === 'bool') {\r\n columns.push({\r\n type: 'bool',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width\r\n });\r\n } else if (childColumn.type === 'date') {\r\n columns.push({\r\n type: 'date',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width\r\n });\r\n } else if (childColumn.type === 'datetime' || childColumn.type === 'time') {\r\n columns.push({\r\n type: 'datetime',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width\r\n });\r\n } else if (childColumn.type === 'values') {\r\n columns.push({\r\n type: 'values',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width,\r\n values: childColumn.values.map(e => e.value),\r\n });\r\n } else if (childColumn.type === 'radio') {\r\n columns.push({\r\n type: 'radio',\r\n field: childColumn.field,\r\n title: childColumn.title,\r\n width: childColumn.width,\r\n values: childColumn.values.map(e => e[childColumn.valueField])\r\n });\r\n }\r\n });\r\n }\r\n });\r\n this.option = {\r\n key: `GridImport${this.key}`,\r\n columns,\r\n onAccept: this.accept\r\n };\r\n }\r\n option: SdUploadExcelOption;\r\n @ViewChild(SdUploadExcel) control: SdUploadExcel;\r\n constructor() { }\r\n\r\n open = () => {\r\n this.control?.open();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdGrid } from './grid.component';\r\nimport { SdDynamicItems } from './pipes/dynamic-items.pipe';\r\nimport { SdGridConfig } from './components/grid-config/grid-config.component';\r\nimport { SdGridDesktopColumnEdit } from './components/grid-desktop-column-edit/grid-desktop-column-edit.component';\r\nimport { SdGridDesktopColumnView } from './components/grid-desktop-column-view/grid-desktop-column-view.component';\r\nimport { SdGridDesktopInlineFilter } from './components/grid-desktop-inline-filter/grid-desktop-inline-filter.component';\r\nimport { SdGridMobileItemView } from './components/grid-mobile-item-view/grid-mobile-item-view.component';\r\nimport { SdGridPopupEditor } from './components/grid-popup-editor/grid-popup-editor.component';\r\nimport { SdGridPopupExportExcel } from './components/grid-popup-export-excel/grid-popup-export-excel.component';\r\nimport { SdGridPopupFilter } from './components/grid-popup-filter/grid-popup-filter.component';\r\nimport { SdGridPopupQuickFilterDetail } from './components/grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component';\r\nimport { SdGridSubInformation } from './components/grid-sub-information/grid-sub-information.component';\r\nimport { GridDesktopColumnChildrenViewComponent } from './components/grid-desktop-column-children-view/grid-desktop-column-children-view.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { CellDesktopClassNamePipe } from './pipes/cell-desktop-class-name.pipe';\r\nimport { CellMobileClassNamePipe } from './pipes/cell-mobile-class-name.pipe';\r\nimport { ColumnCommandFilterPipe } from './pipes/column-command-filter.pipe';\r\nimport { ColumnHtmlTemplatePipe } from './pipes/column-html-template.pipe';\r\nimport { ColumnTitlePipe } from './pipes/column-title.pipe';\r\nimport { ColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { CommandDisabledPipe } from './pipes/command-disabled.pipe';\r\nimport { CommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { CommandHidden } from './pipes/command-hidden.pipe';\r\nimport { CommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { CommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { EditorDynamicItemPipe } from './pipes/editor-dynamic-item.pipe';\r\nimport { EditorHandlerPipe } from './pipes/editor-handler.pipe';\r\nimport { EditorSubInformationHandlerPipe } from './pipes/editor-sub-information-handler.pipe';\r\nimport { EditorValidatePipe } from './pipes/editor-validate.pipe';\r\nimport { FilterMobilePipe } from './pipes/filter-mobile.pipe';\r\nimport { MobileCommandFilterPipe } from './pipes/mobile-command-filter';\r\nimport { MobileViewHtmlTemplatePipe } from './pipes/mobile-view-html-template.pipe';\r\nimport { ValueTransformPipe } from './pipes/value-transform.pipe';\r\nimport { EditorPopupVisiblePipe } from './pipes/editor-popup-visible.pipe';\r\nimport { SdCellDefDirective } from './directives/cell-def.directive';\r\nimport { SdCellEditorDefDirective } from './directives/cell-editor-def.directive';\r\nimport { SdCellFooterDevDirective } from './directives/cell-footer-def.directive';\r\nimport { SdSubHeaderDefDirective } from './directives/sub-information-header-def.directive';\r\nimport { SdGridImportExcel } from './components/grid-import-excel/grid-import-excel.component';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdUploadExcelModule } from '@sd-angular/core/upload-excel';\r\nimport { HandlerLocal } from './models/handler-local';\r\nimport { HandlerDotnet } from './models/handler-dotnet';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatSelectModule,\r\n MatCheckboxModule,\r\n SdUploadExcelModule,\r\n SdFormModule,\r\n SdServiceModule\r\n ],\r\n declarations: [\r\n SdGrid,\r\n SdGridConfig,\r\n SdGridDesktopColumnEdit,\r\n SdGridDesktopColumnView,\r\n SdGridDesktopInlineFilter,\r\n SdGridMobileItemView,\r\n SdGridPopupEditor,\r\n SdGridPopupExportExcel,\r\n SdGridPopupFilter,\r\n SdGridPopupQuickFilterDetail,\r\n SdGridSubInformation,\r\n SdGridImportExcel,\r\n\r\n GridDesktopColumnChildrenViewComponent,\r\n CellDesktopClassNamePipe,\r\n CellMobileClassNamePipe,\r\n ColumnCommandFilterPipe,\r\n ColumnHtmlTemplatePipe,\r\n ColumnTitlePipe,\r\n ColumnValuesPipe,\r\n CommandDisabledPipe,\r\n CommandFilterPipe,\r\n CommandHidden,\r\n CommandIconPipe,\r\n CommandTitlePipe,\r\n SdDynamicItems,\r\n EditorDynamicItemPipe,\r\n EditorHandlerPipe,\r\n EditorSubInformationHandlerPipe,\r\n EditorValidatePipe,\r\n FilterMobilePipe,\r\n MobileCommandFilterPipe,\r\n MobileViewHtmlTemplatePipe,\r\n ValueTransformPipe,\r\n EditorPopupVisiblePipe,\r\n\r\n SdCellDefDirective,\r\n SdCellEditorDefDirective,\r\n SdCellFooterDevDirective,\r\n SdSubHeaderDefDirective,\r\n ],\r\n exports: [\r\n SdGrid,\r\n SdCellDefDirective,\r\n SdCellEditorDefDirective,\r\n SdCellFooterDevDirective,\r\n SdSubHeaderDefDirective,\r\n ],\r\n providers: [\r\n HandlerLocal,\r\n HandlerDotnet,\r\n EditorHandlerPipe\r\n ]\r\n})\r\nexport class SdGridModule {\r\n}\r\n","export class QuickFilter {\r\n code: string;\r\n filter: {\r\n [field: string]: any\r\n };\r\n externalFilter: {\r\n [field: string]: any\r\n };\r\n}\r\n\r\nexport interface FilterConfiguration {\r\n selectedQuickFilter: string;\r\n quickFilters: QuickFilter[];\r\n inlineExternal: {\r\n [key: string]: boolean;\r\n };\r\n inlineColumn: {\r\n [key: string]: boolean;\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"]}