@zeedhi/common 3.0.5 → 3.0.6

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 (257) hide show
  1. package/dist/types/components/zd-date-input/date-input.d.ts +1 -1
  2. package/dist/types/components/zd-date-range/date-range.d.ts +3 -1
  3. package/dist/types/components/zd-iterable/iterable.d.ts +9 -0
  4. package/dist/types/utils/date-utils/date-utils.d.ts +1 -0
  5. package/dist/zd-common.js +75 -24
  6. package/dist/zd-common.min.js +75 -24
  7. package/environments.json +6 -0
  8. package/jest.config.cjs +1 -0
  9. package/package.json +6 -3
  10. package/src/components/zd-date-input/date-input.ts +9 -21
  11. package/src/components/zd-date-range/date-range.ts +27 -4
  12. package/src/components/zd-iterable/iterable.ts +41 -3
  13. package/src/utils/date-utils/date-utils.ts +18 -0
  14. package/tests/unit/components/zd-component/component.spec.ts +3 -2
  15. package/tests/unit/components/zd-date-range/date-range.spec.ts +189 -23
  16. package/tests/unit/components/zd-grid/grid.spec.ts +48 -35
  17. package/tests/unit/components/zd-grid-editable/data-editor.spec.ts +1 -1
  18. package/tests/unit/components/zd-grid-editable/grid-editable.spec.ts +1 -1
  19. package/tests/unit/components/zd-iterable/column.spec.ts +42 -0
  20. package/tests/unit/utils/mock-console.ts +18 -0
  21. package/.package.json +0 -45
  22. package/coverage/clover.xml +0 -5741
  23. package/coverage/coverage-final.json +0 -144
  24. package/coverage/lcov-report/base.css +0 -224
  25. package/coverage/lcov-report/block-navigation.js +0 -87
  26. package/coverage/lcov-report/favicon.png +0 -0
  27. package/coverage/lcov-report/index.html +0 -1316
  28. package/coverage/lcov-report/prettify.css +0 -1
  29. package/coverage/lcov-report/prettify.js +0 -2
  30. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  31. package/coverage/lcov-report/sorter.js +0 -210
  32. package/coverage/lcov-report/src/components/index.html +0 -116
  33. package/coverage/lcov-report/src/components/index.ts.html +0 -730
  34. package/coverage/lcov-report/src/components/zd-alert/alert.ts.html +0 -502
  35. package/coverage/lcov-report/src/components/zd-alert/index.html +0 -116
  36. package/coverage/lcov-report/src/components/zd-badge/badge.ts.html +0 -226
  37. package/coverage/lcov-report/src/components/zd-badge/index.html +0 -116
  38. package/coverage/lcov-report/src/components/zd-breadcrumbs/breadcrumbs.ts.html +0 -226
  39. package/coverage/lcov-report/src/components/zd-breadcrumbs/index.html +0 -116
  40. package/coverage/lcov-report/src/components/zd-button/button.ts.html +0 -706
  41. package/coverage/lcov-report/src/components/zd-button/index.html +0 -116
  42. package/coverage/lcov-report/src/components/zd-button-group/button-group.ts.html +0 -412
  43. package/coverage/lcov-report/src/components/zd-button-group/index.html +0 -116
  44. package/coverage/lcov-report/src/components/zd-card/card.ts.html +0 -748
  45. package/coverage/lcov-report/src/components/zd-card/index.html +0 -116
  46. package/coverage/lcov-report/src/components/zd-carousel/carousel.ts.html +0 -949
  47. package/coverage/lcov-report/src/components/zd-carousel/index.html +0 -116
  48. package/coverage/lcov-report/src/components/zd-checkbox/checkbox.ts.html +0 -148
  49. package/coverage/lcov-report/src/components/zd-checkbox/index.html +0 -116
  50. package/coverage/lcov-report/src/components/zd-checkbox-multiple/checkbox-multiple.ts.html +0 -313
  51. package/coverage/lcov-report/src/components/zd-checkbox-multiple/index.html +0 -116
  52. package/coverage/lcov-report/src/components/zd-chip/chip.ts.html +0 -352
  53. package/coverage/lcov-report/src/components/zd-chip/index.html +0 -116
  54. package/coverage/lcov-report/src/components/zd-code-viewer/code-viewer.ts.html +0 -682
  55. package/coverage/lcov-report/src/components/zd-code-viewer/index.html +0 -116
  56. package/coverage/lcov-report/src/components/zd-col/col.ts.html +0 -250
  57. package/coverage/lcov-report/src/components/zd-col/index.html +0 -116
  58. package/coverage/lcov-report/src/components/zd-collapse-card/collapse-card.ts.html +0 -343
  59. package/coverage/lcov-report/src/components/zd-collapse-card/index.html +0 -116
  60. package/coverage/lcov-report/src/components/zd-component/child-not-found.ts.html +0 -109
  61. package/coverage/lcov-report/src/components/zd-component/component-render.ts.html +0 -160
  62. package/coverage/lcov-report/src/components/zd-component/component.ts.html +0 -1084
  63. package/coverage/lcov-report/src/components/zd-component/index.html +0 -146
  64. package/coverage/lcov-report/src/components/zd-container/container.ts.html +0 -289
  65. package/coverage/lcov-report/src/components/zd-container/index.html +0 -116
  66. package/coverage/lcov-report/src/components/zd-currency/currency.ts.html +0 -259
  67. package/coverage/lcov-report/src/components/zd-currency/index.html +0 -116
  68. package/coverage/lcov-report/src/components/zd-date-input/date-input.ts.html +0 -1798
  69. package/coverage/lcov-report/src/components/zd-date-input/index.html +0 -116
  70. package/coverage/lcov-report/src/components/zd-date-range/date-range.ts.html +0 -2167
  71. package/coverage/lcov-report/src/components/zd-date-range/index.html +0 -116
  72. package/coverage/lcov-report/src/components/zd-dialog/dialog.ts.html +0 -541
  73. package/coverage/lcov-report/src/components/zd-dialog/index.html +0 -116
  74. package/coverage/lcov-report/src/components/zd-divider/divider.ts.html +0 -178
  75. package/coverage/lcov-report/src/components/zd-divider/index.html +0 -116
  76. package/coverage/lcov-report/src/components/zd-dropdown/dropdown.ts.html +0 -460
  77. package/coverage/lcov-report/src/components/zd-dropdown/index.html +0 -116
  78. package/coverage/lcov-report/src/components/zd-footer/footer.ts.html +0 -451
  79. package/coverage/lcov-report/src/components/zd-footer/index.html +0 -116
  80. package/coverage/lcov-report/src/components/zd-form/form.ts.html +0 -1075
  81. package/coverage/lcov-report/src/components/zd-form/index.html +0 -116
  82. package/coverage/lcov-report/src/components/zd-frame/frame.ts.html +0 -763
  83. package/coverage/lcov-report/src/components/zd-frame/index.html +0 -116
  84. package/coverage/lcov-report/src/components/zd-frame-page/frame-page.ts.html +0 -169
  85. package/coverage/lcov-report/src/components/zd-frame-page/index.html +0 -116
  86. package/coverage/lcov-report/src/components/zd-grid/data-navigator.ts.html +0 -304
  87. package/coverage/lcov-report/src/components/zd-grid/data-selector.ts.html +0 -532
  88. package/coverage/lcov-report/src/components/zd-grid/grid-column.ts.html +0 -709
  89. package/coverage/lcov-report/src/components/zd-grid/grid-events.ts.html +0 -244
  90. package/coverage/lcov-report/src/components/zd-grid/grid.ts.html +0 -1042
  91. package/coverage/lcov-report/src/components/zd-grid/index.html +0 -266
  92. package/coverage/lcov-report/src/components/zd-grid/index.ts.html +0 -118
  93. package/coverage/lcov-report/src/components/zd-grid/iterable-table.ts.html +0 -274
  94. package/coverage/lcov-report/src/components/zd-grid/keymap-merger.ts.html +0 -241
  95. package/coverage/lcov-report/src/components/zd-grid/keymap-navigation.ts.html +0 -313
  96. package/coverage/lcov-report/src/components/zd-grid/table-action-builder.ts.html +0 -427
  97. package/coverage/lcov-report/src/components/zd-grid/view-navigator.ts.html +0 -175
  98. package/coverage/lcov-report/src/components/zd-grid-editable/data-editor-with-add.ts.html +0 -826
  99. package/coverage/lcov-report/src/components/zd-grid-editable/data-editor.ts.html +0 -1570
  100. package/coverage/lcov-report/src/components/zd-grid-editable/errors/index.html +0 -146
  101. package/coverage/lcov-report/src/components/zd-grid-editable/errors/index.ts.html +0 -91
  102. package/coverage/lcov-report/src/components/zd-grid-editable/errors/not-editing.ts.html +0 -109
  103. package/coverage/lcov-report/src/components/zd-grid-editable/errors/row-not-found.ts.html +0 -109
  104. package/coverage/lcov-report/src/components/zd-grid-editable/grid-column-editable.ts.html +0 -130
  105. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable-controller.ts.html +0 -139
  106. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable-events.ts.html +0 -430
  107. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable.ts.html +0 -1477
  108. package/coverage/lcov-report/src/components/zd-grid-editable/index.html +0 -221
  109. package/coverage/lcov-report/src/components/zd-grid-editable/index.ts.html +0 -109
  110. package/coverage/lcov-report/src/components/zd-grid-editable/keymap-editing.ts.html +0 -139
  111. package/coverage/lcov-report/src/components/zd-header/header.ts.html +0 -502
  112. package/coverage/lcov-report/src/components/zd-header/index.html +0 -116
  113. package/coverage/lcov-report/src/components/zd-icon/icon.ts.html +0 -325
  114. package/coverage/lcov-report/src/components/zd-icon/index.html +0 -116
  115. package/coverage/lcov-report/src/components/zd-image/image.ts.html +0 -424
  116. package/coverage/lcov-report/src/components/zd-image/index.html +0 -116
  117. package/coverage/lcov-report/src/components/zd-increment/increment.ts.html +0 -436
  118. package/coverage/lcov-report/src/components/zd-increment/index.html +0 -116
  119. package/coverage/lcov-report/src/components/zd-input/index.html +0 -131
  120. package/coverage/lcov-report/src/components/zd-input/input-factory.ts.html +0 -130
  121. package/coverage/lcov-report/src/components/zd-input/input.ts.html +0 -1345
  122. package/coverage/lcov-report/src/components/zd-iterable/column-not-found.ts.html +0 -109
  123. package/coverage/lcov-report/src/components/zd-iterable/column.ts.html +0 -823
  124. package/coverage/lcov-report/src/components/zd-iterable/conditions-manager.ts.html +0 -523
  125. package/coverage/lcov-report/src/components/zd-iterable/index.html +0 -281
  126. package/coverage/lcov-report/src/components/zd-iterable/iterable-columns-button-controller.ts.html +0 -136
  127. package/coverage/lcov-report/src/components/zd-iterable/iterable-columns-button.ts.html +0 -313
  128. package/coverage/lcov-report/src/components/zd-iterable/iterable-controller.ts.html +0 -166
  129. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-component.ts.html +0 -244
  130. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-info.ts.html +0 -106
  131. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-size.ts.html +0 -421
  132. package/coverage/lcov-report/src/components/zd-iterable/iterable-pagination.ts.html +0 -208
  133. package/coverage/lcov-report/src/components/zd-iterable/iterable.ts.html +0 -820
  134. package/coverage/lcov-report/src/components/zd-iterable/search.ts.html +0 -343
  135. package/coverage/lcov-report/src/components/zd-iterable-component-render/index.html +0 -116
  136. package/coverage/lcov-report/src/components/zd-iterable-component-render/iterable-component-render.ts.html +0 -592
  137. package/coverage/lcov-report/src/components/zd-layout/index.html +0 -116
  138. package/coverage/lcov-report/src/components/zd-layout/layout.ts.html +0 -145
  139. package/coverage/lcov-report/src/components/zd-list/index.html +0 -161
  140. package/coverage/lcov-report/src/components/zd-list/item-not-found.ts.html +0 -109
  141. package/coverage/lcov-report/src/components/zd-list/list-group.ts.html +0 -241
  142. package/coverage/lcov-report/src/components/zd-list/list-item.ts.html +0 -298
  143. package/coverage/lcov-report/src/components/zd-list/list.ts.html +0 -460
  144. package/coverage/lcov-report/src/components/zd-loading/index.html +0 -116
  145. package/coverage/lcov-report/src/components/zd-loading/loading.ts.html +0 -217
  146. package/coverage/lcov-report/src/components/zd-login/index.html +0 -131
  147. package/coverage/lcov-report/src/components/zd-login/login-button.ts.html +0 -421
  148. package/coverage/lcov-report/src/components/zd-login/login.ts.html +0 -340
  149. package/coverage/lcov-report/src/components/zd-main/index.html +0 -116
  150. package/coverage/lcov-report/src/components/zd-main/main.ts.html +0 -133
  151. package/coverage/lcov-report/src/components/zd-master-detail/detail-not-found.ts.html +0 -118
  152. package/coverage/lcov-report/src/components/zd-master-detail/index.html +0 -146
  153. package/coverage/lcov-report/src/components/zd-master-detail/master-detail.ts.html +0 -331
  154. package/coverage/lcov-report/src/components/zd-master-detail/master-not-found.ts.html +0 -118
  155. package/coverage/lcov-report/src/components/zd-menu/index.html +0 -176
  156. package/coverage/lcov-report/src/components/zd-menu/menu-button.ts.html +0 -241
  157. package/coverage/lcov-report/src/components/zd-menu/menu-group.ts.html +0 -400
  158. package/coverage/lcov-report/src/components/zd-menu/menu-link.ts.html +0 -337
  159. package/coverage/lcov-report/src/components/zd-menu/menu-separator.ts.html +0 -106
  160. package/coverage/lcov-report/src/components/zd-menu/menu.ts.html +0 -1384
  161. package/coverage/lcov-report/src/components/zd-modal/index.html +0 -131
  162. package/coverage/lcov-report/src/components/zd-modal/modal-close-button.ts.html +0 -220
  163. package/coverage/lcov-report/src/components/zd-modal/modal.ts.html +0 -355
  164. package/coverage/lcov-report/src/components/zd-month/index.html +0 -116
  165. package/coverage/lcov-report/src/components/zd-month/month.ts.html +0 -568
  166. package/coverage/lcov-report/src/components/zd-number-input/index.html +0 -116
  167. package/coverage/lcov-report/src/components/zd-number-input/number-input.ts.html +0 -532
  168. package/coverage/lcov-report/src/components/zd-password/index.html +0 -116
  169. package/coverage/lcov-report/src/components/zd-password/password.ts.html +0 -220
  170. package/coverage/lcov-report/src/components/zd-progress/index.html +0 -116
  171. package/coverage/lcov-report/src/components/zd-progress/progress.ts.html +0 -262
  172. package/coverage/lcov-report/src/components/zd-radio/index.html +0 -116
  173. package/coverage/lcov-report/src/components/zd-radio/radio.ts.html +0 -289
  174. package/coverage/lcov-report/src/components/zd-row/index.html +0 -116
  175. package/coverage/lcov-report/src/components/zd-row/row.ts.html +0 -256
  176. package/coverage/lcov-report/src/components/zd-select/index.html +0 -116
  177. package/coverage/lcov-report/src/components/zd-select/select.ts.html +0 -2089
  178. package/coverage/lcov-report/src/components/zd-select-multiple/index.html +0 -116
  179. package/coverage/lcov-report/src/components/zd-select-multiple/select-multiple.ts.html +0 -1549
  180. package/coverage/lcov-report/src/components/zd-svg-map/index.html +0 -116
  181. package/coverage/lcov-report/src/components/zd-svg-map/svg-map.ts.html +0 -475
  182. package/coverage/lcov-report/src/components/zd-switch/index.html +0 -116
  183. package/coverage/lcov-report/src/components/zd-switch/switch.ts.html +0 -163
  184. package/coverage/lcov-report/src/components/zd-table/index.html +0 -116
  185. package/coverage/lcov-report/src/components/zd-table/table.ts.html +0 -280
  186. package/coverage/lcov-report/src/components/zd-tabs/index.html +0 -146
  187. package/coverage/lcov-report/src/components/zd-tabs/tab-not-found.ts.html +0 -127
  188. package/coverage/lcov-report/src/components/zd-tabs/tab.ts.html +0 -370
  189. package/coverage/lcov-report/src/components/zd-tabs/tabs.ts.html +0 -586
  190. package/coverage/lcov-report/src/components/zd-tag/index.html +0 -116
  191. package/coverage/lcov-report/src/components/zd-tag/tag.ts.html +0 -142
  192. package/coverage/lcov-report/src/components/zd-text/index.html +0 -116
  193. package/coverage/lcov-report/src/components/zd-text/text.ts.html +0 -136
  194. package/coverage/lcov-report/src/components/zd-text-input/index.html +0 -116
  195. package/coverage/lcov-report/src/components/zd-text-input/text-input.ts.html +0 -778
  196. package/coverage/lcov-report/src/components/zd-textarea/index.html +0 -116
  197. package/coverage/lcov-report/src/components/zd-textarea/textarea.ts.html +0 -418
  198. package/coverage/lcov-report/src/components/zd-time/index.html +0 -131
  199. package/coverage/lcov-report/src/components/zd-time/time-format-selector.ts.html +0 -157
  200. package/coverage/lcov-report/src/components/zd-time/time.ts.html +0 -1687
  201. package/coverage/lcov-report/src/components/zd-toggleable/index.html +0 -116
  202. package/coverage/lcov-report/src/components/zd-toggleable/toggleable.ts.html +0 -196
  203. package/coverage/lcov-report/src/components/zd-tooltip/index.html +0 -116
  204. package/coverage/lcov-report/src/components/zd-tooltip/tooltip.ts.html +0 -340
  205. package/coverage/lcov-report/src/components/zd-tree/index.html +0 -116
  206. package/coverage/lcov-report/src/components/zd-tree/tree.ts.html +0 -1849
  207. package/coverage/lcov-report/src/components/zd-tree-grid/index.html +0 -191
  208. package/coverage/lcov-report/src/components/zd-tree-grid/index.ts.html +0 -103
  209. package/coverage/lcov-report/src/components/zd-tree-grid/iterable-tree.ts.html +0 -202
  210. package/coverage/lcov-report/src/components/zd-tree-grid/keymap-tree.ts.html +0 -154
  211. package/coverage/lcov-report/src/components/zd-tree-grid/tree-data-navigator.ts.html +0 -235
  212. package/coverage/lcov-report/src/components/zd-tree-grid/tree-data-selector.ts.html +0 -448
  213. package/coverage/lcov-report/src/components/zd-tree-grid/tree-grid.ts.html +0 -1390
  214. package/coverage/lcov-report/src/error/delete-rows.ts.html +0 -124
  215. package/coverage/lcov-report/src/error/index.html +0 -161
  216. package/coverage/lcov-report/src/error/index.ts.html +0 -94
  217. package/coverage/lcov-report/src/error/non-initialized.ts.html +0 -118
  218. package/coverage/lcov-report/src/error/zeedhi-error.ts.html +0 -109
  219. package/coverage/lcov-report/src/index.html +0 -116
  220. package/coverage/lcov-report/src/index.ts.html +0 -145
  221. package/coverage/lcov-report/src/services/index.html +0 -116
  222. package/coverage/lcov-report/src/services/index.ts.html +0 -97
  223. package/coverage/lcov-report/src/services/zd-alert/alert-queue.ts.html +0 -205
  224. package/coverage/lcov-report/src/services/zd-alert/alert-replace.ts.html +0 -220
  225. package/coverage/lcov-report/src/services/zd-alert/alert-service.ts.html +0 -316
  226. package/coverage/lcov-report/src/services/zd-alert/alert-stack.ts.html +0 -172
  227. package/coverage/lcov-report/src/services/zd-alert/index.html +0 -176
  228. package/coverage/lcov-report/src/services/zd-alert/index.ts.html +0 -100
  229. package/coverage/lcov-report/src/services/zd-dialog/dialog-service.ts.html +0 -205
  230. package/coverage/lcov-report/src/services/zd-dialog/index.html +0 -116
  231. package/coverage/lcov-report/src/services/zd-loading/index.html +0 -116
  232. package/coverage/lcov-report/src/services/zd-loading/loading-service.ts.html +0 -157
  233. package/coverage/lcov-report/src/services/zd-modal/index.html +0 -116
  234. package/coverage/lcov-report/src/services/zd-modal/modal-service.ts.html +0 -298
  235. package/coverage/lcov-report/src/utils/data-value-out/data-value-out.ts.html +0 -202
  236. package/coverage/lcov-report/src/utils/data-value-out/index.html +0 -131
  237. package/coverage/lcov-report/src/utils/data-value-out/index.ts.html +0 -91
  238. package/coverage/lcov-report/src/utils/datasource-searcher/datasource-searcher.ts.html +0 -241
  239. package/coverage/lcov-report/src/utils/datasource-searcher/index.html +0 -131
  240. package/coverage/lcov-report/src/utils/datasource-searcher/index.ts.html +0 -91
  241. package/coverage/lcov-report/src/utils/icons/icons.ts.html +0 -547
  242. package/coverage/lcov-report/src/utils/icons/index.html +0 -116
  243. package/coverage/lcov-report/src/utils/index.html +0 -116
  244. package/coverage/lcov-report/src/utils/index.ts.html +0 -106
  245. package/coverage/lcov-report/src/utils/omit/index.html +0 -116
  246. package/coverage/lcov-report/src/utils/omit/omit.ts.html +0 -124
  247. package/coverage/lcov-report/src/utils/theme/index.html +0 -116
  248. package/coverage/lcov-report/src/utils/theme/theme.ts.html +0 -679
  249. package/coverage/lcov-report/src/utils/tree-data-structure/index.html +0 -131
  250. package/coverage/lcov-report/src/utils/tree-data-structure/index.ts.html +0 -91
  251. package/coverage/lcov-report/src/utils/tree-data-structure/tree-data-structure.ts.html +0 -1645
  252. package/coverage/lcov-report/src/utils/unique-by/index.html +0 -116
  253. package/coverage/lcov-report/src/utils/unique-by/unique-by.ts.html +0 -130
  254. package/coverage/lcov-report/tests/unit/components/zd-component/ComponentMock.ts.html +0 -166
  255. package/coverage/lcov-report/tests/unit/components/zd-component/index.html +0 -116
  256. package/coverage/lcov.info +0 -10206
  257. package/tests/unit/utils/is-filled-object.spec.ts +0 -33
