@zeedhi/common 3.0.4 → 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 (338) 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/coverage/clover.xml +0 -5741
  22. package/coverage/coverage-final.json +0 -144
  23. package/coverage/lcov-report/base.css +0 -224
  24. package/coverage/lcov-report/block-navigation.js +0 -87
  25. package/coverage/lcov-report/favicon.png +0 -0
  26. package/coverage/lcov-report/index.html +0 -1316
  27. package/coverage/lcov-report/prettify.css +0 -1
  28. package/coverage/lcov-report/prettify.js +0 -2
  29. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  30. package/coverage/lcov-report/sorter.js +0 -210
  31. package/coverage/lcov-report/src/components/index.html +0 -116
  32. package/coverage/lcov-report/src/components/index.ts.html +0 -730
  33. package/coverage/lcov-report/src/components/tek-grid/columns-searcher.ts.html +0 -151
  34. package/coverage/lcov-report/src/components/tek-grid/dynamic-filter-datasource-factory.ts.html +0 -145
  35. package/coverage/lcov-report/src/components/tek-grid/filter-helper.ts.html +0 -145
  36. package/coverage/lcov-report/src/components/tek-grid/grid-filter-button.ts.html +0 -1351
  37. package/coverage/lcov-report/src/components/tek-grid/grouped-data-manager.ts.html +0 -1429
  38. package/coverage/lcov-report/src/components/tek-grid/grouped-data-selector.ts.html +0 -205
  39. package/coverage/lcov-report/src/components/tek-grid/grouped-view-navigator.ts.html +0 -340
  40. package/coverage/lcov-report/src/components/tek-grid/index.html +0 -326
  41. package/coverage/lcov-report/src/components/tek-grid/index.ts.html +0 -139
  42. package/coverage/lcov-report/src/components/tek-grid/interfaces.ts.html +0 -1072
  43. package/coverage/lcov-report/src/components/tek-grid/keymap-grouped.ts.html +0 -148
  44. package/coverage/lcov-report/src/components/tek-grid/layout-options.ts.html +0 -829
  45. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/index.html +0 -161
  46. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/index.ts.html +0 -94
  47. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/interfaces.ts.html +0 -193
  48. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/tek-memory-datasource.ts.html +0 -1027
  49. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/tek-rest-datasource.ts.html +0 -757
  50. package/coverage/lcov-report/src/components/tek-grid/tek-grid-column.ts.html +0 -664
  51. package/coverage/lcov-report/src/components/tek-grid/tek-grid-columns-button/index.html +0 -131
  52. package/coverage/lcov-report/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.ts.html +0 -169
  53. package/coverage/lcov-report/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.ts.html +0 -196
  54. package/coverage/lcov-report/src/components/tek-grid/tek-grid-controller.ts.html +0 -505
  55. package/coverage/lcov-report/src/components/tek-grid/tek-grid-events.ts.html +0 -400
  56. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/button-option.ts.html +0 -163
  57. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/index.html +0 -146
  58. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/index.ts.html +0 -94
  59. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/multi-option.ts.html +0 -340
  60. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/index.html +0 -131
  61. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/index.ts.html +0 -91
  62. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.ts.html +0 -1186
  63. package/coverage/lcov-report/src/components/tek-grid/tek-grid.ts.html +0 -3451
  64. package/coverage/lcov-report/src/components/zd-alert/alert.ts.html +0 -502
  65. package/coverage/lcov-report/src/components/zd-alert/index.html +0 -116
  66. package/coverage/lcov-report/src/components/zd-badge/badge.ts.html +0 -226
  67. package/coverage/lcov-report/src/components/zd-badge/index.html +0 -116
  68. package/coverage/lcov-report/src/components/zd-breadcrumbs/breadcrumbs.ts.html +0 -226
  69. package/coverage/lcov-report/src/components/zd-breadcrumbs/index.html +0 -116
  70. package/coverage/lcov-report/src/components/zd-button/button.ts.html +0 -706
  71. package/coverage/lcov-report/src/components/zd-button/index.html +0 -116
  72. package/coverage/lcov-report/src/components/zd-button-group/button-group.ts.html +0 -412
  73. package/coverage/lcov-report/src/components/zd-button-group/index.html +0 -116
  74. package/coverage/lcov-report/src/components/zd-card/card.ts.html +0 -748
  75. package/coverage/lcov-report/src/components/zd-card/index.html +0 -116
  76. package/coverage/lcov-report/src/components/zd-carousel/carousel.ts.html +0 -949
  77. package/coverage/lcov-report/src/components/zd-carousel/index.html +0 -116
  78. package/coverage/lcov-report/src/components/zd-checkbox/checkbox.ts.html +0 -148
  79. package/coverage/lcov-report/src/components/zd-checkbox/index.html +0 -116
  80. package/coverage/lcov-report/src/components/zd-checkbox-multiple/checkbox-multiple.ts.html +0 -313
  81. package/coverage/lcov-report/src/components/zd-checkbox-multiple/index.html +0 -116
  82. package/coverage/lcov-report/src/components/zd-chip/chip.ts.html +0 -352
  83. package/coverage/lcov-report/src/components/zd-chip/index.html +0 -116
  84. package/coverage/lcov-report/src/components/zd-code-editor/code-editor.ts.html +0 -1045
  85. package/coverage/lcov-report/src/components/zd-code-editor/index.html +0 -116
  86. package/coverage/lcov-report/src/components/zd-code-viewer/code-viewer.ts.html +0 -682
  87. package/coverage/lcov-report/src/components/zd-code-viewer/index.html +0 -116
  88. package/coverage/lcov-report/src/components/zd-col/col.ts.html +0 -250
  89. package/coverage/lcov-report/src/components/zd-col/index.html +0 -116
  90. package/coverage/lcov-report/src/components/zd-collapse-card/collapse-card.ts.html +0 -343
  91. package/coverage/lcov-report/src/components/zd-collapse-card/index.html +0 -116
  92. package/coverage/lcov-report/src/components/zd-component/child-not-found.ts.html +0 -109
  93. package/coverage/lcov-report/src/components/zd-component/component-render.ts.html +0 -160
  94. package/coverage/lcov-report/src/components/zd-component/component.ts.html +0 -1084
  95. package/coverage/lcov-report/src/components/zd-component/index.html +0 -146
  96. package/coverage/lcov-report/src/components/zd-container/container.ts.html +0 -289
  97. package/coverage/lcov-report/src/components/zd-container/index.html +0 -116
  98. package/coverage/lcov-report/src/components/zd-currency/currency.ts.html +0 -259
  99. package/coverage/lcov-report/src/components/zd-currency/index.html +0 -116
  100. package/coverage/lcov-report/src/components/zd-date-input/date-input.ts.html +0 -1798
  101. package/coverage/lcov-report/src/components/zd-date-input/index.html +0 -116
  102. package/coverage/lcov-report/src/components/zd-date-range/date-range.ts.html +0 -2167
  103. package/coverage/lcov-report/src/components/zd-date-range/index.html +0 -116
  104. package/coverage/lcov-report/src/components/zd-dialog/dialog.ts.html +0 -541
  105. package/coverage/lcov-report/src/components/zd-dialog/index.html +0 -116
  106. package/coverage/lcov-report/src/components/zd-divider/divider.ts.html +0 -178
  107. package/coverage/lcov-report/src/components/zd-divider/index.html +0 -116
  108. package/coverage/lcov-report/src/components/zd-dropdown/dropdown.ts.html +0 -460
  109. package/coverage/lcov-report/src/components/zd-dropdown/index.html +0 -116
  110. package/coverage/lcov-report/src/components/zd-field-group/field-group.ts.html +0 -325
  111. package/coverage/lcov-report/src/components/zd-field-group/index.html +0 -116
  112. package/coverage/lcov-report/src/components/zd-footer/footer.ts.html +0 -451
  113. package/coverage/lcov-report/src/components/zd-footer/index.html +0 -116
  114. package/coverage/lcov-report/src/components/zd-form/form.ts.html +0 -1075
  115. package/coverage/lcov-report/src/components/zd-form/index.html +0 -116
  116. package/coverage/lcov-report/src/components/zd-frame/frame.ts.html +0 -763
  117. package/coverage/lcov-report/src/components/zd-frame/index.html +0 -116
  118. package/coverage/lcov-report/src/components/zd-frame-page/frame-page.ts.html +0 -169
  119. package/coverage/lcov-report/src/components/zd-frame-page/index.html +0 -116
  120. package/coverage/lcov-report/src/components/zd-grid/data-navigator.ts.html +0 -304
  121. package/coverage/lcov-report/src/components/zd-grid/data-selector.ts.html +0 -532
  122. package/coverage/lcov-report/src/components/zd-grid/grid-column.ts.html +0 -709
  123. package/coverage/lcov-report/src/components/zd-grid/grid-events.ts.html +0 -244
  124. package/coverage/lcov-report/src/components/zd-grid/grid.ts.html +0 -1042
  125. package/coverage/lcov-report/src/components/zd-grid/index.html +0 -266
  126. package/coverage/lcov-report/src/components/zd-grid/index.ts.html +0 -118
  127. package/coverage/lcov-report/src/components/zd-grid/iterable-table.ts.html +0 -274
  128. package/coverage/lcov-report/src/components/zd-grid/keymap-merger.ts.html +0 -241
  129. package/coverage/lcov-report/src/components/zd-grid/keymap-navigation.ts.html +0 -313
  130. package/coverage/lcov-report/src/components/zd-grid/table-action-builder.ts.html +0 -427
  131. package/coverage/lcov-report/src/components/zd-grid/view-navigator.ts.html +0 -175
  132. package/coverage/lcov-report/src/components/zd-grid-editable/data-editor-with-add.ts.html +0 -826
  133. package/coverage/lcov-report/src/components/zd-grid-editable/data-editor.ts.html +0 -1570
  134. package/coverage/lcov-report/src/components/zd-grid-editable/errors/index.html +0 -146
  135. package/coverage/lcov-report/src/components/zd-grid-editable/errors/index.ts.html +0 -91
  136. package/coverage/lcov-report/src/components/zd-grid-editable/errors/not-editing.ts.html +0 -109
  137. package/coverage/lcov-report/src/components/zd-grid-editable/errors/row-not-found.ts.html +0 -109
  138. package/coverage/lcov-report/src/components/zd-grid-editable/grid-column-editable.ts.html +0 -130
  139. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable-controller.ts.html +0 -139
  140. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable-events.ts.html +0 -430
  141. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable.ts.html +0 -1477
  142. package/coverage/lcov-report/src/components/zd-grid-editable/index.html +0 -221
  143. package/coverage/lcov-report/src/components/zd-grid-editable/index.ts.html +0 -109
  144. package/coverage/lcov-report/src/components/zd-grid-editable/keymap-editing.ts.html +0 -139
  145. package/coverage/lcov-report/src/components/zd-header/header.ts.html +0 -502
  146. package/coverage/lcov-report/src/components/zd-header/index.html +0 -116
  147. package/coverage/lcov-report/src/components/zd-icon/icon.ts.html +0 -325
  148. package/coverage/lcov-report/src/components/zd-icon/index.html +0 -116
  149. package/coverage/lcov-report/src/components/zd-image/image.ts.html +0 -424
  150. package/coverage/lcov-report/src/components/zd-image/index.html +0 -116
  151. package/coverage/lcov-report/src/components/zd-increment/increment.ts.html +0 -436
  152. package/coverage/lcov-report/src/components/zd-increment/index.html +0 -116
  153. package/coverage/lcov-report/src/components/zd-input/index.html +0 -131
  154. package/coverage/lcov-report/src/components/zd-input/input-factory.ts.html +0 -130
  155. package/coverage/lcov-report/src/components/zd-input/input.ts.html +0 -1345
  156. package/coverage/lcov-report/src/components/zd-iterable/column-not-found.ts.html +0 -109
  157. package/coverage/lcov-report/src/components/zd-iterable/column.ts.html +0 -823
  158. package/coverage/lcov-report/src/components/zd-iterable/conditions-manager.ts.html +0 -523
  159. package/coverage/lcov-report/src/components/zd-iterable/index.html +0 -281
  160. package/coverage/lcov-report/src/components/zd-iterable/iterable-columns-button-controller.ts.html +0 -136
  161. package/coverage/lcov-report/src/components/zd-iterable/iterable-columns-button.ts.html +0 -313
  162. package/coverage/lcov-report/src/components/zd-iterable/iterable-controller.ts.html +0 -166
  163. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-component.ts.html +0 -244
  164. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-info.ts.html +0 -106
  165. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-size.ts.html +0 -421
  166. package/coverage/lcov-report/src/components/zd-iterable/iterable-pagination.ts.html +0 -208
  167. package/coverage/lcov-report/src/components/zd-iterable/iterable.ts.html +0 -820
  168. package/coverage/lcov-report/src/components/zd-iterable/search.ts.html +0 -343
  169. package/coverage/lcov-report/src/components/zd-iterable-component-render/index.html +0 -116
  170. package/coverage/lcov-report/src/components/zd-iterable-component-render/iterable-component-render.ts.html +0 -592
  171. package/coverage/lcov-report/src/components/zd-layout/index.html +0 -116
  172. package/coverage/lcov-report/src/components/zd-layout/layout.ts.html +0 -145
  173. package/coverage/lcov-report/src/components/zd-list/index.html +0 -161
  174. package/coverage/lcov-report/src/components/zd-list/item-not-found.ts.html +0 -109
  175. package/coverage/lcov-report/src/components/zd-list/list-group.ts.html +0 -241
  176. package/coverage/lcov-report/src/components/zd-list/list-item.ts.html +0 -298
  177. package/coverage/lcov-report/src/components/zd-list/list.ts.html +0 -460
  178. package/coverage/lcov-report/src/components/zd-loading/index.html +0 -116
  179. package/coverage/lcov-report/src/components/zd-loading/loading.ts.html +0 -217
  180. package/coverage/lcov-report/src/components/zd-login/index.html +0 -131
  181. package/coverage/lcov-report/src/components/zd-login/login-button.ts.html +0 -421
  182. package/coverage/lcov-report/src/components/zd-login/login.ts.html +0 -340
  183. package/coverage/lcov-report/src/components/zd-main/index.html +0 -116
  184. package/coverage/lcov-report/src/components/zd-main/main.ts.html +0 -133
  185. package/coverage/lcov-report/src/components/zd-master-detail/detail-not-found.ts.html +0 -118
  186. package/coverage/lcov-report/src/components/zd-master-detail/index.html +0 -146
  187. package/coverage/lcov-report/src/components/zd-master-detail/master-detail.ts.html +0 -331
  188. package/coverage/lcov-report/src/components/zd-master-detail/master-not-found.ts.html +0 -118
  189. package/coverage/lcov-report/src/components/zd-menu/index.html +0 -176
  190. package/coverage/lcov-report/src/components/zd-menu/menu-button.ts.html +0 -241
  191. package/coverage/lcov-report/src/components/zd-menu/menu-group.ts.html +0 -400
  192. package/coverage/lcov-report/src/components/zd-menu/menu-link.ts.html +0 -337
  193. package/coverage/lcov-report/src/components/zd-menu/menu-separator.ts.html +0 -106
  194. package/coverage/lcov-report/src/components/zd-menu/menu.ts.html +0 -1384
  195. package/coverage/lcov-report/src/components/zd-modal/index.html +0 -131
  196. package/coverage/lcov-report/src/components/zd-modal/modal-close-button.ts.html +0 -220
  197. package/coverage/lcov-report/src/components/zd-modal/modal.ts.html +0 -355
  198. package/coverage/lcov-report/src/components/zd-month/index.html +0 -116
  199. package/coverage/lcov-report/src/components/zd-month/month.ts.html +0 -568
  200. package/coverage/lcov-report/src/components/zd-number-input/index.html +0 -116
  201. package/coverage/lcov-report/src/components/zd-number-input/number-input.ts.html +0 -532
  202. package/coverage/lcov-report/src/components/zd-password/index.html +0 -116
  203. package/coverage/lcov-report/src/components/zd-password/password.ts.html +0 -220
  204. package/coverage/lcov-report/src/components/zd-progress/index.html +0 -116
  205. package/coverage/lcov-report/src/components/zd-progress/progress.ts.html +0 -262
  206. package/coverage/lcov-report/src/components/zd-radio/index.html +0 -116
  207. package/coverage/lcov-report/src/components/zd-radio/radio.ts.html +0 -289
  208. package/coverage/lcov-report/src/components/zd-row/index.html +0 -116
  209. package/coverage/lcov-report/src/components/zd-row/row.ts.html +0 -256
  210. package/coverage/lcov-report/src/components/zd-select/index.html +0 -116
  211. package/coverage/lcov-report/src/components/zd-select/select.ts.html +0 -2089
  212. package/coverage/lcov-report/src/components/zd-select-multiple/index.html +0 -116
  213. package/coverage/lcov-report/src/components/zd-select-multiple/select-multiple.ts.html +0 -1549
  214. package/coverage/lcov-report/src/components/zd-svg-map/index.html +0 -116
  215. package/coverage/lcov-report/src/components/zd-svg-map/svg-map.ts.html +0 -475
  216. package/coverage/lcov-report/src/components/zd-switch/index.html +0 -116
  217. package/coverage/lcov-report/src/components/zd-switch/switch.ts.html +0 -163
  218. package/coverage/lcov-report/src/components/zd-table/index.html +0 -116
  219. package/coverage/lcov-report/src/components/zd-table/table.ts.html +0 -280
  220. package/coverage/lcov-report/src/components/zd-tabs/index.html +0 -146
  221. package/coverage/lcov-report/src/components/zd-tabs/tab-not-found.ts.html +0 -127
  222. package/coverage/lcov-report/src/components/zd-tabs/tab.ts.html +0 -370
  223. package/coverage/lcov-report/src/components/zd-tabs/tabs.ts.html +0 -586
  224. package/coverage/lcov-report/src/components/zd-tag/index.html +0 -116
  225. package/coverage/lcov-report/src/components/zd-tag/tag.ts.html +0 -142
  226. package/coverage/lcov-report/src/components/zd-text/index.html +0 -116
  227. package/coverage/lcov-report/src/components/zd-text/text.ts.html +0 -136
  228. package/coverage/lcov-report/src/components/zd-text-input/index.html +0 -116
  229. package/coverage/lcov-report/src/components/zd-text-input/text-input.ts.html +0 -778
  230. package/coverage/lcov-report/src/components/zd-textarea/index.html +0 -116
  231. package/coverage/lcov-report/src/components/zd-textarea/textarea.ts.html +0 -418
  232. package/coverage/lcov-report/src/components/zd-time/index.html +0 -131
  233. package/coverage/lcov-report/src/components/zd-time/time-format-selector.ts.html +0 -157
  234. package/coverage/lcov-report/src/components/zd-time/time.ts.html +0 -1687
  235. package/coverage/lcov-report/src/components/zd-toggleable/index.html +0 -116
  236. package/coverage/lcov-report/src/components/zd-toggleable/toggleable.ts.html +0 -196
  237. package/coverage/lcov-report/src/components/zd-tooltip/index.html +0 -116
  238. package/coverage/lcov-report/src/components/zd-tooltip/tooltip.ts.html +0 -340
  239. package/coverage/lcov-report/src/components/zd-tree/index.html +0 -116
  240. package/coverage/lcov-report/src/components/zd-tree/tree.ts.html +0 -1849
  241. package/coverage/lcov-report/src/components/zd-tree-grid/index.html +0 -191
  242. package/coverage/lcov-report/src/components/zd-tree-grid/index.ts.html +0 -103
  243. package/coverage/lcov-report/src/components/zd-tree-grid/iterable-tree.ts.html +0 -202
  244. package/coverage/lcov-report/src/components/zd-tree-grid/keymap-tree.ts.html +0 -154
  245. package/coverage/lcov-report/src/components/zd-tree-grid/tree-data-navigator.ts.html +0 -235
  246. package/coverage/lcov-report/src/components/zd-tree-grid/tree-data-selector.ts.html +0 -448
  247. package/coverage/lcov-report/src/components/zd-tree-grid/tree-grid.ts.html +0 -1390
  248. package/coverage/lcov-report/src/error/delete-rows.ts.html +0 -124
  249. package/coverage/lcov-report/src/error/index.html +0 -161
  250. package/coverage/lcov-report/src/error/index.ts.html +0 -94
  251. package/coverage/lcov-report/src/error/non-initialized.ts.html +0 -118
  252. package/coverage/lcov-report/src/error/tek-grid-delete-rows.ts.html +0 -130
  253. package/coverage/lcov-report/src/error/teknisa-common-error.ts.html +0 -109
  254. package/coverage/lcov-report/src/error/zeedhi-error.ts.html +0 -109
  255. package/coverage/lcov-report/src/index.html +0 -116
  256. package/coverage/lcov-report/src/index.ts.html +0 -145
  257. package/coverage/lcov-report/src/services/index.html +0 -116
  258. package/coverage/lcov-report/src/services/index.ts.html +0 -97
  259. package/coverage/lcov-report/src/services/zd-alert/alert-queue.ts.html +0 -205
  260. package/coverage/lcov-report/src/services/zd-alert/alert-replace.ts.html +0 -220
  261. package/coverage/lcov-report/src/services/zd-alert/alert-service.ts.html +0 -316
  262. package/coverage/lcov-report/src/services/zd-alert/alert-stack.ts.html +0 -172
  263. package/coverage/lcov-report/src/services/zd-alert/index.html +0 -176
  264. package/coverage/lcov-report/src/services/zd-alert/index.ts.html +0 -100
  265. package/coverage/lcov-report/src/services/zd-dialog/dialog-service.ts.html +0 -205
  266. package/coverage/lcov-report/src/services/zd-dialog/index.html +0 -116
  267. package/coverage/lcov-report/src/services/zd-loading/index.html +0 -116
  268. package/coverage/lcov-report/src/services/zd-loading/loading-service.ts.html +0 -157
  269. package/coverage/lcov-report/src/services/zd-modal/index.html +0 -116
  270. package/coverage/lcov-report/src/services/zd-modal/modal-service.ts.html +0 -298
  271. package/coverage/lcov-report/src/utils/data-value-out/data-value-out.ts.html +0 -202
  272. package/coverage/lcov-report/src/utils/data-value-out/index.html +0 -131
  273. package/coverage/lcov-report/src/utils/data-value-out/index.ts.html +0 -91
  274. package/coverage/lcov-report/src/utils/datasource-searcher/datasource-searcher.ts.html +0 -241
  275. package/coverage/lcov-report/src/utils/datasource-searcher/index.html +0 -131
  276. package/coverage/lcov-report/src/utils/datasource-searcher/index.ts.html +0 -91
  277. package/coverage/lcov-report/src/utils/icons/icons.ts.html +0 -547
  278. package/coverage/lcov-report/src/utils/icons/index.html +0 -116
  279. package/coverage/lcov-report/src/utils/index.html +0 -116
  280. package/coverage/lcov-report/src/utils/index.ts.html +0 -106
  281. package/coverage/lcov-report/src/utils/is-filled-object/index.html +0 -116
  282. package/coverage/lcov-report/src/utils/is-filled-object/is-filled-object.ts.html +0 -100
  283. package/coverage/lcov-report/src/utils/is-nil.ts.html +0 -94
  284. package/coverage/lcov-report/src/utils/omit/index.html +0 -116
  285. package/coverage/lcov-report/src/utils/omit/omit.ts.html +0 -124
  286. package/coverage/lcov-report/src/utils/theme/index.html +0 -116
  287. package/coverage/lcov-report/src/utils/theme/theme.ts.html +0 -679
  288. package/coverage/lcov-report/src/utils/tree-data-structure/index.html +0 -131
  289. package/coverage/lcov-report/src/utils/tree-data-structure/index.ts.html +0 -91
  290. package/coverage/lcov-report/src/utils/tree-data-structure/tree-data-structure.ts.html +0 -1645
  291. package/coverage/lcov-report/src/utils/unique-by/index.html +0 -116
  292. package/coverage/lcov-report/src/utils/unique-by/unique-by.ts.html +0 -130
  293. package/coverage/lcov-report/tests/unit/__helpers__/component-event-helper.ts.html +0 -106
  294. package/coverage/lcov-report/tests/unit/__helpers__/flush-promises-helper.ts.html +0 -94
  295. package/coverage/lcov-report/tests/unit/__helpers__/index.html +0 -146
  296. package/coverage/lcov-report/tests/unit/__helpers__/mock-http-get-helper.ts.html +0 -172
  297. package/coverage/lcov-report/tests/unit/components/zd-component/ComponentMock.ts.html +0 -166
  298. package/coverage/lcov-report/tests/unit/components/zd-component/index.html +0 -116
  299. package/coverage/lcov.info +0 -10206
  300. package/dist/types/components/tek-breadcrumb-header/breadcrumb-header.d.ts +0 -14
  301. package/dist/types/components/tek-breadcrumb-header/interfaces.d.ts +0 -7
  302. package/dist/types/components/tek-grid/columns-searcher.d.ts +0 -5
  303. package/dist/types/components/tek-grid/dynamic-filter-datasource-factory.d.ts +0 -6
  304. package/dist/types/components/tek-grid/filter-helper.d.ts +0 -7
  305. package/dist/types/components/tek-grid/grid-filter-button.d.ts +0 -27
  306. package/dist/types/components/tek-grid/grouped-data-manager.d.ts +0 -82
  307. package/dist/types/components/tek-grid/grouped-data-selector.d.ts +0 -7
  308. package/dist/types/components/tek-grid/grouped-view-navigator.d.ts +0 -14
  309. package/dist/types/components/tek-grid/index.d.ts +0 -18
  310. package/dist/types/components/tek-grid/interfaces.d.ts +0 -259
  311. package/dist/types/components/tek-grid/keymap-grouped.d.ts +0 -7
  312. package/dist/types/components/tek-grid/layout-options.d.ts +0 -39
  313. package/dist/types/components/tek-grid/tek-datasource/index.d.ts +0 -3
  314. package/dist/types/components/tek-grid/tek-datasource/interfaces.d.ts +0 -16
  315. package/dist/types/components/tek-grid/tek-datasource/tek-memory-datasource.d.ts +0 -93
  316. package/dist/types/components/tek-grid/tek-datasource/tek-rest-datasource.d.ts +0 -95
  317. package/dist/types/components/tek-grid/tek-grid-column.d.ts +0 -42
  318. package/dist/types/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.d.ts +0 -8
  319. package/dist/types/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.d.ts +0 -12
  320. package/dist/types/components/tek-grid/tek-grid-controller.d.ts +0 -31
  321. package/dist/types/components/tek-grid/tek-grid-events.d.ts +0 -31
  322. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/button-option.d.ts +0 -17
  323. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/index.d.ts +0 -3
  324. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/interfaces.d.ts +0 -5
  325. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/multi-option.d.ts +0 -12
  326. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/index.d.ts +0 -2
  327. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.d.ts +0 -23
  328. package/dist/types/components/tek-grid/tek-grid.d.ts +0 -220
  329. package/dist/types/components/zd-field-group/field-group.d.ts +0 -53
  330. package/dist/types/components/zd-field-group/interfaces.d.ts +0 -16
  331. package/dist/types/components/zd-number/interfaces.d.ts +0 -8
  332. package/dist/types/components/zd-number/number.d.ts +0 -43
  333. package/dist/types/error/tek-grid-delete-rows.d.ts +0 -7
  334. package/dist/types/error/teknisa-common-error.d.ts +0 -6
  335. package/dist/types/utils/config/config.d.ts +0 -7
  336. package/dist/types/utils/is-filled-object/is-filled-object.d.ts +0 -2
  337. package/dist/types/utils/is-nil.d.ts +0 -1
  338. package/tests/unit/utils/is-filled-object.spec.ts +0 -33
@@ -113,7 +113,7 @@ export declare class DateInput extends TextInput implements IDateInput {
113
113
  dateValidation(): boolean | string;
114
114
  click(event?: Event, element?: any): void;
115
115
  blur(event: Event, element: any): void;
116
- onMounted(): void;
116
+ onMounted(element: any): void;
117
117
  focus(event: Event, element: any): void;
118
118
  /**
119
119
  * Add date mask
@@ -1,6 +1,7 @@
1
1
  import { IDateRange } from './interfaces';
2
2
  import { TextInput } from '../zd-text-input/text-input';
3
3
  export declare class DateRange extends TextInput implements IDateRange {
4
+ allowedDates?: string[] | ((date: string) => boolean);
4
5
  /**
5
6
  * Input auto complete.
6
7
  */
@@ -151,8 +152,9 @@ export declare class DateRange extends TextInput implements IDateRange {
151
152
  updateHelperHint(helperValue: string): void;
152
153
  change(event?: Event, element?: any): void;
153
154
  private getExtremities;
154
- setNativeDate(date: Date[]): void;
155
+ setNativeDate(dates: Date[]): void;
155
156
  private dateObject;
156
157
  getNativeDate(): Date[];
158
+ getAllowedDates(date: Date): boolean;
157
159
  getMaskValue(): any;
158
160
  }
@@ -73,5 +73,14 @@ export declare abstract class Iterable<T extends Column = Column> extends Compon
73
73
  delete(row: IDictionary): Promise<any>;
74
74
  getData(): IDictionary[];
75
75
  protected changeDefaultSlotNames(slot: IComponentRender[]): any;
76
+ /**
77
+ * Recursively replaces a pattern in all string values within an object/array tree
78
+ * @param obj The object or array to process
79
+ * @param pattern The regex pattern to search for
80
+ * @param replacement The replacement string
81
+ * @returns A new object/array with replaced values
82
+ */
83
+ private recursiveReplace;
84
+ private isObject;
76
85
  findRow(key: string | number): IDictionary<any> | undefined;
77
86
  }