@@ -256,7 +256,8 @@ describe('Component', () => {
256
256
  it('should retrieve a child', () => {
257
257
  const parent = new Component({ name: 'parent' });
258
258
  const instance = new Component({ parent, name: 'component' });
259
- const spy = jest.spyOn(console, 'warn').mockImplementation(() => true);
259
+ const spy = jest.spyOn(console, 'warn');
260
+ spy.mockReset();
260
261
  instance.onCreated();
261
262
  const child = parent.getChildInstance<Component>('component');
262
263
  expect(child.name).toBe('component');
@@ -279,7 +280,7 @@ describe('Component', () => {
279
280
  it('should only add instance to Metadata', () => {
280
281
  const instance = new Component({ name: 'component' });
281
282
  const spy = jest.spyOn(Metadata, 'addInstance');
282
- const consoleSpy = jest.spyOn(console, 'warn').mockImplementation(() => true);
283
+ const consoleSpy = jest.spyOn(console, 'warn');
283
284
  instance.onCreated();
284
285
  expect(spy).toHaveBeenCalledWith(instance, false);
285
286
  expect(consoleSpy).toHaveBeenCalled();
@@ -352,6 +352,21 @@ describe('DateRange', () => {
352
352
  expect(instance.displayValue).toBe('');
353
353
  });
354
354
 
355
+ it('should call change event when clearing the value', () => {
356
+ const changeFn = jest.fn();
357
+ const instance = new DateRange({
358
+ name: 'date',
359
+ component: 'DateRange',
360
+ events: {
361
+ change: changeFn,
362
+ },
363
+ });
364
+ instance.setDateValue('01-01-2020 ~ 01-02-2020');
365
+ changeFn.mockClear();
366
+ instance.setDateValue('');
367
+ expect(changeFn).toHaveBeenCalled();
368
+ });
369
+
355
370
  it('shouldn\'t update displayValue when the value passed is invalid', () => {
356
371
  const instance = new DateRange({ name: 'date', component: 'DateRange' });
357
372
  instance.setDateValue('01-01-2020 ~ 01-02-2020');
@@ -423,6 +438,40 @@ describe('DateRange', () => {
423
438
  expect(instance.isValidDate('07/13/2023', 'MM/DD/YYYY')).toBeFalsy();
424
439
  expect(instance.isValidDate('07/01/2023', 'MM/DD/YYYY')).toBeFalsy();
425
440
  });
441
+
442
+ it('should return false for a completely invalid date format', () => {
443
+ const instance = new DateRange({ name: 'date', component: 'DateRange' });
444
+ // This should hit the !isValidFormat check at the beginning of isValidDate
445
+ expect(instance.isValidDate('not-a-date', 'YYYY-MM-DD')).toBeFalsy();
446
+ });
447
+
448
+ it('should return false for a not allowed date', () => {
449
+ const instance = new DateRange({
450
+ name: 'date',
451
+ component: 'DateRange',
452
+ dateFormat: 'YYYY-MM-DD',
453
+ allowedDates: (date: string) => date !== '2023-07-11',
454
+ });
455
+
456
+ // Date is valid, but not allowed
457
+ expect(instance.isValidDate('2023-07-11', 'YYYY-MM-DD')).toBeFalsy();
458
+ // Other date should be valid and allowed
459
+ expect(instance.isValidDate('2023-07-12', 'YYYY-MM-DD')).toBeTruthy();
460
+ });
461
+
462
+ it('should return true for allowed date with array', () => {
463
+ const instance = new DateRange({
464
+ name: 'date',
465
+ component: 'DateRange',
466
+ dateFormat: 'YYYY-MM-DD',
467
+ allowedDates: ['2025-01-01'],
468
+ });
469
+
470
+ // Date is valid and allowed
471
+ expect(instance.isValidDate('2025-01-01', 'YYYY-MM-DD')).toBeTruthy();
472
+ // Date is valid but not allowed
473
+ expect(instance.isValidDate('2025-01-02', 'YYYY-MM-DD')).toBeFalsy();
474
+ });
426
475
  });
427
476
 
428
477
  describe('isoRangeValue', () => {
@@ -654,6 +703,23 @@ describe('DateRange', () => {
654
703
  });
655
704
  });
656
705
 
706
+ describe('isValidDateArray', () => {
707
+ it('should return false if values array has less than 2 items', () => {
708
+ const instance = new DateRange({ name: 'date', component: 'DateRange' });
709
+ expect(instance.isValidDateArray('YYYY-MM-DD', ['2025-01-01'])).toBe(false);
710
+ });
711
+
712
+ it('should return true if all dates in array are valid', () => {
713
+ const instance = new DateRange({ name: 'date', component: 'DateRange' });
714
+ expect(instance.isValidDateArray('YYYY-MM-DD', ['2025-01-01', '2025-01-10'])).toBe(true);
715
+ });
716
+
717
+ it('should return false if any date in array is invalid', () => {
718
+ const instance = new DateRange({ name: 'date', component: 'DateRange' });
719
+ expect(instance.isValidDateArray('YYYY-MM-DD', ['2025-01-01', 'invalid-date'])).toBe(false);
720
+ });
721
+ });
722
+
657
723
  describe('FormatterParserProvider', () => {
658
724
  it('should return formatter function', () => {
659
725
  const formatterFn = FormatterParserProvider.getFormatter('ZdDateRange');
@@ -1002,6 +1068,61 @@ describe('DateRange Tests', () => {
1002
1068
  expect(dateInput.value).toEqual(['2025-01-01', '2025-01-05']);
1003
1069
  expect(dateInput.displayValue).toBe('01/01/2025 ~ 05/01/2025');
1004
1070
  });
1071
+
1072
+ it('should handle more than two dates, using extremities', () => {
1073
+ const start = new Date(2025, 0, 1);
1074
+ const middle = new Date(2025, 0, 3);
1075
+ const end = new Date(2025, 0, 5);
1076
+ dateInput.dateFormat = 'YYYY-MM-DD';
1077
+ dateInput.displayFormat = 'DD/MM/YYYY';
1078
+ dateInput.setNativeDate([start, middle, end]);
1079
+
1080
+ expect(dateInput.value).toEqual(['2025-01-01', '2025-01-05']);
1081
+ });
1082
+
1083
+ it('should handle an empty array', () => {
1084
+ dateInput.value = ['2024-12-31'];
1085
+ dateInput.setNativeDate([]);
1086
+ expect(dateInput.value).toEqual([]);
1087
+ });
1088
+
1089
+ it('should handle a single date without an end date', () => {
1090
+ const start = new Date(2025, 0, 1);
1091
+ dateInput.dateFormat = 'YYYY-MM-DD';
1092
+ dateInput.displayFormat = 'DD/MM/YYYY';
1093
+ dateInput.allowedDates = (date) => date === '2025-01-01';
1094
+
1095
+ dateInput.setNativeDate([start]);
1096
+
1097
+ expect(dateInput.value).toEqual(['2025-01-01']);
1098
+ });
1099
+
1100
+ it('should not set date if any date in range is not allowed', () => {
1101
+ const start = new Date(2025, 0, 1);
1102
+ const end = new Date(2025, 0, 5);
1103
+ dateInput.dateFormat = 'YYYY-MM-DD';
1104
+ dateInput.displayFormat = 'DD/MM/YYYY';
1105
+ dateInput.allowedDates = (date) => date !== '2025-01-03';
1106
+
1107
+ dateInput.value = ['2024-12-31'];
1108
+ dateInput.setNativeDate([start, end]);
1109
+
1110
+ // Value should not change
1111
+ expect(dateInput.value).toEqual(['2024-12-31']);
1112
+ });
1113
+
1114
+ it('should handle null or undefined dates to cover fallback', () => {
1115
+ dateInput.value = ['2025-01-01'];
1116
+
1117
+ // Test with null to cover `(dates || [])`
1118
+ dateInput.setNativeDate(null as any);
1119
+ expect(dateInput.value).toEqual([]);
1120
+
1121
+ // Reset and test with undefined
1122
+ dateInput.value = ['2025-01-01'];
1123
+ dateInput.setNativeDate(undefined as any);
1124
+ expect(dateInput.value).toEqual([]);
1125
+ });
1005
1126
  });
1006
1127
 
1007
1128
  describe('getNativeDate', () => {
@@ -1020,6 +1141,40 @@ describe('DateRange Tests', () => {
1020
1141
  expect(nativeDates).toEqual([]);
1021
1142
  });
1022
1143
  });
1144
+
1145
+ describe('getAllowedDates', () => {
1146
+ it('should return true if allowedDates is not set', () => {
1147
+ const instance = new DateRange({ name: 'date', component: 'ZdDateRange' });
1148
+ expect(instance.getAllowedDates(new Date(2025, 0, 1))).toBe(true);
1149
+ });
1150
+
1151
+ it('should return false if allowedDates is an empty array', () => {
1152
+ const instance = new DateRange({ name: 'date', component: 'ZdDateRange', allowedDates: [] });
1153
+ expect(instance.getAllowedDates(new Date(2025, 0, 1))).toBe(false);
1154
+ });
1155
+
1156
+ it('should return true for allowed date with function', () => {
1157
+ const instance = new DateRange({
1158
+ name: 'date',
1159
+ component: 'ZdDateRange',
1160
+ dateFormat: 'YYYY-MM-DD',
1161
+ allowedDates: (date) => date === '2025-01-01',
1162
+ });
1163
+ expect(instance.getAllowedDates(new Date(2025, 0, 1))).toBe(true);
1164
+ expect(instance.getAllowedDates(new Date(2025, 0, 2))).toBe(false);
1165
+ });
1166
+
1167
+ it('should return true for allowed date with array', () => {
1168
+ const instance = new DateRange({
1169
+ name: 'date',
1170
+ component: 'ZdDateRange',
1171
+ dateFormat: 'YYYY-MM-DD',
1172
+ allowedDates: ['2025-01-01'],
1173
+ });
1174
+ expect(instance.getAllowedDates(new Date(2025, 0, 1))).toBe(true);
1175
+ expect(instance.getAllowedDates(new Date(2025, 0, 2))).toBe(false);
1176
+ });
1177
+ });
1023
1178
  });
1024
1179
 
1025
1180
  describe('DateRange edge cases', () => {
@@ -1035,33 +1190,17 @@ describe('DateRange edge cases', () => {
1035
1190
  });
1036
1191
  });
1037
1192
 
1038
-
1039
1193
  dayjs.extend(utc);
1040
1194
 
1041
- describe('DateRange map format line 493 coverage', () => {
1042
- it('should format dates and handle nulls internally', () => {
1043
- const dateInput = new DateRange({
1044
- name: 'date',
1045
- component: 'DateInput',
1046
- dateFormat: 'YYYY-MM-DD',
1047
- });
1048
-
1049
- const start = new Date(2025, 0, 1); // local 1 Jan 2025
1050
- const end = new Date(2025, 0, 5); // local 5 Jan 2025
1051
-
1052
- dateInput.setNativeDate([start, end]);
1053
-
1054
- expect(dateInput.value).toEqual([
1055
- dayjs(start).format('YYYY-MM-DD'),
1056
- dayjs(end).format('YYYY-MM-DD'),
1057
- ]);
1195
+ describe('DateRange getExtremities coverage', () => {
1196
+ it('should cover empty array case in getExtremities by setting value', () => {
1197
+ const dateInput = new DateRange({ name: 'date', component: 'DateInput' });
1198
+ dateInput.value = ['2025-01-01']; // Define um valor inicial
1058
1199
 
1059
- // apenas uma data
1060
- dateInput.setNativeDate([start]);
1061
- expect(dateInput.value).toEqual([dayjs(start).format('YYYY-MM-DD')]);
1200
+ // Atribuir um array vazio ao 'value' aciona o setter,
1201
+ // que indiretamente causa a chamada de 'getExtremities' com um array vazio.
1202
+ dateInput.value = [];
1062
1203
 
1063
- // array vazio
1064
- dateInput.setNativeDate([]);
1065
1204
  expect(dateInput.value).toEqual([]);
1066
1205
  });
1067
1206
  });
@@ -1122,4 +1261,31 @@ describe('DateRange.getNativeDate', () => {
1122
1261
  });
1123
1262
  });
1124
1263
 
1264
+ describe('DateRange value setter edge cases', () => {
1265
+ it('should handle null and undefined values correctly', () => {
1266
+ const dateInput = new DateRange({ name: 'date', component: 'DateInput' });
1267
+ dateInput.value = ['2025-01-01'];
1268
+
1269
+ dateInput.value = null;
1270
+ expect(dateInput.value).toEqual([]);
1271
+
1272
+ dateInput.value = undefined;
1273
+ expect(dateInput.value).toEqual([]);
1274
+ });
1275
+ });
1276
+
1277
+ describe('DateRange getExtremities coverage', () => {
1278
+ it('should cover empty array case in getExtremities by setting value to empty array', () => {
1279
+ const dateInput = new DateRange({ name: 'date', component: 'DateInput' });
1280
+ // Define um valor inicial para garantir que a mudança seja detectada
1281
+ dateInput.value = ['2025-01-01'];
1282
+
1283
+ // Atribui um array vazio diretamente ao 'value'.
1284
+ // Isso aciona o setter que define 'dateObject' como [], cobrindo o caso de borda em 'getExtremities'.
1285
+ dateInput.value = [];
1286
+
1287
+ expect(dateInput.value).toEqual([]);
1288
+ });
1289
+ });
1290
+
1125
1291
  });
@@ -161,23 +161,36 @@ describe('Grid', () => {
161
161
  expect(instance.cellSelection).toBeTruthy();
162
162
  });
163
163
 
164
- it('should create new grid with change default slot names', () => {
164
+ it('on slot creation, should replace <<NAME>> tags by the grid name', () => {
165
+ const fn = jest.fn();
165
166
  const instance = new Grid({
166
167
  name: 'Grid',
167
168
  component: 'ZdGrid',
168
169
  footerSlot: [
169
- { name: 'iterablePagination', component: 'ZdIterablePagination' },
170
- { name: 'iterablePageSize', component: 'ZdIterablePageSize' },
171
- { name: 'iterablePageInfo', component: 'ZdIterablePageInfo' },
170
+ { name: 'pagination_<<NAME>>', component: 'ZdIterablePagination' },
172
171
  ],
173
- toolbarSlot: [{ name: 'gridSearch', component: 'ZdSearch' }],
172
+ toolbarSlot: [{
173
+ name: 'gridSearch', component: 'ZdSearch', children: [{
174
+ name: 'deep_<<NAME>>',
175
+ component: 'ZdInput',
176
+ nullProp: null,
177
+ functionProp: fn,
178
+ }]
179
+ }],
174
180
  });
175
181
  expect(instance.footerSlot).toEqual([
176
- { name: 'iterablePagination', component: 'ZdIterablePagination' },
177
- { name: 'iterablePageSize', component: 'ZdIterablePageSize' },
178
- { name: 'iterablePageInfo', component: 'ZdIterablePageInfo' },
182
+ { name: 'pagination_Grid', component: 'ZdIterablePagination' },
179
183
  ]);
180
- expect(instance.toolbarSlot).toEqual([{ name: 'gridSearch', component: 'ZdSearch' }]);
184
+ expect(instance.toolbarSlot).toEqual([{
185
+ name: 'gridSearch', component: 'ZdSearch', children: [
186
+ {
187
+ name: 'deep_Grid',
188
+ component: 'ZdInput',
189
+ nullProp: null,
190
+ functionProp: fn,
191
+ },
192
+ ]
193
+ }]);
181
194
  });
182
195
 
183
196
  it('should not add action columns in datasource searchIn', () => {
@@ -385,7 +398,7 @@ describe('Grid', () => {
385
398
  cellClick: ({ column }: any) => { cellClicked = column.name; },
386
399
  },
387
400
  });
388
- instance.onCreated();
401
+ instance.onCreated();
389
402
  const event = new MouseEvent('click');
390
403
  const element = document.createElement('div');
391
404
  instance.cellClick({ id: 1 }, instance.columns[0] as GridColumn, event, element);
@@ -1474,31 +1487,31 @@ describe('Grid', () => {
1474
1487
 
1475
1488
  expect(grid.getCurrentRowIndex()).toBe(0)
1476
1489
  })
1477
- })
1478
-
1479
- describe('getColumn()', () => {
1480
- it('should return a column', () => {
1481
- const instance = new Grid({
1482
- name: 'iterable',
1483
- component: 'Iterable',
1484
- columns: [
1485
- { name: 'column', component: 'Column' },
1486
- ],
1487
- });
1488
- expect(instance.getColumn('column')).toBeInstanceOf(GridColumn);
1489
- });
1490
-
1491
- it('should throw an error if column does not exist', () => {
1492
- const instance = new Grid({
1493
- name: 'iterable',
1494
- component: 'Iterable',
1495
- columns: [
1496
- { name: 'column', component: 'Column' },
1497
- ],
1498
- });
1499
- expect(() => { instance.getColumn('column2'); }).toThrow();
1500
- });
1501
- });
1490
+ })
1491
+
1492
+ describe('getColumn()', () => {
1493
+ it('should return a column', () => {
1494
+ const instance = new Grid({
1495
+ name: 'iterable',
1496
+ component: 'Iterable',
1497
+ columns: [
1498
+ { name: 'column', component: 'Column' },
1499
+ ],
1500
+ });
1501
+ expect(instance.getColumn('column')).toBeInstanceOf(GridColumn);
1502
+ });
1503
+
1504
+ it('should throw an error if column does not exist', () => {
1505
+ const instance = new Grid({
1506
+ name: 'iterable',
1507
+ component: 'Iterable',
1508
+ columns: [
1509
+ { name: 'column', component: 'Column' },
1510
+ ],
1511
+ });
1512
+ expect(() => { instance.getColumn('column2'); }).toThrow();
1513
+ });
1514
+ });
1502
1515
 
1503
1516
  describe('pageText', () => {
1504
1517
  it('should get paging info', () => {
@@ -192,7 +192,7 @@ describe('DataEditor', () => {
192
192
  });
193
193
 
194
194
  describe('updateRow', () => {
195
- const spy = jest.spyOn(console, 'warn').mockImplementation(() => true);
195
+ const spy = jest.spyOn(console, 'warn');
196
196
 
197
197
  expect(spy).not.toHaveBeenCalled();
198
198
  expect(spy).toHaveBeenCalledTimes(0);
@@ -813,7 +813,7 @@ describe('Grid Editable', () => {
813
813
  },
814
814
  );
815
815
 
816
- const consoleSpy = jest.spyOn(console, 'warn').mockImplementation(() => true);
816
+ const consoleSpy = jest.spyOn(console, 'warn');
817
817
 
818
818
  const formatterFn = FormatterParserProvider.getFormatter('column_ZdSelect');
819
819
 
@@ -162,8 +162,49 @@ describe('Column', () => {
162
162
  .spyOn(Datasource.prototype, 'addFilter')
163
163
  .mockImplementationOnce(async () => Promise.resolve([{ code: '2', name: 'name 2' }]));
164
164
 
165
+ const spyConsole = jest
166
+ .spyOn(console, 'warn')
167
+ .mockImplementationOnce(() => true);
168
+
169
+ const instance1 = new Column({
170
+ name: 'code',
171
+ componentProps: {
172
+ name: 'column',
173
+ component: 'ZdColumn',
174
+ datasource: {
175
+ data: [{ code: '1', name: 'name 1' }],
176
+ },
177
+ },
178
+ });
179
+ instance1.initialize();
180
+
181
+ expect(instance1.getLookupData('code', '1')).toEqual({ code: '1', name: 'name 1' });
182
+ expect(instance1.lookupData).toEqual({ 1: { code: '1', name: 'name 1' } });
183
+ expect(instance1.getLookupData('code', '1')).toEqual({ code: '1', name: 'name 1' });
184
+ expect(instance1.lookupData).toEqual({ 1: { code: '1', name: 'name 1' } });
185
+ expect(instance1.getLookupData('teste', '3')).toEqual({});
186
+ expect(instance1.lookupData).toEqual({ 1: { code: '1', name: 'name 1' }, 3: {} });
187
+ expect(instance1.getLookupData('code', '2')).toEqual({});
188
+
189
+ jest.runAllTimers();
190
+
191
+ expect(instance1.lookupData).toEqual({ 1: { code: '1', name: 'name 1' }, 2: {}, 3: {} });
192
+ spyDatasource.mockClear();
193
+ spyConsole.mockClear();
194
+ });
195
+
196
+ it('should return data using storeData', () => {
197
+ const spyDatasource = jest
198
+ .spyOn(Datasource.prototype, 'addFilter')
199
+ .mockImplementationOnce(async () => Promise.resolve([{ code: '2', name: 'name 2' }]));
200
+
201
+ const spyConsole = jest
202
+ .spyOn(console, 'warn')
203
+ .mockImplementationOnce(() => true);
204
+
165
205
  const instance1 = new Column({
166
206
  name: 'code',
207
+ storeData: false,
167
208
  componentProps: {
168
209
  name: 'column',
169
210
  component: 'ZdColumn',
@@ -186,6 +227,7 @@ describe('Column', () => {
186
227
 
187
228
  expect(instance1.lookupData).toEqual({ 1: { code: '1', name: 'name 1' }, 2: {}, 3: {} });
188
229
  spyDatasource.mockClear();
230
+ spyConsole.mockClear();
189
231
  });
190
232
  });
191
233
 
@@ -0,0 +1,18 @@
1
+ const originalWarn = console.warn;
2
+ const originalError = console.error;
3
+
4
+ beforeAll(() => {
5
+ jest.spyOn(console, 'warn').mockImplementation((...args) => {
6
+ // Oculta apenas mensagens específicas
7
+ if (args.join(' ').includes('Duplicate component name detected')
8
+ || args.join(' ').includes('Row datasource do not have a key')
9
+ || args.join(' ').includes('Nenhum datasource foi passado para o componente')) return;
10
+ return originalWarn(...args);
11
+ });
12
+
13
+ jest.spyOn(console, 'error').mockImplementation((...args) => {
14
+ // Oculta apenas mensagens específicas
15
+ if (args.join(' ').includes('Controller ') && args.join(' ').includes(' not found')) return;
16
+ return originalError(...args);
17
+ });
18
+ });
package/.package.json DELETED
@@ -1,45 +0,0 @@
1
- {
2
- "name": "@zeedhi/common",
3
- "version": "3.0.4",
4
- "description": "Zeedhi Common",
5
- "author": "Zeedhi <zeedhi@teknisa.com>",
6
- "license": "ISC",
7
- "main": "src/index.ts",
8
- "types": "dist/types/index.d.ts",
9
- "type": "module",
10
- "module": "dist/zd-common.js",
11
- "packageManager": "npm@8.19.2",
12
- "publishConfig": {
13
- "access": "public"
14
- },
15
- "scripts": {
16
- "build": "rollup -c && npm run build:scss",
17
- "clean": "rm -rf ./dist",
18
- "build:scss": "rollup -c rollup.scss.config.js",
19
- "test": "jest --verbose=false",
20
- "watch": "rollup -cw"
21
- },
22
- "dependencies": {
23
- "@zeedhi/autonumeric": "^4.6.3",
24
- "@zeedhi/core": "^3.0.4",
25
- "lodash.clonedeep": "^4.5.0",
26
- "lodash.debounce": "^4.0.8",
27
- "lodash.get": "^4.4.2",
28
- "lodash.isundefined": "^3.0.1",
29
- "lodash.merge": "^4.6.2",
30
- "lodash.set": "^4.3.2",
31
- "typescript": "^4.9.3"
32
- },
33
- "devDependencies": {
34
- "@rollup/plugin-json": "^6.0.0",
35
- "@types/lodash.clonedeep": "^4.5.9",
36
- "@types/lodash.debounce": "^4.0.7",
37
- "@types/lodash.get": "^4.4.7",
38
- "@types/lodash.isundefined": "^3.0.7",
39
- "@types/lodash.merge": "^4.6.7",
40
- "@types/lodash.set": "^4.3.7",
41
- "@types/lodash.times": "^4.3.7",
42
- "lodash.times": "^4.3.2",
43
- "mockdate": "^3.0.5"
44
- }
45
- }