@@ -0,0 +1 @@
1
+ export declare function isDateAllowed(date: Date, dateFormat: string, allowedDates?: ((date: string) => boolean) | string[]): boolean;
package/dist/zd-common.js CHANGED
@@ -2287,6 +2287,18 @@ FormatterParserProvider.registerParser('ZdTextInput', (value, { valueWithPrefix
2287
2287
  });
2288
2288
  InputFactory.register('ZdTextInput', TextInput);
2289
2289
 
2290
+ function isDateAllowed(date, dateFormat, allowedDates) {
2291
+ if (!allowedDates)
2292
+ return true;
2293
+ if (allowedDates.length === 0)
2294
+ return false;
2295
+ const dateString = dayjs(date).format(dateFormat);
2296
+ if (allowedDates instanceof Function) {
2297
+ return allowedDates(dateString);
2298
+ }
2299
+ return allowedDates.indexOf(dateString) !== -1;
2300
+ }
2301
+
2290
2302
  /**
2291
2303
  * Base class for Date component.
2292
2304
  */
@@ -2426,6 +2438,9 @@ class DateInput extends TextInput {
2426
2438
  if (this.isValidFormatDate(value, this.dateFormat)) {
2427
2439
  this.dateObject = dayjs(value, this.dateFormat);
2428
2440
  }
2441
+ else {
2442
+ this.dateObject = null;
2443
+ }
2429
2444
  }
2430
2445
  get displayValue() {
2431
2446
  return this.internalDisplayValue;
@@ -2495,13 +2510,8 @@ class DateInput extends TextInput {
2495
2510
  const isValidMax = !maxDate || date.isBefore(maxDate) || date.isSame(maxDate);
2496
2511
  if (!isValidMax)
2497
2512
  return false;
2498
- const isAllowedDate = this.allowedDates === undefined ||
2499
- (this.allowedDates instanceof Function && this.allowedDates(dayjs(value, format).format(this.dateFormat))) ||
2500
- (Array.isArray(this.allowedDates) &&
2501
- this.allowedDates.indexOf(dayjs(value, format).format(this.dateFormat)) !== -1);
2502
- if (!isAllowedDate)
2503
- return false;
2504
- return true;
2513
+ const isAllowedDate = this.getAllowedDates(dayjs(value, format).toDate());
2514
+ return isAllowedDate;
2505
2515
  }
2506
2516
  isValidFormatDate(value, format, strict = true) {
2507
2517
  return dayjs(value, format, strict).isValid();
@@ -2516,16 +2526,7 @@ class DateInput extends TextInput {
2516
2526
  this.value = this.dateObject.format(this.dateFormat);
2517
2527
  }
2518
2528
  getAllowedDates(date) {
2519
- if (!this.allowedDates)
2520
- return true;
2521
- if (this.allowedDates.length === 0)
2522
- return false;
2523
- const dayjsDate = dayjs(date);
2524
- const dateString = dayjsDate.format(this.dateFormat);
2525
- if (this.allowedDates instanceof Function) {
2526
- return this.allowedDates(dateString);
2527
- }
2528
- return this.allowedDates.indexOf(dateString) !== -1;
2529
+ return isDateAllowed(date, this.dateFormat, this.allowedDates);
2529
2530
  }
2530
2531
  formatISODateValue(value) {
2531
2532
  if (value && this.isValidFormatDate(value, this.dateFormat)) {
@@ -2557,7 +2558,8 @@ class DateInput extends TextInput {
2557
2558
  this.showDatePicker = false;
2558
2559
  }
2559
2560
  }
2560
- onMounted() {
2561
+ onMounted(element) {
2562
+ super.onMounted(element);
2561
2563
  if (!this.value)
2562
2564
  return;
2563
2565
  this.setDateValue(this.formatter(this.value));
@@ -3573,9 +3575,41 @@ class Iterable extends ComponentRender {
3573
3575
  return this.datasource.data;
3574
3576
  }
3575
3577
  changeDefaultSlotNames(slot) {
3576
- const strMetadata = JSON.stringify(slot);
3577
- const newObj = strMetadata.replace(/<<NAME>>/g, this.name);
3578
- return JSON.parse(newObj);
3578
+ return this.recursiveReplace(slot, /<<NAME>>/g, this.name);
3579
+ }
3580
+ /**
3581
+ * Recursively replaces a pattern in all string values within an object/array tree
3582
+ * @param obj The object or array to process
3583
+ * @param pattern The regex pattern to search for
3584
+ * @param replacement The replacement string
3585
+ * @returns A new object/array with replaced values
3586
+ */
3587
+ recursiveReplace(obj, pattern, replacement) {
3588
+ // Handle null or undefined
3589
+ if (obj === null || obj === undefined) {
3590
+ return obj;
3591
+ }
3592
+ // Handle string values - perform replacement
3593
+ if (typeof obj === 'string') {
3594
+ return obj.replace(pattern, replacement);
3595
+ }
3596
+ // Handle arrays - recursively process each element
3597
+ if (Array.isArray(obj)) {
3598
+ return obj.map((item) => this.recursiveReplace(item, pattern, replacement));
3599
+ }
3600
+ // Handle objects - recursively process each property value
3601
+ if (this.isObject(obj)) {
3602
+ const newObj = {};
3603
+ for (const key in obj) {
3604
+ newObj[key] = this.recursiveReplace(obj[key], pattern, replacement);
3605
+ }
3606
+ return newObj;
3607
+ }
3608
+ // For all other types (functions, numbers, booleans, etc.), return as-is
3609
+ return obj;
3610
+ }
3611
+ isObject(value) {
3612
+ return typeof value === 'object';
3579
3613
  }
3580
3614
  findRow(key) {
3581
3615
  return this.getData().find((row) => this.getRowKey(row) === key);
@@ -12561,6 +12595,7 @@ FormatterParserProvider.registerParser('ZdTime', (value, { displayFormat = Confi
12561
12595
  InputFactory.register('ZdTime', Time);
12562
12596
 
12563
12597
  class DateRange extends TextInput {
12598
+ allowedDates;
12564
12599
  /**
12565
12600
  * Input auto complete.
12566
12601
  */
@@ -12664,6 +12699,7 @@ class DateRange extends TextInput {
12664
12699
  else {
12665
12700
  this.appendIcon = this.getInitValue('appendIcon', props.appendIcon, 'calendar');
12666
12701
  }
12702
+ this.allowedDates = this.getInitValue('allowedDates', props.allowedDates, this.allowedDates);
12667
12703
  this.autocomplete = this.getInitValue('autocomplete', props.autocomplete, this.autocomplete);
12668
12704
  this.dateFormat = this.getInitValue('dateFormat', props.dateFormat, this.dateFormat);
12669
12705
  this.dateValidation = this.dateValidation.bind(this);
@@ -12741,7 +12777,6 @@ class DateRange extends TextInput {
12741
12777
  this.internalValue = value;
12742
12778
  const [startDate, endDate] = value;
12743
12779
  const isStartValid = this.isValidFormatDate(startDate, this.dateFormat);
12744
- // if end date is not defined, no need to validate it
12745
12780
  const isEndValid = !endDate || this.isValidFormatDate(endDate, this.dateFormat);
12746
12781
  const areDatesValid = isStartValid && isEndValid;
12747
12782
  if (areDatesValid) {
@@ -12842,6 +12877,9 @@ class DateRange extends TextInput {
12842
12877
  const isValidMax = !maxDate || date.isBefore(maxDate) || date.isSame(maxDate);
12843
12878
  if (!isValidMax)
12844
12879
  return false;
12880
+ if (!this.getAllowedDates(dayjs(value, format).toDate())) {
12881
+ return false;
12882
+ }
12845
12883
  return true;
12846
12884
  }
12847
12885
  isValidFormatDate(value, format, strict = true) {
@@ -12998,9 +13036,19 @@ class DateRange extends TextInput {
12998
13036
  return [arr[0]];
12999
13037
  return [arr[0], arr[arr.length - 1]];
13000
13038
  }
13001
- setNativeDate(date) {
13039
+ setNativeDate(dates) {
13002
13040
  this.dateError = false;
13003
- this.dateObject = date.map((obj) => dayjs(obj));
13041
+ const dayjsDates = (dates || []).map((d) => dayjs(d));
13042
+ const [start, end] = this.getExtremities(dayjsDates);
13043
+ if (start && end) {
13044
+ for (let d = start; d.isBefore(end) || d.isSame(end); d = d.add(1, 'day')) {
13045
+ if (!this.getAllowedDates(d.toDate())) {
13046
+ this.dateError = true;
13047
+ return;
13048
+ }
13049
+ }
13050
+ }
13051
+ this.dateObject = (dates || []).map((obj) => dayjs(obj));
13004
13052
  const extremityDates = this.getExtremities(this.dateObject);
13005
13053
  this.value = extremityDates
13006
13054
  .filter((obj) => obj !== null)
@@ -13010,6 +13058,9 @@ class DateRange extends TextInput {
13010
13058
  getNativeDate() {
13011
13059
  return this.dateObject.filter((obj) => obj !== null).map((obj) => obj.toDate());
13012
13060
  }
13061
+ getAllowedDates(date) {
13062
+ return isDateAllowed(date, this.dateFormat, this.allowedDates);
13063
+ }
13013
13064
  getMaskValue() {
13014
13065
  let mask = '';
13015
13066
  if (typeof this.mask === 'function') {
@@ -2287,6 +2287,18 @@ FormatterParserProvider.registerParser('ZdTextInput', (value, { valueWithPrefix
2287
2287
  });
2288
2288
  InputFactory.register('ZdTextInput', TextInput);
2289
2289
 
2290
+ function isDateAllowed(date, dateFormat, allowedDates) {
2291
+ if (!allowedDates)
2292
+ return true;
2293
+ if (allowedDates.length === 0)
2294
+ return false;
2295
+ const dateString = dayjs(date).format(dateFormat);
2296
+ if (allowedDates instanceof Function) {
2297
+ return allowedDates(dateString);
2298
+ }
2299
+ return allowedDates.indexOf(dateString) !== -1;
2300
+ }
2301
+
2290
2302
  /**
2291
2303
  * Base class for Date component.
2292
2304
  */
@@ -2426,6 +2438,9 @@ class DateInput extends TextInput {
2426
2438
  if (this.isValidFormatDate(value, this.dateFormat)) {
2427
2439
  this.dateObject = dayjs(value, this.dateFormat);
2428
2440
  }
2441
+ else {
2442
+ this.dateObject = null;
2443
+ }
2429
2444
  }
2430
2445
  get displayValue() {
2431
2446
  return this.internalDisplayValue;
@@ -2495,13 +2510,8 @@ class DateInput extends TextInput {
2495
2510
  const isValidMax = !maxDate || date.isBefore(maxDate) || date.isSame(maxDate);
2496
2511
  if (!isValidMax)
2497
2512
  return false;
2498
- const isAllowedDate = this.allowedDates === undefined ||
2499
- (this.allowedDates instanceof Function && this.allowedDates(dayjs(value, format).format(this.dateFormat))) ||
2500
- (Array.isArray(this.allowedDates) &&
2501
- this.allowedDates.indexOf(dayjs(value, format).format(this.dateFormat)) !== -1);
2502
- if (!isAllowedDate)
2503
- return false;
2504
- return true;
2513
+ const isAllowedDate = this.getAllowedDates(dayjs(value, format).toDate());
2514
+ return isAllowedDate;
2505
2515
  }
2506
2516
  isValidFormatDate(value, format, strict = true) {
2507
2517
  return dayjs(value, format, strict).isValid();
@@ -2516,16 +2526,7 @@ class DateInput extends TextInput {
2516
2526
  this.value = this.dateObject.format(this.dateFormat);
2517
2527
  }
2518
2528
  getAllowedDates(date) {
2519
- if (!this.allowedDates)
2520
- return true;
2521
- if (this.allowedDates.length === 0)
2522
- return false;
2523
- const dayjsDate = dayjs(date);
2524
- const dateString = dayjsDate.format(this.dateFormat);
2525
- if (this.allowedDates instanceof Function) {
2526
- return this.allowedDates(dateString);
2527
- }
2528
- return this.allowedDates.indexOf(dateString) !== -1;
2529
+ return isDateAllowed(date, this.dateFormat, this.allowedDates);
2529
2530
  }
2530
2531
  formatISODateValue(value) {
2531
2532
  if (value && this.isValidFormatDate(value, this.dateFormat)) {
@@ -2557,7 +2558,8 @@ class DateInput extends TextInput {
2557
2558
  this.showDatePicker = false;
2558
2559
  }
2559
2560
  }
2560
- onMounted() {
2561
+ onMounted(element) {
2562
+ super.onMounted(element);
2561
2563
  if (!this.value)
2562
2564
  return;
2563
2565
  this.setDateValue(this.formatter(this.value));
@@ -3573,9 +3575,41 @@ class Iterable extends ComponentRender {
3573
3575
  return this.datasource.data;
3574
3576
  }
3575
3577
  changeDefaultSlotNames(slot) {
3576
- const strMetadata = JSON.stringify(slot);
3577
- const newObj = strMetadata.replace(/<<NAME>>/g, this.name);
3578
- return JSON.parse(newObj);
3578
+ return this.recursiveReplace(slot, /<<NAME>>/g, this.name);
3579
+ }
3580
+ /**
3581
+ * Recursively replaces a pattern in all string values within an object/array tree
3582
+ * @param obj The object or array to process
3583
+ * @param pattern The regex pattern to search for
3584
+ * @param replacement The replacement string
3585
+ * @returns A new object/array with replaced values
3586
+ */
3587
+ recursiveReplace(obj, pattern, replacement) {
3588
+ // Handle null or undefined
3589
+ if (obj === null || obj === undefined) {
3590
+ return obj;
3591
+ }
3592
+ // Handle string values - perform replacement
3593
+ if (typeof obj === 'string') {
3594
+ return obj.replace(pattern, replacement);
3595
+ }
3596
+ // Handle arrays - recursively process each element
3597
+ if (Array.isArray(obj)) {
3598
+ return obj.map((item) => this.recursiveReplace(item, pattern, replacement));
3599
+ }
3600
+ // Handle objects - recursively process each property value
3601
+ if (this.isObject(obj)) {
3602
+ const newObj = {};
3603
+ for (const key in obj) {
3604
+ newObj[key] = this.recursiveReplace(obj[key], pattern, replacement);
3605
+ }
3606
+ return newObj;
3607
+ }
3608
+ // For all other types (functions, numbers, booleans, etc.), return as-is
3609
+ return obj;
3610
+ }
3611
+ isObject(value) {
3612
+ return typeof value === 'object';
3579
3613
  }
3580
3614
  findRow(key) {
3581
3615
  return this.getData().find((row) => this.getRowKey(row) === key);
@@ -12561,6 +12595,7 @@ FormatterParserProvider.registerParser('ZdTime', (value, { displayFormat = Confi
12561
12595
  InputFactory.register('ZdTime', Time);
12562
12596
 
12563
12597
  class DateRange extends TextInput {
12598
+ allowedDates;
12564
12599
  /**
12565
12600
  * Input auto complete.
12566
12601
  */
@@ -12664,6 +12699,7 @@ class DateRange extends TextInput {
12664
12699
  else {
12665
12700
  this.appendIcon = this.getInitValue('appendIcon', props.appendIcon, 'calendar');
12666
12701
  }
12702
+ this.allowedDates = this.getInitValue('allowedDates', props.allowedDates, this.allowedDates);
12667
12703
  this.autocomplete = this.getInitValue('autocomplete', props.autocomplete, this.autocomplete);
12668
12704
  this.dateFormat = this.getInitValue('dateFormat', props.dateFormat, this.dateFormat);
12669
12705
  this.dateValidation = this.dateValidation.bind(this);
@@ -12741,7 +12777,6 @@ class DateRange extends TextInput {
12741
12777
  this.internalValue = value;
12742
12778
  const [startDate, endDate] = value;
12743
12779
  const isStartValid = this.isValidFormatDate(startDate, this.dateFormat);
12744
- // if end date is not defined, no need to validate it
12745
12780
  const isEndValid = !endDate || this.isValidFormatDate(endDate, this.dateFormat);
12746
12781
  const areDatesValid = isStartValid && isEndValid;
12747
12782
  if (areDatesValid) {
@@ -12842,6 +12877,9 @@ class DateRange extends TextInput {
12842
12877
  const isValidMax = !maxDate || date.isBefore(maxDate) || date.isSame(maxDate);
12843
12878
  if (!isValidMax)
12844
12879
  return false;
12880
+ if (!this.getAllowedDates(dayjs(value, format).toDate())) {
12881
+ return false;
12882
+ }
12845
12883
  return true;
12846
12884
  }
12847
12885
  isValidFormatDate(value, format, strict = true) {
@@ -12998,9 +13036,19 @@ class DateRange extends TextInput {
12998
13036
  return [arr[0]];
12999
13037
  return [arr[0], arr[arr.length - 1]];
13000
13038
  }
13001
- setNativeDate(date) {
13039
+ setNativeDate(dates) {
13002
13040
  this.dateError = false;
13003
- this.dateObject = date.map((obj) => dayjs(obj));
13041
+ const dayjsDates = (dates || []).map((d) => dayjs(d));
13042
+ const [start, end] = this.getExtremities(dayjsDates);
13043
+ if (start && end) {
13044
+ for (let d = start; d.isBefore(end) || d.isSame(end); d = d.add(1, 'day')) {
13045
+ if (!this.getAllowedDates(d.toDate())) {
13046
+ this.dateError = true;
13047
+ return;
13048
+ }
13049
+ }
13050
+ }
13051
+ this.dateObject = (dates || []).map((obj) => dayjs(obj));
13004
13052
  const extremityDates = this.getExtremities(this.dateObject);
13005
13053
  this.value = extremityDates
13006
13054
  .filter((obj) => obj !== null)
@@ -13010,6 +13058,9 @@ class DateRange extends TextInput {
13010
13058
  getNativeDate() {
13011
13059
  return this.dateObject.filter((obj) => obj !== null).map((obj) => obj.toDate());
13012
13060
  }
13061
+ getAllowedDates(date) {
13062
+ return isDateAllowed(date, this.dateFormat, this.allowedDates);
13063
+ }
13013
13064
  getMaskValue() {
13014
13065
  let mask = '';
13015
13066
  if (typeof this.mask === 'function') {
@@ -0,0 +1,6 @@
1
+ {
2
+ "development": {
3
+ },
4
+ "production": {
5
+ }
6
+ }
package/jest.config.cjs CHANGED
@@ -7,4 +7,5 @@ module.exports = {
7
7
  coveragePathIgnorePatterns: [
8
8
  "/tests/unit/__helpers__/"
9
9
  ],
10
+ setupFilesAfterEnv: ['<rootDir>/tests/unit/utils/mock-console.ts'],
10
11
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeedhi/common",
3
- "version": "3.0.4",
3
+ "version": "3.0.6",
4
4
  "description": "Zeedhi Common",
5
5
  "author": "Zeedhi <zeedhi@teknisa.com>",
6
6
  "license": "ISC",
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "@zeedhi/autonumeric": "^4.6.3",
24
- "@zeedhi/core": "^3.0.4",
24
+ "@zeedhi/core": "^3.0.6",
25
25
  "lodash.clonedeep": "^4.5.0",
26
26
  "lodash.debounce": "^4.0.8",
27
27
  "lodash.get": "^4.4.2",
@@ -42,5 +42,8 @@
42
42
  "lodash.times": "^4.3.2",
43
43
  "mockdate": "^3.0.5"
44
44
  },
45
- "gitHead": "7acd4545ec3846bc0918899b09877e5cb08c5b4c"
45
+ "env": {
46
+ "NODE_ENV": "production"
47
+ },
48
+ "gitHead": "8968e2b143f77acec2e51a6ca22f2e25646d0078"
46
49
  }
@@ -3,6 +3,7 @@ import isUndefined from 'lodash.isundefined';
3
3
  import { InputFactory } from '../zd-input/input-factory';
4
4
  import { TextInput } from '../zd-text-input/text-input';
5
5
  import { IDateInput } from './interfaces';
6
+ import { isDateAllowed } from '../../utils/date-utils/date-utils';
6
7
 
7
8
  /**
8
9
  * Base class for Date component.
@@ -175,6 +176,8 @@ export class DateInput extends TextInput implements IDateInput {
175
176
  }
176
177
  if (this.isValidFormatDate(value, this.dateFormat)) {
177
178
  this.dateObject = dayjs(value, this.dateFormat);
179
+ } else {
180
+ this.dateObject = null;
178
181
  }
179
182
  }
180
183
 
@@ -252,15 +255,9 @@ export class DateInput extends TextInput implements IDateInput {
252
255
  const isValidMax = !maxDate || date.isBefore(maxDate) || date.isSame(maxDate);
253
256
  if (!isValidMax) return false;
254
257
 
255
- const isAllowedDate =
256
- this.allowedDates === undefined ||
257
- (this.allowedDates instanceof Function && this.allowedDates(dayjs(value, format).format(this.dateFormat))) ||
258
- (Array.isArray(this.allowedDates) &&
259
- this.allowedDates.indexOf(dayjs(value, format).format(this.dateFormat)) !== -1);
260
-
261
- if (!isAllowedDate) return false;
258
+ const isAllowedDate = this.getAllowedDates(dayjs(value, format).toDate());
262
259
 
263
- return true;
260
+ return isAllowedDate;
264
261
  }
265
262
 
266
263
  public isValidFormatDate(value: string, format: string, strict = true): boolean {
@@ -280,18 +277,7 @@ export class DateInput extends TextInput implements IDateInput {
280
277
  }
281
278
 
282
279
  public getAllowedDates(date: Date) {
283
- if (!this.allowedDates) return true;
284
-
285
- if (this.allowedDates.length === 0) return false;
286
-
287
- const dayjsDate = dayjs(date);
288
- const dateString = dayjsDate.format(this.dateFormat);
289
-
290
- if (this.allowedDates instanceof Function) {
291
- return this.allowedDates(dateString);
292
- }
293
-
294
- return this.allowedDates.indexOf(dateString) !== -1;
280
+ return isDateAllowed(date, this.dateFormat, this.allowedDates);
295
281
  }
296
282
 
297
283
  public formatISODateValue(value: string): string {
@@ -329,7 +315,9 @@ export class DateInput extends TextInput implements IDateInput {
329
315
  }
330
316
  }
331
317
 
332
- public onMounted() {
318
+ public onMounted(element: any) {
319
+ super.onMounted(element);
320
+
333
321
  if (!this.value) return;
334
322
 
335
323
  this.setDateValue(this.formatter(this.value));
@@ -1,11 +1,13 @@
1
1
  import { Config, DateHelper, FormatterParserProvider, I18n, Mask, Utils, dayjs } from '@zeedhi/core';
2
2
  import isUndefined from 'lodash.isundefined';
3
3
  import { IDateRange } from './interfaces';
4
-
4
+ import { isDateAllowed } from '../../utils/date-utils/date-utils';
5
5
  import { InputFactory } from '../zd-input/input-factory';
6
6
  import { TextInput } from '../zd-text-input/text-input';
7
7
 
8
8
  export class DateRange extends TextInput implements IDateRange {
9
+
10
+ public allowedDates?: string[] | ((date: string) => boolean);
9
11
  /**
10
12
  * Input auto complete.
11
13
  */
@@ -134,6 +136,7 @@ export class DateRange extends TextInput implements IDateRange {
134
136
  } else {
135
137
  this.appendIcon = this.getInitValue('appendIcon', props.appendIcon, 'calendar');
136
138
  }
139
+ this.allowedDates = this.getInitValue('allowedDates', props.allowedDates, this.allowedDates);
137
140
  this.autocomplete = this.getInitValue('autocomplete', props.autocomplete, this.autocomplete);
138
141
  this.dateFormat = this.getInitValue('dateFormat', props.dateFormat, this.dateFormat);
139
142
  this.dateValidation = this.dateValidation.bind(this);
@@ -223,7 +226,6 @@ export class DateRange extends TextInput implements IDateRange {
223
226
 
224
227
  const [startDate, endDate] = value;
225
228
  const isStartValid = this.isValidFormatDate(startDate, this.dateFormat);
226
- // if end date is not defined, no need to validate it
227
229
  const isEndValid = !endDate || this.isValidFormatDate(endDate, this.dateFormat);
228
230
  const areDatesValid = isStartValid && isEndValid;
229
231
 
@@ -328,6 +330,10 @@ export class DateRange extends TextInput implements IDateRange {
328
330
  const isValidMax = !maxDate || date.isBefore(maxDate) || date.isSame(maxDate);
329
331
  if (!isValidMax) return false;
330
332
 
333
+ if (!this.getAllowedDates(dayjs(value, format).toDate())) {
334
+ return false;
335
+ }
336
+
331
337
  return true;
332
338
  }
333
339
 
@@ -515,9 +521,22 @@ export class DateRange extends TextInput implements IDateRange {
515
521
  return [arr[0], arr[arr.length - 1]];
516
522
  }
517
523
 
518
- public setNativeDate(date: Date[]) {
524
+ public setNativeDate(dates: Date[]) {
519
525
  this.dateError = false;
520
- this.dateObject = date.map((obj) => dayjs(obj));
526
+
527
+ const dayjsDates = (dates || []).map((d) => dayjs(d));
528
+ const [start, end] = this.getExtremities(dayjsDates);
529
+
530
+ if (start && end) {
531
+ for (let d = start; d.isBefore(end) || d.isSame(end); d = d.add(1, 'day')) {
532
+ if (!this.getAllowedDates(d.toDate())) {
533
+ this.dateError = true;
534
+ return;
535
+ }
536
+ }
537
+ }
538
+
539
+ this.dateObject = (dates || []).map((obj) => dayjs(obj));
521
540
 
522
541
  const extremityDates = this.getExtremities(this.dateObject);
523
542
  this.value = extremityDates
@@ -531,6 +550,10 @@ export class DateRange extends TextInput implements IDateRange {
531
550
  return this.dateObject.filter((obj): obj is dayjs.Dayjs => obj !== null).map((obj) => obj.toDate());
532
551
  }
533
552
 
553
+ public getAllowedDates(date: Date) {
554
+ return isDateAllowed(date, this.dateFormat, this.allowedDates);
555
+ }
556
+
534
557
  public getMaskValue() {
535
558
  let mask: any = '';
536
559
 
@@ -234,9 +234,47 @@ export abstract class Iterable<T extends Column = Column>
234
234
  }
235
235
 
236
236
  protected changeDefaultSlotNames(slot: IComponentRender[]) {
237
- const strMetadata = JSON.stringify(slot);
238
- const newObj = strMetadata.replace(/<<NAME>>/g, this.name);
239
- return JSON.parse(newObj);
237
+ return this.recursiveReplace(slot, /<<NAME>>/g, this.name);
238
+ }
239
+
240
+ /**
241
+ * Recursively replaces a pattern in all string values within an object/array tree
242
+ * @param obj The object or array to process
243
+ * @param pattern The regex pattern to search for
244
+ * @param replacement The replacement string
245
+ * @returns A new object/array with replaced values
246
+ */
247
+ private recursiveReplace(obj: unknown, pattern: RegExp, replacement: string): any {
248
+ // Handle null or undefined
249
+ if (obj === null || obj === undefined) {
250
+ return obj;
251
+ }
252
+
253
+ // Handle string values - perform replacement
254
+ if (typeof obj === 'string') {
255
+ return obj.replace(pattern, replacement);
256
+ }
257
+
258
+ // Handle arrays - recursively process each element
259
+ if (Array.isArray(obj)) {
260
+ return obj.map((item) => this.recursiveReplace(item, pattern, replacement));
261
+ }
262
+
263
+ // Handle objects - recursively process each property value
264
+ if (this.isObject(obj)) {
265
+ const newObj: IDictionary = {};
266
+ for (const key in obj) {
267
+ newObj[key] = this.recursiveReplace(obj[key], pattern, replacement);
268
+ }
269
+ return newObj;
270
+ }
271
+
272
+ // For all other types (functions, numbers, booleans, etc.), return as-is
273
+ return obj;
274
+ }
275
+
276
+ private isObject(value: unknown): value is IDictionary {
277
+ return typeof value === 'object';
240
278
  }
241
279
 
242
280
  public findRow(key: string | number) {
@@ -0,0 +1,18 @@
1
+ import { dayjs } from '@zeedhi/core';
2
+
3
+ export function isDateAllowed(
4
+ date: Date,
5
+ dateFormat: string,
6
+ allowedDates?: ((date: string) => boolean) | string[],
7
+ ): boolean {
8
+ if (!allowedDates) return true;
9
+
10
+ if (allowedDates.length === 0) return false;
11
+
12
+ const dateString = dayjs(date).format(dateFormat);
13
+
14
+ if (allowedDates instanceof Function) {
15
+ return allowedDates(dateString);
16
+ }
17
+ return allowedDates.indexOf(dateString) !== -1;
18
+ }