@zeedhi/common 1.111.1 → 3.0.0

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 (1104) hide show
  1. package/coverage/clover.xml +5996 -0
  2. package/coverage/coverage-final.json +160 -0
  3. package/coverage/lcov-report/base.css +224 -0
  4. package/coverage/lcov-report/block-navigation.js +87 -0
  5. package/coverage/lcov-report/favicon.png +0 -0
  6. package/coverage/lcov-report/index.html +1256 -0
  7. package/coverage/lcov-report/prettify.css +1 -0
  8. package/coverage/lcov-report/prettify.js +2 -0
  9. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  10. package/coverage/lcov-report/sorter.js +196 -0
  11. package/coverage/lcov-report/src/components/index.html +116 -0
  12. package/coverage/lcov-report/src/components/index.ts.html +634 -0
  13. package/coverage/lcov-report/src/components/tek-grid/columns-searcher.ts.html +151 -0
  14. package/coverage/lcov-report/src/components/tek-grid/dynamic-filter-datasource-factory.ts.html +145 -0
  15. package/coverage/lcov-report/src/components/tek-grid/filter-helper.ts.html +145 -0
  16. package/coverage/lcov-report/src/components/tek-grid/grid-filter-button.ts.html +1351 -0
  17. package/coverage/lcov-report/src/components/tek-grid/grouped-data-manager.ts.html +1429 -0
  18. package/coverage/lcov-report/src/components/tek-grid/grouped-data-selector.ts.html +205 -0
  19. package/coverage/lcov-report/src/components/tek-grid/grouped-view-navigator.ts.html +340 -0
  20. package/coverage/lcov-report/src/components/tek-grid/index.html +326 -0
  21. package/coverage/lcov-report/src/components/tek-grid/index.ts.html +139 -0
  22. package/coverage/lcov-report/src/components/tek-grid/interfaces.ts.html +1072 -0
  23. package/coverage/lcov-report/src/components/tek-grid/keymap-grouped.ts.html +148 -0
  24. package/coverage/lcov-report/src/components/tek-grid/layout-options.ts.html +829 -0
  25. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/index.html +161 -0
  26. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/index.ts.html +94 -0
  27. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/interfaces.ts.html +193 -0
  28. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/tek-memory-datasource.ts.html +1027 -0
  29. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/tek-rest-datasource.ts.html +757 -0
  30. package/coverage/lcov-report/src/components/tek-grid/tek-grid-column.ts.html +664 -0
  31. package/coverage/lcov-report/src/components/tek-grid/tek-grid-columns-button/index.html +131 -0
  32. package/coverage/lcov-report/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.ts.html +169 -0
  33. package/coverage/lcov-report/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.ts.html +196 -0
  34. package/coverage/lcov-report/src/components/tek-grid/tek-grid-controller.ts.html +505 -0
  35. package/coverage/lcov-report/src/components/tek-grid/tek-grid-events.ts.html +400 -0
  36. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/button-option.ts.html +163 -0
  37. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/index.html +146 -0
  38. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/index.ts.html +94 -0
  39. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/multi-option.ts.html +340 -0
  40. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/index.html +131 -0
  41. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/index.ts.html +91 -0
  42. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.ts.html +1186 -0
  43. package/coverage/lcov-report/src/components/tek-grid/tek-grid.ts.html +3451 -0
  44. package/coverage/lcov-report/src/components/zd-alert/alert.ts.html +502 -0
  45. package/coverage/lcov-report/src/components/zd-alert/index.html +116 -0
  46. package/coverage/lcov-report/src/components/zd-badge/badge.ts.html +226 -0
  47. package/coverage/lcov-report/src/components/zd-badge/index.html +116 -0
  48. package/coverage/lcov-report/src/components/zd-breadcrumbs/breadcrumbs.ts.html +226 -0
  49. package/coverage/lcov-report/src/components/zd-breadcrumbs/index.html +116 -0
  50. package/coverage/lcov-report/src/components/zd-button/button.ts.html +706 -0
  51. package/coverage/lcov-report/src/components/zd-button/index.html +116 -0
  52. package/coverage/lcov-report/src/components/zd-button-group/button-group.ts.html +430 -0
  53. package/coverage/lcov-report/src/components/zd-button-group/index.html +116 -0
  54. package/coverage/lcov-report/src/components/zd-card/card.ts.html +748 -0
  55. package/coverage/lcov-report/src/components/zd-card/index.html +116 -0
  56. package/coverage/lcov-report/src/components/zd-carousel/carousel.ts.html +949 -0
  57. package/coverage/lcov-report/src/components/zd-carousel/index.html +116 -0
  58. package/coverage/lcov-report/src/components/zd-checkbox/checkbox.ts.html +148 -0
  59. package/coverage/lcov-report/src/components/zd-checkbox/index.html +116 -0
  60. package/coverage/lcov-report/src/components/zd-checkbox-multiple/checkbox-multiple.ts.html +358 -0
  61. package/coverage/lcov-report/src/components/zd-checkbox-multiple/index.html +116 -0
  62. package/coverage/lcov-report/src/components/zd-code-editor/code-editor.ts.html +1045 -0
  63. package/coverage/lcov-report/src/components/zd-code-editor/index.html +116 -0
  64. package/coverage/lcov-report/src/components/zd-code-viewer/code-viewer.ts.html +682 -0
  65. package/coverage/lcov-report/src/components/zd-code-viewer/index.html +116 -0
  66. package/coverage/lcov-report/src/components/zd-col/col.ts.html +250 -0
  67. package/coverage/lcov-report/src/components/zd-col/index.html +116 -0
  68. package/coverage/lcov-report/src/components/zd-collapse-card/collapse-card.ts.html +331 -0
  69. package/coverage/lcov-report/src/components/zd-collapse-card/index.html +116 -0
  70. package/coverage/lcov-report/src/components/zd-component/child-not-found.ts.html +109 -0
  71. package/coverage/lcov-report/src/components/zd-component/component-render.ts.html +160 -0
  72. package/coverage/lcov-report/src/components/zd-component/component.ts.html +1036 -0
  73. package/coverage/lcov-report/src/components/zd-component/index.html +146 -0
  74. package/coverage/lcov-report/src/components/zd-container/container.ts.html +289 -0
  75. package/coverage/lcov-report/src/components/zd-container/index.html +116 -0
  76. package/coverage/lcov-report/src/components/zd-date-input/date-input.ts.html +1765 -0
  77. package/coverage/lcov-report/src/components/zd-date-input/index.html +116 -0
  78. package/coverage/lcov-report/src/components/zd-dialog/dialog.ts.html +541 -0
  79. package/coverage/lcov-report/src/components/zd-dialog/index.html +116 -0
  80. package/coverage/lcov-report/src/components/zd-divider/divider.ts.html +178 -0
  81. package/coverage/lcov-report/src/components/zd-divider/index.html +116 -0
  82. package/coverage/lcov-report/src/components/zd-dropdown/dropdown.ts.html +460 -0
  83. package/coverage/lcov-report/src/components/zd-dropdown/index.html +116 -0
  84. package/coverage/lcov-report/src/components/zd-field-group/field-group.ts.html +325 -0
  85. package/coverage/lcov-report/src/components/zd-field-group/index.html +116 -0
  86. package/coverage/lcov-report/src/components/zd-footer/footer.ts.html +451 -0
  87. package/coverage/lcov-report/src/components/zd-footer/index.html +116 -0
  88. package/coverage/lcov-report/src/components/zd-form/form.ts.html +805 -0
  89. package/coverage/lcov-report/src/components/zd-form/index.html +116 -0
  90. package/coverage/lcov-report/src/components/zd-frame/frame.ts.html +763 -0
  91. package/coverage/lcov-report/src/components/zd-frame/index.html +116 -0
  92. package/coverage/lcov-report/src/components/zd-frame-page/frame-page.ts.html +169 -0
  93. package/coverage/lcov-report/src/components/zd-frame-page/index.html +116 -0
  94. package/coverage/lcov-report/src/components/zd-grid/data-navigator.ts.html +304 -0
  95. package/coverage/lcov-report/src/components/zd-grid/data-selector.ts.html +532 -0
  96. package/coverage/lcov-report/src/components/zd-grid/grid-column.ts.html +709 -0
  97. package/coverage/lcov-report/src/components/zd-grid/grid-events.ts.html +244 -0
  98. package/coverage/lcov-report/src/components/zd-grid/grid.ts.html +1042 -0
  99. package/coverage/lcov-report/src/components/zd-grid/index.html +266 -0
  100. package/coverage/lcov-report/src/components/zd-grid/index.ts.html +118 -0
  101. package/coverage/lcov-report/src/components/zd-grid/iterable-table.ts.html +274 -0
  102. package/coverage/lcov-report/src/components/zd-grid/keymap-merger.ts.html +241 -0
  103. package/coverage/lcov-report/src/components/zd-grid/keymap-navigation.ts.html +313 -0
  104. package/coverage/lcov-report/src/components/zd-grid/table-action-builder.ts.html +427 -0
  105. package/coverage/lcov-report/src/components/zd-grid/view-navigator.ts.html +175 -0
  106. package/coverage/lcov-report/src/components/zd-grid-editable/data-editor-with-add.ts.html +826 -0
  107. package/coverage/lcov-report/src/components/zd-grid-editable/data-editor.ts.html +1570 -0
  108. package/coverage/lcov-report/src/components/zd-grid-editable/errors/index.html +146 -0
  109. package/coverage/lcov-report/src/components/zd-grid-editable/errors/index.ts.html +91 -0
  110. package/coverage/lcov-report/src/components/zd-grid-editable/errors/not-editing.ts.html +109 -0
  111. package/coverage/lcov-report/src/components/zd-grid-editable/errors/row-not-found.ts.html +109 -0
  112. package/coverage/lcov-report/src/components/zd-grid-editable/grid-column-editable.ts.html +130 -0
  113. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable-controller.ts.html +139 -0
  114. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable-events.ts.html +430 -0
  115. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable.ts.html +1477 -0
  116. package/coverage/lcov-report/src/components/zd-grid-editable/index.html +221 -0
  117. package/coverage/lcov-report/src/components/zd-grid-editable/index.ts.html +106 -0
  118. package/coverage/lcov-report/src/components/zd-grid-editable/keymap-editing.ts.html +139 -0
  119. package/coverage/lcov-report/src/components/zd-header/header.ts.html +502 -0
  120. package/coverage/lcov-report/src/components/zd-header/index.html +116 -0
  121. package/coverage/lcov-report/src/components/zd-icon/icon.ts.html +325 -0
  122. package/coverage/lcov-report/src/components/zd-icon/index.html +116 -0
  123. package/coverage/lcov-report/src/components/zd-image/image.ts.html +424 -0
  124. package/coverage/lcov-report/src/components/zd-image/index.html +116 -0
  125. package/coverage/lcov-report/src/components/zd-input/index.html +131 -0
  126. package/coverage/lcov-report/src/components/zd-input/input-factory.ts.html +130 -0
  127. package/coverage/lcov-report/src/components/zd-input/input.ts.html +1333 -0
  128. package/coverage/lcov-report/src/components/zd-iterable/column-not-found.ts.html +109 -0
  129. package/coverage/lcov-report/src/components/zd-iterable/column.ts.html +823 -0
  130. package/coverage/lcov-report/src/components/zd-iterable/conditions-manager.ts.html +523 -0
  131. package/coverage/lcov-report/src/components/zd-iterable/index.html +281 -0
  132. package/coverage/lcov-report/src/components/zd-iterable/iterable-columns-button-controller.ts.html +136 -0
  133. package/coverage/lcov-report/src/components/zd-iterable/iterable-columns-button.ts.html +313 -0
  134. package/coverage/lcov-report/src/components/zd-iterable/iterable-controller.ts.html +166 -0
  135. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-component.ts.html +244 -0
  136. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-info.ts.html +106 -0
  137. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-size.ts.html +421 -0
  138. package/coverage/lcov-report/src/components/zd-iterable/iterable-pagination.ts.html +208 -0
  139. package/coverage/lcov-report/src/components/zd-iterable/iterable.ts.html +820 -0
  140. package/coverage/lcov-report/src/components/zd-iterable/search.ts.html +343 -0
  141. package/coverage/lcov-report/src/components/zd-iterable-component-render/index.html +116 -0
  142. package/coverage/lcov-report/src/components/zd-iterable-component-render/iterable-component-render.ts.html +592 -0
  143. package/coverage/lcov-report/src/components/zd-layout/index.html +116 -0
  144. package/coverage/lcov-report/src/components/zd-layout/layout.ts.html +145 -0
  145. package/coverage/lcov-report/src/components/zd-list/index.html +161 -0
  146. package/coverage/lcov-report/src/components/zd-list/item-not-found.ts.html +109 -0
  147. package/coverage/lcov-report/src/components/zd-list/list-group.ts.html +241 -0
  148. package/coverage/lcov-report/src/components/zd-list/list-item.ts.html +298 -0
  149. package/coverage/lcov-report/src/components/zd-list/list.ts.html +460 -0
  150. package/coverage/lcov-report/src/components/zd-loading/index.html +116 -0
  151. package/coverage/lcov-report/src/components/zd-loading/loading.ts.html +217 -0
  152. package/coverage/lcov-report/src/components/zd-login/index.html +131 -0
  153. package/coverage/lcov-report/src/components/zd-login/login-button.ts.html +421 -0
  154. package/coverage/lcov-report/src/components/zd-login/login.ts.html +340 -0
  155. package/coverage/lcov-report/src/components/zd-main/index.html +116 -0
  156. package/coverage/lcov-report/src/components/zd-main/main.ts.html +133 -0
  157. package/coverage/lcov-report/src/components/zd-menu/index.html +176 -0
  158. package/coverage/lcov-report/src/components/zd-menu/menu-button.ts.html +241 -0
  159. package/coverage/lcov-report/src/components/zd-menu/menu-group.ts.html +400 -0
  160. package/coverage/lcov-report/src/components/zd-menu/menu-link.ts.html +337 -0
  161. package/coverage/lcov-report/src/components/zd-menu/menu-separator.ts.html +106 -0
  162. package/coverage/lcov-report/src/components/zd-menu/menu.ts.html +1384 -0
  163. package/coverage/lcov-report/src/components/zd-modal/index.html +131 -0
  164. package/coverage/lcov-report/src/components/zd-modal/modal-close-button.ts.html +220 -0
  165. package/coverage/lcov-report/src/components/zd-modal/modal.ts.html +355 -0
  166. package/coverage/lcov-report/src/components/zd-number-input/index.html +116 -0
  167. package/coverage/lcov-report/src/components/zd-number-input/number-input.ts.html +532 -0
  168. package/coverage/lcov-report/src/components/zd-password/index.html +116 -0
  169. package/coverage/lcov-report/src/components/zd-password/password.ts.html +220 -0
  170. package/coverage/lcov-report/src/components/zd-radio/index.html +116 -0
  171. package/coverage/lcov-report/src/components/zd-radio/radio.ts.html +289 -0
  172. package/coverage/lcov-report/src/components/zd-row/index.html +116 -0
  173. package/coverage/lcov-report/src/components/zd-row/row.ts.html +256 -0
  174. package/coverage/lcov-report/src/components/zd-select/index.html +116 -0
  175. package/coverage/lcov-report/src/components/zd-select/select.ts.html +2089 -0
  176. package/coverage/lcov-report/src/components/zd-select-multiple/index.html +116 -0
  177. package/coverage/lcov-report/src/components/zd-select-multiple/select-multiple.ts.html +1549 -0
  178. package/coverage/lcov-report/src/components/zd-switch/index.html +116 -0
  179. package/coverage/lcov-report/src/components/zd-switch/switch.ts.html +163 -0
  180. package/coverage/lcov-report/src/components/zd-table/index.html +116 -0
  181. package/coverage/lcov-report/src/components/zd-table/table.ts.html +280 -0
  182. package/coverage/lcov-report/src/components/zd-tabs/index.html +146 -0
  183. package/coverage/lcov-report/src/components/zd-tabs/tab-not-found.ts.html +127 -0
  184. package/coverage/lcov-report/src/components/zd-tabs/tab.ts.html +370 -0
  185. package/coverage/lcov-report/src/components/zd-tabs/tabs.ts.html +586 -0
  186. package/coverage/lcov-report/src/components/zd-tag/index.html +116 -0
  187. package/coverage/lcov-report/src/components/zd-tag/tag.ts.html +142 -0
  188. package/coverage/lcov-report/src/components/zd-text/index.html +116 -0
  189. package/coverage/lcov-report/src/components/zd-text/text.ts.html +136 -0
  190. package/coverage/lcov-report/src/components/zd-text-input/index.html +116 -0
  191. package/coverage/lcov-report/src/components/zd-text-input/text-input.ts.html +769 -0
  192. package/coverage/lcov-report/src/components/zd-textarea/index.html +116 -0
  193. package/coverage/lcov-report/src/components/zd-textarea/textarea.ts.html +418 -0
  194. package/coverage/lcov-report/src/components/zd-toggleable/index.html +116 -0
  195. package/coverage/lcov-report/src/components/zd-toggleable/toggleable.ts.html +196 -0
  196. package/coverage/lcov-report/src/components/zd-tooltip/index.html +116 -0
  197. package/coverage/lcov-report/src/components/zd-tooltip/tooltip.ts.html +340 -0
  198. package/coverage/lcov-report/src/components/zd-tree-grid/index.html +191 -0
  199. package/coverage/lcov-report/src/components/zd-tree-grid/index.ts.html +103 -0
  200. package/coverage/lcov-report/src/components/zd-tree-grid/iterable-tree.ts.html +202 -0
  201. package/coverage/lcov-report/src/components/zd-tree-grid/keymap-tree.ts.html +154 -0
  202. package/coverage/lcov-report/src/components/zd-tree-grid/tree-data-navigator.ts.html +235 -0
  203. package/coverage/lcov-report/src/components/zd-tree-grid/tree-data-selector.ts.html +448 -0
  204. package/coverage/lcov-report/src/components/zd-tree-grid/tree-grid.ts.html +1390 -0
  205. package/coverage/lcov-report/src/error/delete-rows.ts.html +124 -0
  206. package/coverage/lcov-report/src/error/index.html +176 -0
  207. package/coverage/lcov-report/src/error/non-initialized.ts.html +118 -0
  208. package/coverage/lcov-report/src/error/tek-grid-delete-rows.ts.html +130 -0
  209. package/coverage/lcov-report/src/error/teknisa-common-error.ts.html +109 -0
  210. package/coverage/lcov-report/src/error/zeedhi-error.ts.html +109 -0
  211. package/coverage/lcov-report/src/index.html +116 -0
  212. package/coverage/lcov-report/src/index.ts.html +163 -0
  213. package/coverage/lcov-report/src/services/index.html +116 -0
  214. package/coverage/lcov-report/src/services/index.ts.html +97 -0
  215. package/coverage/lcov-report/src/services/zd-alert/alert-queue.ts.html +205 -0
  216. package/coverage/lcov-report/src/services/zd-alert/alert-replace.ts.html +220 -0
  217. package/coverage/lcov-report/src/services/zd-alert/alert-service.ts.html +316 -0
  218. package/coverage/lcov-report/src/services/zd-alert/alert-stack.ts.html +172 -0
  219. package/coverage/lcov-report/src/services/zd-alert/index.html +176 -0
  220. package/coverage/lcov-report/src/services/zd-alert/index.ts.html +100 -0
  221. package/coverage/lcov-report/src/services/zd-dialog/dialog-service.ts.html +205 -0
  222. package/coverage/lcov-report/src/services/zd-dialog/index.html +116 -0
  223. package/coverage/lcov-report/src/services/zd-loading/index.html +116 -0
  224. package/coverage/lcov-report/src/services/zd-loading/loading-service.ts.html +157 -0
  225. package/coverage/lcov-report/src/services/zd-modal/index.html +116 -0
  226. package/coverage/lcov-report/src/services/zd-modal/modal-service.ts.html +298 -0
  227. package/coverage/lcov-report/src/utils/data-value-out/data-value-out.ts.html +202 -0
  228. package/coverage/lcov-report/src/utils/data-value-out/index.html +131 -0
  229. package/coverage/lcov-report/src/utils/data-value-out/index.ts.html +91 -0
  230. package/coverage/lcov-report/src/utils/datasource-searcher/datasource-searcher.ts.html +241 -0
  231. package/coverage/lcov-report/src/utils/datasource-searcher/index.html +131 -0
  232. package/coverage/lcov-report/src/utils/datasource-searcher/index.ts.html +91 -0
  233. package/coverage/lcov-report/src/utils/icons/icons.ts.html +547 -0
  234. package/coverage/lcov-report/src/utils/icons/index.html +116 -0
  235. package/coverage/lcov-report/src/utils/index.html +131 -0
  236. package/coverage/lcov-report/src/utils/index.ts.html +115 -0
  237. package/coverage/lcov-report/src/utils/is-filled-object/index.html +116 -0
  238. package/coverage/lcov-report/src/utils/is-filled-object/is-filled-object.ts.html +100 -0
  239. package/coverage/lcov-report/src/utils/is-nil.ts.html +94 -0
  240. package/coverage/lcov-report/src/utils/omit/index.html +116 -0
  241. package/coverage/lcov-report/src/utils/omit/omit.ts.html +124 -0
  242. package/coverage/lcov-report/src/utils/theme/index.html +116 -0
  243. package/coverage/lcov-report/src/utils/theme/theme.ts.html +679 -0
  244. package/coverage/lcov-report/src/utils/tree-data-structure/index.html +131 -0
  245. package/coverage/lcov-report/src/utils/tree-data-structure/index.ts.html +91 -0
  246. package/coverage/lcov-report/src/utils/tree-data-structure/tree-data-structure.ts.html +1642 -0
  247. package/coverage/lcov-report/src/utils/unique-by/index.html +116 -0
  248. package/coverage/lcov-report/src/utils/unique-by/unique-by.ts.html +130 -0
  249. package/coverage/lcov-report/tests/unit/__helpers__/component-event-helper.ts.html +106 -0
  250. package/coverage/lcov-report/tests/unit/__helpers__/flush-promises-helper.ts.html +94 -0
  251. package/coverage/lcov-report/tests/unit/__helpers__/index.html +146 -0
  252. package/coverage/lcov-report/tests/unit/__helpers__/mock-http-get-helper.ts.html +172 -0
  253. package/coverage/lcov-report/tests/unit/components/zd-component/ComponentMock.ts.html +166 -0
  254. package/coverage/lcov-report/tests/unit/components/zd-component/index.html +116 -0
  255. package/coverage/lcov.info +10874 -0
  256. package/dist/style.css +1 -1
  257. package/dist/types/components/index.d.ts +150 -0
  258. package/dist/types/components/tek-breadcrumb-header/breadcrumb-header.d.ts +14 -0
  259. package/dist/types/components/tek-breadcrumb-header/interfaces.d.ts +7 -0
  260. package/dist/types/components/tek-grid/columns-searcher.d.ts +5 -0
  261. package/dist/types/components/tek-grid/dynamic-filter-datasource-factory.d.ts +6 -0
  262. package/dist/types/components/tek-grid/filter-helper.d.ts +7 -0
  263. package/dist/types/components/tek-grid/grid-filter-button.d.ts +27 -0
  264. package/dist/types/components/tek-grid/grouped-data-manager.d.ts +82 -0
  265. package/dist/types/components/tek-grid/grouped-data-selector.d.ts +7 -0
  266. package/dist/types/components/tek-grid/grouped-view-navigator.d.ts +14 -0
  267. package/dist/types/components/tek-grid/index.d.ts +18 -0
  268. package/dist/types/components/tek-grid/interfaces.d.ts +259 -0
  269. package/dist/types/components/tek-grid/keymap-grouped.d.ts +7 -0
  270. package/dist/types/components/tek-grid/layout-options.d.ts +39 -0
  271. package/dist/types/components/tek-grid/tek-datasource/index.d.ts +3 -0
  272. package/dist/types/components/tek-grid/tek-datasource/interfaces.d.ts +16 -0
  273. package/dist/types/components/tek-grid/tek-datasource/tek-memory-datasource.d.ts +93 -0
  274. package/dist/types/components/tek-grid/tek-datasource/tek-rest-datasource.d.ts +95 -0
  275. package/dist/types/components/tek-grid/tek-grid-column.d.ts +42 -0
  276. package/dist/types/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.d.ts +8 -0
  277. package/dist/types/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.d.ts +12 -0
  278. package/dist/types/components/tek-grid/tek-grid-controller.d.ts +31 -0
  279. package/dist/types/components/tek-grid/tek-grid-events.d.ts +31 -0
  280. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/button-option.d.ts +17 -0
  281. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/index.d.ts +3 -0
  282. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/interfaces.d.ts +5 -0
  283. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/multi-option.d.ts +12 -0
  284. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/index.d.ts +2 -0
  285. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.d.ts +23 -0
  286. package/dist/types/components/tek-grid/tek-grid.d.ts +220 -0
  287. package/dist/types/components/zd-alert/alert.d.ts +94 -0
  288. package/dist/types/components/zd-alert/interfaces.d.ts +18 -0
  289. package/dist/types/components/zd-badge/badge.d.ts +28 -0
  290. package/dist/types/components/zd-badge/interfaces.d.ts +10 -0
  291. package/dist/types/components/zd-breadcrumbs/breadcrumbs.d.ts +32 -0
  292. package/dist/types/components/zd-breadcrumbs/interfaces.d.ts +24 -0
  293. package/dist/types/components/zd-button/button.d.ts +89 -0
  294. package/dist/types/components/zd-button/interfaces.d.ts +48 -0
  295. package/dist/types/components/zd-button-group/button-group.d.ts +67 -0
  296. package/dist/types/components/zd-button-group/interfaces.d.ts +25 -0
  297. package/dist/types/components/zd-card/card.d.ts +152 -0
  298. package/dist/types/components/zd-card/interfaces.d.ts +40 -0
  299. package/dist/types/components/zd-carousel/carousel.d.ts +163 -0
  300. package/dist/types/components/zd-carousel/interfaces.d.ts +49 -0
  301. package/dist/types/components/zd-checkbox/checkbox.d.ts +12 -0
  302. package/dist/types/components/zd-checkbox/interfaces.d.ts +5 -0
  303. package/dist/types/components/zd-checkbox-multiple/checkbox-multiple.d.ts +39 -0
  304. package/dist/types/components/zd-checkbox-multiple/interfaces.d.ts +13 -0
  305. package/dist/types/components/zd-chip/chip.d.ts +60 -0
  306. package/dist/types/components/zd-chip/interfaces.d.ts +18 -0
  307. package/dist/types/components/zd-code-viewer/code-viewer.d.ts +86 -0
  308. package/dist/types/components/zd-code-viewer/interfaces.d.ts +13 -0
  309. package/dist/types/components/zd-col/col.d.ts +33 -0
  310. package/dist/types/components/zd-col/interfaces.d.ts +15 -0
  311. package/dist/types/components/zd-collapse-card/collapse-card.d.ts +56 -0
  312. package/dist/types/components/zd-collapse-card/interfaces.d.ts +14 -0
  313. package/dist/types/components/zd-component/child-not-found.d.ts +6 -0
  314. package/dist/types/components/zd-component/component-render.d.ts +16 -0
  315. package/dist/types/components/zd-component/component.d.ts +120 -0
  316. package/dist/types/components/zd-component/interfaces.d.ts +74 -0
  317. package/dist/types/components/zd-container/container.d.ts +45 -0
  318. package/dist/types/components/zd-container/interfaces.d.ts +12 -0
  319. package/dist/types/components/zd-currency/currency.d.ts +12 -0
  320. package/dist/types/components/zd-currency/interfaces.d.ts +6 -0
  321. package/dist/types/components/zd-date-input/date-input.d.ts +151 -0
  322. package/dist/types/components/zd-date-input/interfaces.d.ts +27 -0
  323. package/dist/types/components/zd-dialog/dialog.d.ts +76 -0
  324. package/dist/types/components/zd-dialog/interfaces.d.ts +13 -0
  325. package/dist/types/components/zd-divider/divider.d.ts +20 -0
  326. package/dist/types/components/zd-divider/interfaces.d.ts +8 -0
  327. package/dist/types/components/zd-dropdown/dropdown.d.ts +81 -0
  328. package/dist/types/components/zd-dropdown/interfaces.d.ts +23 -0
  329. package/dist/types/components/zd-field-group/field-group.d.ts +53 -0
  330. package/dist/types/components/zd-field-group/interfaces.d.ts +16 -0
  331. package/dist/types/components/zd-footer/footer.d.ts +80 -0
  332. package/dist/types/components/zd-footer/interfaces.d.ts +26 -0
  333. package/dist/types/components/zd-form/form.d.ts +159 -0
  334. package/dist/types/components/zd-form/interfaces.d.ts +33 -0
  335. package/dist/types/components/zd-frame/frame.d.ts +81 -0
  336. package/dist/types/components/zd-frame/interfaces.d.ts +23 -0
  337. package/dist/types/components/zd-frame-page/frame-page.d.ts +14 -0
  338. package/dist/types/components/zd-frame-page/interfaces.d.ts +4 -0
  339. package/dist/types/components/zd-grid/data-navigator.d.ts +12 -0
  340. package/dist/types/components/zd-grid/data-selector.d.ts +25 -0
  341. package/dist/types/components/zd-grid/grid-column.d.ts +47 -0
  342. package/dist/types/components/zd-grid/grid-events.d.ts +26 -0
  343. package/dist/types/components/zd-grid/grid.d.ts +85 -0
  344. package/dist/types/components/zd-grid/index.d.ts +11 -0
  345. package/dist/types/components/zd-grid/interfaces.d.ts +148 -0
  346. package/dist/types/components/zd-grid/iterable-table.d.ts +28 -0
  347. package/dist/types/components/zd-grid/keymap-merger.d.ts +26 -0
  348. package/dist/types/components/zd-grid/keymap-navigation.d.ts +6 -0
  349. package/dist/types/components/zd-grid/table-action-builder.d.ts +19 -0
  350. package/dist/types/components/zd-grid/view-navigator.d.ts +10 -0
  351. package/dist/types/components/zd-grid-editable/data-editor-with-add.d.ts +35 -0
  352. package/dist/types/components/zd-grid-editable/data-editor.d.ts +64 -0
  353. package/dist/types/components/zd-grid-editable/errors/index.d.ts +2 -0
  354. package/dist/types/components/zd-grid-editable/errors/not-editing.d.ts +6 -0
  355. package/dist/types/components/zd-grid-editable/errors/row-not-found.d.ts +6 -0
  356. package/dist/types/components/zd-grid-editable/grid-column-editable.d.ts +9 -0
  357. package/dist/types/components/zd-grid-editable/grid-editable-controller.d.ts +8 -0
  358. package/dist/types/components/zd-grid-editable/grid-editable-events.d.ts +32 -0
  359. package/dist/types/components/zd-grid-editable/grid-editable.d.ts +124 -0
  360. package/dist/types/components/zd-grid-editable/index.d.ts +7 -0
  361. package/dist/types/components/zd-grid-editable/interfaces.d.ts +66 -0
  362. package/dist/types/components/zd-grid-editable/keymap-editing.d.ts +7 -0
  363. package/dist/types/components/zd-header/header.d.ts +94 -0
  364. package/dist/types/components/zd-header/interfaces.d.ts +29 -0
  365. package/dist/types/components/zd-icon/icon.d.ts +55 -0
  366. package/dist/types/components/zd-icon/interfaces.d.ts +13 -0
  367. package/dist/types/components/zd-image/image.d.ts +73 -0
  368. package/dist/types/components/zd-image/interfaces.d.ts +17 -0
  369. package/dist/types/components/zd-increment/increment.d.ts +56 -0
  370. package/dist/types/components/zd-increment/interfaces.d.ts +9 -0
  371. package/dist/types/components/zd-input/input-factory.d.ts +6 -0
  372. package/dist/types/components/zd-input/input.d.ts +221 -0
  373. package/dist/types/components/zd-input/interfaces.d.ts +36 -0
  374. package/dist/types/components/zd-iterable/column-not-found.d.ts +6 -0
  375. package/dist/types/components/zd-iterable/column.d.ts +78 -0
  376. package/dist/types/components/zd-iterable/conditions-manager.d.ts +49 -0
  377. package/dist/types/components/zd-iterable/interfaces.d.ts +103 -0
  378. package/dist/types/components/zd-iterable/iterable-columns-button-controller.d.ts +9 -0
  379. package/dist/types/components/zd-iterable/iterable-columns-button.d.ts +35 -0
  380. package/dist/types/components/zd-iterable/iterable-controller.d.ts +8 -0
  381. package/dist/types/components/zd-iterable/iterable-page-component.d.ts +27 -0
  382. package/dist/types/components/zd-iterable/iterable-page-info.d.ts +7 -0
  383. package/dist/types/components/zd-iterable/iterable-page-size.d.ts +62 -0
  384. package/dist/types/components/zd-iterable/iterable-pagination.d.ts +28 -0
  385. package/dist/types/components/zd-iterable/iterable.d.ts +77 -0
  386. package/dist/types/components/zd-iterable/search.d.ts +31 -0
  387. package/dist/types/components/zd-iterable-component-render/interfaces.d.ts +34 -0
  388. package/dist/types/components/zd-iterable-component-render/iterable-component-render.d.ts +84 -0
  389. package/dist/types/components/zd-layout/interfaces.d.ts +7 -0
  390. package/dist/types/components/zd-layout/layout.d.ts +9 -0
  391. package/dist/types/components/zd-list/interfaces.d.ts +44 -0
  392. package/dist/types/components/zd-list/item-not-found.d.ts +6 -0
  393. package/dist/types/components/zd-list/list-group.d.ts +30 -0
  394. package/dist/types/components/zd-list/list-item.d.ts +46 -0
  395. package/dist/types/components/zd-list/list.d.ts +81 -0
  396. package/dist/types/components/zd-loading/interfaces.d.ts +7 -0
  397. package/dist/types/components/zd-loading/loading.d.ts +21 -0
  398. package/dist/types/components/zd-login/interfaces.d.ts +25 -0
  399. package/dist/types/components/zd-login/login-button.d.ts +50 -0
  400. package/dist/types/components/zd-login/login.d.ts +54 -0
  401. package/dist/types/components/zd-main/interfaces.d.ts +5 -0
  402. package/dist/types/components/zd-main/main.d.ts +7 -0
  403. package/dist/types/components/zd-master-detail/detail-not-found.d.ts +7 -0
  404. package/dist/types/components/zd-master-detail/interfaces.d.ts +10 -0
  405. package/dist/types/components/zd-master-detail/master-detail.d.ts +18 -0
  406. package/dist/types/components/zd-master-detail/master-not-found.d.ts +7 -0
  407. package/dist/types/components/zd-menu/interfaces.d.ts +68 -0
  408. package/dist/types/components/zd-menu/menu-button.d.ts +29 -0
  409. package/dist/types/components/zd-menu/menu-group.d.ts +61 -0
  410. package/dist/types/components/zd-menu/menu-link.d.ts +50 -0
  411. package/dist/types/components/zd-menu/menu-separator.d.ts +7 -0
  412. package/dist/types/components/zd-menu/menu.d.ts +199 -0
  413. package/dist/types/components/zd-modal/interfaces.d.ts +35 -0
  414. package/dist/types/components/zd-modal/modal-close-button.d.ts +28 -0
  415. package/dist/types/components/zd-modal/modal.d.ts +53 -0
  416. package/dist/types/components/zd-month/interfaces.d.ts +6 -0
  417. package/dist/types/components/zd-month/month.d.ts +33 -0
  418. package/dist/types/components/zd-number/interfaces.d.ts +8 -0
  419. package/dist/types/components/zd-number/number.d.ts +43 -0
  420. package/dist/types/components/zd-number-input/interfaces.d.ts +8 -0
  421. package/dist/types/components/zd-number-input/number-input.d.ts +43 -0
  422. package/dist/types/components/zd-password/interfaces.d.ts +6 -0
  423. package/dist/types/components/zd-password/password.d.ts +17 -0
  424. package/dist/types/components/zd-progress/interfaces.d.ts +10 -0
  425. package/dist/types/components/zd-progress/progress.d.ts +41 -0
  426. package/dist/types/components/zd-radio/interfaces.d.ts +11 -0
  427. package/dist/types/components/zd-radio/radio.d.ts +35 -0
  428. package/dist/types/components/zd-row/interfaces.d.ts +13 -0
  429. package/dist/types/components/zd-row/row.d.ts +39 -0
  430. package/dist/types/components/zd-select/interfaces.d.ts +24 -0
  431. package/dist/types/components/zd-select/select.d.ts +238 -0
  432. package/dist/types/components/zd-select-multiple/interfaces.d.ts +18 -0
  433. package/dist/types/components/zd-select-multiple/select-multiple.d.ts +113 -0
  434. package/dist/types/components/zd-svg-map/interfaces.d.ts +26 -0
  435. package/dist/types/components/zd-svg-map/svg-map.d.ts +35 -0
  436. package/dist/types/components/zd-switch/interfaces.d.ts +7 -0
  437. package/dist/types/components/zd-switch/switch.d.ts +16 -0
  438. package/dist/types/components/zd-table/interfaces.d.ts +25 -0
  439. package/dist/types/components/zd-table/table.d.ts +42 -0
  440. package/dist/types/components/zd-tabs/interfaces.d.ts +40 -0
  441. package/dist/types/components/zd-tabs/tab-not-found.d.ts +11 -0
  442. package/dist/types/components/zd-tabs/tab.d.ts +57 -0
  443. package/dist/types/components/zd-tabs/tabs.d.ts +86 -0
  444. package/dist/types/components/zd-tag/interfaces.d.ts +7 -0
  445. package/dist/types/components/zd-tag/tag.d.ts +13 -0
  446. package/dist/types/components/zd-text/interfaces.d.ts +9 -0
  447. package/dist/types/components/zd-text/text.d.ts +8 -0
  448. package/dist/types/components/zd-text-input/interfaces.d.ts +22 -0
  449. package/dist/types/components/zd-text-input/text-input.d.ts +90 -0
  450. package/dist/types/components/zd-textarea/interfaces.d.ts +21 -0
  451. package/dist/types/components/zd-textarea/textarea.d.ts +71 -0
  452. package/dist/types/components/zd-time/interfaces.d.ts +22 -0
  453. package/dist/types/components/zd-time/time-format-selector.d.ts +8 -0
  454. package/dist/types/components/zd-time/time.d.ts +148 -0
  455. package/dist/types/components/zd-toggleable/interfaces.d.ts +6 -0
  456. package/dist/types/components/zd-toggleable/toggleable.d.ts +21 -0
  457. package/dist/types/components/zd-tooltip/interfaces.d.ts +18 -0
  458. package/dist/types/components/zd-tooltip/tooltip.d.ts +57 -0
  459. package/dist/types/components/zd-tree/interfaces.d.ts +107 -0
  460. package/dist/types/components/zd-tree/tree.d.ts +161 -0
  461. package/dist/types/components/zd-tree-grid/index.d.ts +6 -0
  462. package/dist/types/components/zd-tree-grid/interfaces.d.ts +35 -0
  463. package/dist/types/components/zd-tree-grid/iterable-tree.d.ts +10 -0
  464. package/dist/types/components/zd-tree-grid/keymap-tree.d.ts +7 -0
  465. package/dist/types/components/zd-tree-grid/tree-data-navigator.d.ts +10 -0
  466. package/dist/types/components/zd-tree-grid/tree-data-selector.d.ts +18 -0
  467. package/dist/types/components/zd-tree-grid/tree-grid.d.ts +119 -0
  468. package/dist/types/error/delete-rows.d.ts +7 -0
  469. package/dist/types/error/index.d.ts +2 -0
  470. package/dist/types/error/non-initialized.d.ts +7 -0
  471. package/dist/types/error/tek-grid-delete-rows.d.ts +7 -0
  472. package/dist/types/error/teknisa-common-error.d.ts +6 -0
  473. package/dist/types/error/zeedhi-error.d.ts +6 -0
  474. package/dist/types/index.d.ts +5 -0
  475. package/dist/types/services/index.d.ts +4 -0
  476. package/dist/types/services/zd-alert/alert-queue.d.ts +13 -0
  477. package/dist/types/services/zd-alert/alert-replace.d.ts +18 -0
  478. package/dist/types/services/zd-alert/alert-service.d.ts +45 -0
  479. package/dist/types/services/zd-alert/alert-stack.d.ts +9 -0
  480. package/dist/types/services/zd-alert/index.d.ts +5 -0
  481. package/dist/types/services/zd-alert/interfaces.d.ts +6 -0
  482. package/dist/types/services/zd-dialog/dialog-service.d.ts +24 -0
  483. package/dist/types/services/zd-loading/loading-service.d.ts +17 -0
  484. package/dist/types/services/zd-modal/modal-service.d.ts +39 -0
  485. package/dist/types/utils/config/config.d.ts +7 -0
  486. package/dist/types/utils/data-value-out/data-value-out.d.ts +5 -0
  487. package/dist/types/utils/data-value-out/index.d.ts +2 -0
  488. package/dist/types/utils/data-value-out/interfaces.d.ts +8 -0
  489. package/dist/types/utils/datasource-searcher/datasource-searcher.d.ts +6 -0
  490. package/dist/types/utils/datasource-searcher/index.d.ts +2 -0
  491. package/dist/types/utils/datasource-searcher/interfaces.d.ts +5 -0
  492. package/dist/types/utils/icons/icons.d.ts +24 -0
  493. package/dist/types/utils/index.d.ts +10 -0
  494. package/dist/types/utils/is-filled-object/is-filled-object.d.ts +2 -0
  495. package/dist/types/utils/is-nil.d.ts +1 -0
  496. package/dist/types/utils/omit/omit.d.ts +11 -0
  497. package/dist/types/utils/theme/theme.d.ts +34 -0
  498. package/dist/types/utils/tree-data-structure/index.d.ts +2 -0
  499. package/dist/types/utils/tree-data-structure/interfaces.d.ts +30 -0
  500. package/dist/types/utils/tree-data-structure/tree-data-structure.d.ts +155 -0
  501. package/dist/types/utils/unique-by/unique-by.d.ts +3 -0
  502. package/dist/zd-common.js +15769 -0
  503. package/dist/zd-common.min.js +15769 -0
  504. package/jest.config.cjs +10 -0
  505. package/package.json +27 -28
  506. package/rollup.config.js +27 -0
  507. package/rollup.scss.config.js +10 -10
  508. package/src/components/index.ts +215 -0
  509. package/src/components/tek-grid/columns-searcher.ts +22 -0
  510. package/src/components/tek-grid/dynamic-filter-datasource-factory.ts +20 -0
  511. package/src/components/tek-grid/filter-helper.ts +20 -0
  512. package/src/components/tek-grid/grid-filter-button.ts +422 -0
  513. package/src/components/tek-grid/grouped-data-manager.ts +448 -0
  514. package/src/components/tek-grid/grouped-data-selector.ts +40 -0
  515. package/src/components/tek-grid/grouped-view-navigator.ts +85 -0
  516. package/src/components/tek-grid/index.ts +18 -0
  517. package/src/components/tek-grid/interfaces.ts +329 -0
  518. package/src/components/tek-grid/keymap-grouped.ts +21 -0
  519. package/src/components/tek-grid/layout-options.ts +248 -0
  520. package/src/components/tek-grid/tek-datasource/index.ts +3 -0
  521. package/src/components/tek-grid/tek-datasource/interfaces.ts +36 -0
  522. package/src/components/tek-grid/tek-datasource/tek-memory-datasource.ts +314 -0
  523. package/src/components/tek-grid/tek-datasource/tek-rest-datasource.ts +224 -0
  524. package/src/components/tek-grid/tek-grid-column.ts +193 -0
  525. package/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.ts +28 -0
  526. package/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.ts +37 -0
  527. package/src/components/tek-grid/tek-grid-controller.ts +140 -0
  528. package/src/components/tek-grid/tek-grid-events.ts +105 -0
  529. package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/button-option.ts +26 -0
  530. package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/index.ts +3 -0
  531. package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/interfaces.ts +6 -0
  532. package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/multi-option.ts +85 -0
  533. package/src/components/tek-grid/tek-grid-toolbar-provider/index.ts +2 -0
  534. package/src/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.ts +367 -0
  535. package/src/components/tek-grid/tek-grid.ts +1122 -0
  536. package/src/components/zd-alert/alert.ts +139 -0
  537. package/src/components/zd-alert/interfaces.ts +19 -0
  538. package/src/components/zd-badge/badge.ts +47 -0
  539. package/src/components/zd-badge/interfaces.ts +12 -0
  540. package/src/components/zd-breadcrumbs/breadcrumbs.ts +47 -0
  541. package/src/components/zd-breadcrumbs/interfaces.ts +27 -0
  542. package/src/components/zd-button/button.ts +207 -0
  543. package/src/components/zd-button/interfaces.ts +51 -0
  544. package/src/components/zd-button-group/button-group.ts +109 -0
  545. package/src/components/zd-button-group/interfaces.ts +27 -0
  546. package/src/components/zd-card/card.ts +221 -0
  547. package/src/components/zd-card/interfaces.ts +63 -0
  548. package/src/components/zd-carousel/carousel.ts +288 -0
  549. package/src/components/zd-carousel/interfaces.ts +53 -0
  550. package/src/components/zd-checkbox/checkbox.ts +21 -0
  551. package/src/components/zd-checkbox/interfaces.ts +7 -0
  552. package/src/components/zd-checkbox-multiple/checkbox-multiple.ts +76 -0
  553. package/src/components/zd-checkbox-multiple/interfaces.ts +15 -0
  554. package/src/components/zd-chip/chip.ts +89 -0
  555. package/src/components/zd-chip/interfaces.ts +20 -0
  556. package/src/components/zd-code-viewer/code-viewer.ts +199 -0
  557. package/src/components/zd-code-viewer/interfaces.ts +14 -0
  558. package/src/components/zd-col/col.ts +55 -0
  559. package/src/components/zd-col/interfaces.ts +17 -0
  560. package/src/components/zd-collapse-card/collapse-card.ts +86 -0
  561. package/src/components/zd-collapse-card/interfaces.ts +15 -0
  562. package/src/components/zd-component/child-not-found.ts +8 -0
  563. package/src/components/zd-component/component-render.ts +25 -0
  564. package/src/components/zd-component/component.ts +333 -0
  565. package/src/components/zd-component/interfaces.ts +79 -0
  566. package/src/components/zd-container/container.ts +68 -0
  567. package/src/components/zd-container/interfaces.ts +13 -0
  568. package/src/components/zd-currency/currency.ts +58 -0
  569. package/src/components/zd-currency/interfaces.ts +7 -0
  570. package/src/components/zd-date-input/date-input.ts +565 -0
  571. package/src/components/zd-date-input/interfaces.ts +30 -0
  572. package/src/components/zd-dialog/dialog.ts +152 -0
  573. package/src/components/zd-dialog/interfaces.ts +14 -0
  574. package/src/components/zd-divider/divider.ts +31 -0
  575. package/src/components/zd-divider/interfaces.ts +10 -0
  576. package/src/components/zd-dropdown/dropdown.ts +125 -0
  577. package/src/components/zd-dropdown/interfaces.ts +25 -0
  578. package/src/components/zd-footer/footer.ts +122 -0
  579. package/src/components/zd-footer/interfaces.ts +28 -0
  580. package/src/components/zd-form/form.ts +240 -0
  581. package/src/components/zd-form/interfaces.ts +38 -0
  582. package/src/components/zd-frame/frame.ts +226 -0
  583. package/src/components/zd-frame/interfaces.ts +26 -0
  584. package/src/components/zd-frame-page/frame-page.ts +28 -0
  585. package/src/components/zd-frame-page/interfaces.ts +5 -0
  586. package/src/components/zd-grid/data-navigator.ts +73 -0
  587. package/src/components/zd-grid/data-selector.ts +149 -0
  588. package/src/components/zd-grid/grid-column.ts +208 -0
  589. package/src/components/zd-grid/grid-events.ts +53 -0
  590. package/src/components/zd-grid/grid.ts +319 -0
  591. package/src/components/zd-grid/index.ts +11 -0
  592. package/src/components/zd-grid/interfaces.ts +159 -0
  593. package/src/components/zd-grid/iterable-table.ts +63 -0
  594. package/src/components/zd-grid/keymap-merger.ts +52 -0
  595. package/src/components/zd-grid/keymap-navigation.ts +76 -0
  596. package/src/components/zd-grid/table-action-builder.ts +114 -0
  597. package/src/components/zd-grid/view-navigator.ts +30 -0
  598. package/src/components/zd-grid-editable/data-editor-with-add.ts +247 -0
  599. package/src/components/zd-grid-editable/data-editor.ts +495 -0
  600. package/src/components/zd-grid-editable/errors/index.ts +2 -0
  601. package/src/components/zd-grid-editable/errors/not-editing.ts +8 -0
  602. package/src/components/zd-grid-editable/errors/row-not-found.ts +8 -0
  603. package/src/components/zd-grid-editable/grid-column-editable.ts +15 -0
  604. package/src/components/zd-grid-editable/grid-editable-controller.ts +18 -0
  605. package/src/components/zd-grid-editable/grid-editable-events.ts +115 -0
  606. package/src/components/zd-grid-editable/grid-editable.ts +464 -0
  607. package/src/components/zd-grid-editable/index.ts +7 -0
  608. package/src/components/zd-grid-editable/interfaces.ts +66 -0
  609. package/src/components/zd-grid-editable/keymap-editing.ts +18 -0
  610. package/src/components/zd-header/header.ts +139 -0
  611. package/src/components/zd-header/interfaces.ts +32 -0
  612. package/src/components/zd-icon/icon.ts +80 -0
  613. package/src/components/zd-icon/interfaces.ts +14 -0
  614. package/src/components/zd-image/image.ts +113 -0
  615. package/src/components/zd-image/interfaces.ts +19 -0
  616. package/src/components/zd-increment/increment.ts +117 -0
  617. package/src/components/zd-increment/interfaces.ts +11 -0
  618. package/src/components/zd-input/input-factory.ts +15 -0
  619. package/src/components/zd-input/input.ts +416 -0
  620. package/src/components/zd-input/interfaces.ts +38 -0
  621. package/src/components/zd-iterable/column-not-found.ts +8 -0
  622. package/src/components/zd-iterable/column.ts +246 -0
  623. package/src/components/zd-iterable/conditions-manager.ts +146 -0
  624. package/src/components/zd-iterable/interfaces.ts +117 -0
  625. package/src/components/zd-iterable/iterable-columns-button-controller.ts +17 -0
  626. package/src/components/zd-iterable/iterable-columns-button.ts +76 -0
  627. package/src/components/zd-iterable/iterable-controller.ts +27 -0
  628. package/src/components/zd-iterable/iterable-page-component.ts +53 -0
  629. package/src/components/zd-iterable/iterable-page-info.ts +7 -0
  630. package/src/components/zd-iterable/iterable-page-size.ts +112 -0
  631. package/src/components/zd-iterable/iterable-pagination.ts +41 -0
  632. package/src/components/zd-iterable/iterable.ts +245 -0
  633. package/src/components/zd-iterable/search.ts +86 -0
  634. package/src/components/zd-iterable-component-render/interfaces.ts +36 -0
  635. package/src/components/zd-iterable-component-render/iterable-component-render.ts +169 -0
  636. package/src/components/zd-layout/interfaces.ts +8 -0
  637. package/src/components/zd-layout/layout.ts +20 -0
  638. package/src/components/zd-list/interfaces.ts +47 -0
  639. package/src/components/zd-list/item-not-found.ts +8 -0
  640. package/src/components/zd-list/list-group.ts +52 -0
  641. package/src/components/zd-list/list-item.ts +71 -0
  642. package/src/components/zd-list/list.ts +125 -0
  643. package/src/components/zd-loading/interfaces.ts +9 -0
  644. package/src/components/zd-loading/loading.ts +44 -0
  645. package/src/components/zd-login/interfaces.ts +28 -0
  646. package/src/components/zd-login/login-button.ts +112 -0
  647. package/src/components/zd-login/login.ts +85 -0
  648. package/src/components/zd-main/interfaces.ts +6 -0
  649. package/src/components/zd-main/main.ts +16 -0
  650. package/src/components/zd-master-detail/detail-not-found.ts +11 -0
  651. package/src/components/zd-master-detail/interfaces.ts +11 -0
  652. package/src/components/zd-master-detail/master-detail.ts +82 -0
  653. package/src/components/zd-master-detail/master-not-found.ts +11 -0
  654. package/src/components/zd-menu/interfaces.ts +76 -0
  655. package/src/components/zd-menu/menu-button.ts +52 -0
  656. package/src/components/zd-menu/menu-group.ts +105 -0
  657. package/src/components/zd-menu/menu-link.ts +84 -0
  658. package/src/components/zd-menu/menu-separator.ts +7 -0
  659. package/src/components/zd-menu/menu.ts +433 -0
  660. package/src/components/zd-modal/interfaces.ts +39 -0
  661. package/src/components/zd-modal/modal-close-button.ts +45 -0
  662. package/src/components/zd-modal/modal.ts +90 -0
  663. package/src/components/zd-month/interfaces.ts +7 -0
  664. package/src/components/zd-month/month.ts +161 -0
  665. package/src/components/zd-number-input/interfaces.ts +10 -0
  666. package/src/components/zd-number-input/number-input.ts +149 -0
  667. package/src/components/zd-password/interfaces.ts +7 -0
  668. package/src/components/zd-password/password.ts +45 -0
  669. package/src/components/zd-progress/interfaces.ts +11 -0
  670. package/src/components/zd-progress/progress.ts +59 -0
  671. package/src/components/zd-radio/interfaces.ts +13 -0
  672. package/src/components/zd-radio/radio.ts +68 -0
  673. package/src/components/zd-row/interfaces.ts +15 -0
  674. package/src/components/zd-row/row.ts +57 -0
  675. package/src/components/zd-select/interfaces.ts +25 -0
  676. package/src/components/zd-select/select.ts +668 -0
  677. package/src/components/zd-select-multiple/interfaces.ts +21 -0
  678. package/src/components/zd-select-multiple/select-multiple.ts +488 -0
  679. package/src/components/zd-svg-map/interfaces.ts +30 -0
  680. package/src/components/zd-svg-map/svg-map.ts +130 -0
  681. package/src/components/zd-switch/interfaces.ts +9 -0
  682. package/src/components/zd-switch/switch.ts +26 -0
  683. package/src/components/zd-table/interfaces.ts +29 -0
  684. package/src/components/zd-table/table.ts +65 -0
  685. package/src/components/zd-tabs/interfaces.ts +49 -0
  686. package/src/components/zd-tabs/tab-not-found.ts +14 -0
  687. package/src/components/zd-tabs/tab.ts +95 -0
  688. package/src/components/zd-tabs/tabs.ts +167 -0
  689. package/src/components/zd-tag/interfaces.ts +9 -0
  690. package/src/components/zd-tag/tag.ts +19 -0
  691. package/src/components/zd-text/interfaces.ts +11 -0
  692. package/src/components/zd-text/text.ts +17 -0
  693. package/src/components/zd-text-input/interfaces.ts +25 -0
  694. package/src/components/zd-text-input/text-input.ts +228 -0
  695. package/src/components/zd-textarea/interfaces.ts +23 -0
  696. package/src/components/zd-textarea/textarea.ts +111 -0
  697. package/src/components/zd-time/interfaces.ts +24 -0
  698. package/src/components/zd-time/time-format-selector.ts +24 -0
  699. package/src/components/zd-time/time.ts +506 -0
  700. package/src/components/zd-toggleable/interfaces.ts +8 -0
  701. package/src/components/zd-toggleable/toggleable.ts +37 -0
  702. package/src/components/zd-tooltip/interfaces.ts +20 -0
  703. package/src/components/zd-tooltip/tooltip.ts +85 -0
  704. package/src/components/zd-tree/interfaces.ts +111 -0
  705. package/src/components/zd-tree/tree.ts +588 -0
  706. package/src/components/zd-tree-grid/index.ts +6 -0
  707. package/src/components/zd-tree-grid/interfaces.ts +39 -0
  708. package/src/components/zd-tree-grid/iterable-tree.ts +39 -0
  709. package/src/components/zd-tree-grid/keymap-tree.ts +23 -0
  710. package/src/components/zd-tree-grid/tree-data-navigator.ts +50 -0
  711. package/src/components/zd-tree-grid/tree-data-selector.ts +121 -0
  712. package/src/components/zd-tree-grid/tree-grid.ts +435 -0
  713. package/src/error/delete-rows.ts +13 -0
  714. package/src/error/index.ts +2 -0
  715. package/src/error/non-initialized.ts +11 -0
  716. package/src/error/tek-grid-delete-rows.ts +15 -0
  717. package/src/error/teknisa-common-error.ts +8 -0
  718. package/src/error/zeedhi-error.ts +8 -0
  719. package/src/index.ts +26 -0
  720. package/src/services/index.ts +4 -0
  721. package/src/services/zd-alert/alert-queue.ts +40 -0
  722. package/src/services/zd-alert/alert-replace.ts +45 -0
  723. package/src/services/zd-alert/alert-service.ts +77 -0
  724. package/src/services/zd-alert/alert-stack.ts +29 -0
  725. package/src/services/zd-alert/index.ts +5 -0
  726. package/src/services/zd-alert/interfaces.ts +7 -0
  727. package/src/services/zd-dialog/dialog-service.ts +40 -0
  728. package/src/services/zd-loading/loading-service.ts +24 -0
  729. package/src/services/zd-modal/modal-service.ts +71 -0
  730. package/src/styles/_display.scss +38 -0
  731. package/src/styles/_elevation.scss +129 -0
  732. package/src/styles/_functions.scss +57 -0
  733. package/src/styles/_text.scss +46 -0
  734. package/src/styles/_utilities.scss +515 -0
  735. package/src/styles/_variables.scss +70 -0
  736. package/src/styles/index.scss +5 -0
  737. package/src/utils/config/config.ts +8 -0
  738. package/src/utils/data-value-out/data-value-out.ts +39 -0
  739. package/src/utils/data-value-out/index.ts +2 -0
  740. package/src/utils/data-value-out/interfaces.ts +9 -0
  741. package/src/utils/datasource-searcher/datasource-searcher.ts +52 -0
  742. package/src/utils/datasource-searcher/index.ts +2 -0
  743. package/src/utils/datasource-searcher/interfaces.ts +12 -0
  744. package/src/utils/icons/icons.ts +154 -0
  745. package/src/utils/index.ts +10 -0
  746. package/src/utils/is-filled-object/is-filled-object.ts +5 -0
  747. package/src/utils/is-nil.ts +3 -0
  748. package/src/utils/omit/omit.ts +13 -0
  749. package/src/utils/theme/theme.ts +198 -0
  750. package/src/utils/tree-data-structure/index.ts +2 -0
  751. package/src/utils/tree-data-structure/interfaces.ts +32 -0
  752. package/src/utils/tree-data-structure/tree-data-structure.ts +520 -0
  753. package/src/utils/unique-by/unique-by.ts +15 -0
  754. package/tests/unit/__helpers__/component-event-helper.ts +9 -0
  755. package/tests/unit/__helpers__/create-component.ts +8 -0
  756. package/tests/unit/__helpers__/find-component.ts +18 -0
  757. package/tests/unit/__helpers__/flush-promises-helper.ts +3 -0
  758. package/tests/unit/__helpers__/get-child-helper.ts +27 -0
  759. package/tests/unit/__helpers__/index.ts +10 -0
  760. package/tests/unit/__helpers__/mock-http-get-helper.spec.ts +55 -0
  761. package/tests/unit/__helpers__/mock-http-get-helper.ts +29 -0
  762. package/tests/unit/__helpers__/mock-i18n.ts +13 -0
  763. package/tests/unit/__helpers__/mock-loader-get-instance.ts +6 -0
  764. package/tests/unit/__helpers__/mock-loader-value-accessor.ts +7 -0
  765. package/tests/unit/__helpers__/spy-on-all-methods.ts +46 -0
  766. package/tests/unit/components/tek-grid/button-option.spec.ts +49 -0
  767. package/tests/unit/components/tek-grid/columns-searcher.spec.ts +112 -0
  768. package/tests/unit/components/tek-grid/dynamic-filter-datasource-factory.spec.ts +90 -0
  769. package/tests/unit/components/tek-grid/filter-helper.spec.ts +52 -0
  770. package/tests/unit/components/tek-grid/grid-filter-button.spec.ts +842 -0
  771. package/tests/unit/components/tek-grid/grouped-data-manager.spec.ts +593 -0
  772. package/tests/unit/components/tek-grid/grouped-data-selector.spec.ts +136 -0
  773. package/tests/unit/components/tek-grid/grouped-view-navigator.spec.ts +244 -0
  774. package/tests/unit/components/tek-grid/keymap-grouped.spec.ts +20 -0
  775. package/tests/unit/components/tek-grid/layout-options.spec.ts +1020 -0
  776. package/tests/unit/components/tek-grid/multi-option.spec.ts +139 -0
  777. package/tests/unit/components/tek-grid/tek-grid-column.spec.ts +312 -0
  778. package/tests/unit/components/tek-grid/tek-grid-columns-button.spec.ts +228 -0
  779. package/tests/unit/components/tek-grid/tek-grid-controller.spec.ts +253 -0
  780. package/tests/unit/components/tek-grid/tek-grid-events.spec.ts +186 -0
  781. package/tests/unit/components/tek-grid/tek-grid-toolbar-provider.spec.ts +34 -0
  782. package/tests/unit/components/tek-grid/tek-grid.spec.ts +895 -0
  783. package/tests/unit/components/tek-grid/tek-memory-datasource.spec.ts +482 -0
  784. package/tests/unit/components/tek-grid/tek-rest-datasource.spec.ts +422 -0
  785. package/tests/unit/components/zd-alert/alert.spec.ts +62 -0
  786. package/tests/unit/components/zd-badge/badge.spec.ts +36 -0
  787. package/tests/unit/components/zd-breadcrumbs/breadcrumbs.spec.ts +39 -0
  788. package/tests/unit/components/zd-button/button.spec.ts +79 -0
  789. package/tests/unit/components/zd-button-group/button-group.spec.ts +95 -0
  790. package/tests/unit/components/zd-card/card.spec.ts +82 -0
  791. package/tests/unit/components/zd-carousel/carousel.spec.ts +304 -0
  792. package/tests/unit/components/zd-checkbox/checkbox.spec.ts +26 -0
  793. package/tests/unit/components/zd-checkbox-multiple/checkbox-multiple.spec.ts +107 -0
  794. package/tests/unit/components/zd-chip/chip.spec.ts +53 -0
  795. package/tests/unit/components/zd-code-viewer/code-viewer.spec.ts +247 -0
  796. package/tests/unit/components/zd-col/col.spec.ts +46 -0
  797. package/tests/unit/components/zd-collapse-card/collapse-card.spec.ts +84 -0
  798. package/tests/unit/components/zd-component/ComponentMock.ts +27 -0
  799. package/tests/unit/components/zd-component/child-not-found.spec.ts +10 -0
  800. package/tests/unit/components/zd-component/component-render.spec.ts +10 -0
  801. package/tests/unit/components/zd-component/component.spec.ts +554 -0
  802. package/tests/unit/components/zd-container/container.spec.ts +43 -0
  803. package/tests/unit/components/zd-currency/currency.spec.ts +110 -0
  804. package/tests/unit/components/zd-date-input/date-input.spec.ts +1111 -0
  805. package/tests/unit/components/zd-dialog/dialog.spec.ts +145 -0
  806. package/tests/unit/components/zd-divider/divider.spec.ts +31 -0
  807. package/tests/unit/components/zd-dropdown/dropdown.spec.ts +68 -0
  808. package/tests/unit/components/zd-footer/footer.spec.ts +69 -0
  809. package/tests/unit/components/zd-form/form.spec.ts +251 -0
  810. package/tests/unit/components/zd-frame/frame.spec.ts +381 -0
  811. package/tests/unit/components/zd-frame-page/frame-page.spec.ts +58 -0
  812. package/tests/unit/components/zd-grid/grid-column.spec.ts +251 -0
  813. package/tests/unit/components/zd-grid/grid.spec.ts +1638 -0
  814. package/tests/unit/components/zd-grid-editable/data-editor-with-add.spec.ts +118 -0
  815. package/tests/unit/components/zd-grid-editable/data-editor.spec.ts +621 -0
  816. package/tests/unit/components/zd-grid-editable/grid-editable-controller.spec.ts +53 -0
  817. package/tests/unit/components/zd-grid-editable/grid-editable.spec.ts +2733 -0
  818. package/tests/unit/components/zd-header/header.spec.ts +67 -0
  819. package/tests/unit/components/zd-icon/icon.spec.ts +55 -0
  820. package/tests/unit/components/zd-image/image.spec.ts +63 -0
  821. package/tests/unit/components/zd-increment/increment.spec.ts +75 -0
  822. package/tests/unit/components/zd-input/input-factory.spec.ts +19 -0
  823. package/tests/unit/components/zd-input/input.spec.ts +340 -0
  824. package/tests/unit/components/zd-iterable/column-not-found.spec.ts +10 -0
  825. package/tests/unit/components/zd-iterable/column.spec.ts +301 -0
  826. package/tests/unit/components/zd-iterable/conditions-manager.spec.ts +123 -0
  827. package/tests/unit/components/zd-iterable/iterable-columns-button-controller.spec.ts +54 -0
  828. package/tests/unit/components/zd-iterable/iterable-columns-button.spec.ts +134 -0
  829. package/tests/unit/components/zd-iterable/iterable-page-component.spec.ts +92 -0
  830. package/tests/unit/components/zd-iterable/iterable-page-info.spec.ts +19 -0
  831. package/tests/unit/components/zd-iterable/iterable-page-size.spec.ts +123 -0
  832. package/tests/unit/components/zd-iterable/iterable-pagination.spec.ts +42 -0
  833. package/tests/unit/components/zd-iterable/search.spec.ts +168 -0
  834. package/tests/unit/components/zd-iterable-component-render/iterable-component-render.spec.ts +216 -0
  835. package/tests/unit/components/zd-layout/layout.spec.ts +28 -0
  836. package/tests/unit/components/zd-list/list-group.spec.ts +96 -0
  837. package/tests/unit/components/zd-list/list-item.spec.ts +51 -0
  838. package/tests/unit/components/zd-list/list.spec.ts +107 -0
  839. package/tests/unit/components/zd-loading/loading.spec.ts +72 -0
  840. package/tests/unit/components/zd-login/login-button.spec.ts +305 -0
  841. package/tests/unit/components/zd-login/login.spec.ts +52 -0
  842. package/tests/unit/components/zd-main/main.spec.ts +22 -0
  843. package/tests/unit/components/zd-master-detail/detail-not-found.spec.ts +11 -0
  844. package/tests/unit/components/zd-master-detail/master-detail.spec.ts +213 -0
  845. package/tests/unit/components/zd-master-detail/master-not-found.spec.ts +10 -0
  846. package/tests/unit/components/zd-menu/menu-button.spec.ts +85 -0
  847. package/tests/unit/components/zd-menu/menu-group.spec.ts +130 -0
  848. package/tests/unit/components/zd-menu/menu-link.spec.ts +120 -0
  849. package/tests/unit/components/zd-menu/menu-separator.spec.ts +14 -0
  850. package/tests/unit/components/zd-menu/menu.spec.ts +286 -0
  851. package/tests/unit/components/zd-modal/modal.spec.ts +169 -0
  852. package/tests/unit/components/zd-month/month.spec.ts +450 -0
  853. package/tests/unit/components/zd-number/number.spec.ts +276 -0
  854. package/tests/unit/components/zd-password/password.spec.ts +76 -0
  855. package/tests/unit/components/zd-progress/progress.spec.ts +43 -0
  856. package/tests/unit/components/zd-radio/radio.spec.ts +75 -0
  857. package/tests/unit/components/zd-row/row.spec.ts +40 -0
  858. package/tests/unit/components/zd-select/select.spec.ts +1316 -0
  859. package/tests/unit/components/zd-select-multiple/select-multiple.spec.ts +1994 -0
  860. package/tests/unit/components/zd-svg-map/svg-map.spec.ts +212 -0
  861. package/tests/unit/components/zd-switch/switch.spec.ts +28 -0
  862. package/tests/unit/components/zd-table/table.spec.ts +53 -0
  863. package/tests/unit/components/zd-tabs/tab-not-found.spec.ts +10 -0
  864. package/tests/unit/components/zd-tabs/tab.spec.ts +21 -0
  865. package/tests/unit/components/zd-tabs/tabs.spec.ts +171 -0
  866. package/tests/unit/components/zd-tag/tag.spec.ts +10 -0
  867. package/tests/unit/components/zd-text/text.spec.ts +24 -0
  868. package/tests/unit/components/zd-text-input/text-input.spec.ts +362 -0
  869. package/tests/unit/components/zd-textarea/textarea.spec.ts +86 -0
  870. package/tests/unit/components/zd-time/time.spec.ts +1036 -0
  871. package/tests/unit/components/zd-toggleable/toggleable.spec.ts +46 -0
  872. package/tests/unit/components/zd-tooltip/tooltip.spec.ts +51 -0
  873. package/tests/unit/components/zd-tree/tree.spec.ts +905 -0
  874. package/tests/unit/components/zd-tree-grid/tree-grid.spec.ts +893 -0
  875. package/tests/unit/services/alert-queue.spec.ts +44 -0
  876. package/tests/unit/services/alert-replace.spec.ts +19 -0
  877. package/tests/unit/services/alert-service.spec.ts +65 -0
  878. package/tests/unit/services/alert-stack.spec.ts +45 -0
  879. package/tests/unit/utils/data-value-out.spec.ts +105 -0
  880. package/tests/unit/utils/datasource-searcher.spec.ts +61 -0
  881. package/tests/unit/utils/icons.spec.ts +258 -0
  882. package/tests/unit/utils/is-filled-object.spec.ts +33 -0
  883. package/tests/unit/utils/theme.spec.ts +197 -0
  884. package/tests/unit/utils/tree-data-structure.spec.ts +404 -0
  885. package/tests/unit/utils/unique-by.spec.ts +56 -0
  886. package/tsconfig.build.json +7 -0
  887. package/tsconfig.json +3 -0
  888. package/LICENSE +0 -24
  889. package/README.md +0 -9
  890. package/dist/zd-common.esm.js +0 -16042
  891. package/dist/zd-common.umd.js +0 -16164
  892. package/tsconfig.eslint.json +0 -9
  893. package/types/components/index.d.ts +0 -161
  894. package/types/components/zd-alert/alert.d.ts +0 -101
  895. package/types/components/zd-alert/interfaces.d.ts +0 -18
  896. package/types/components/zd-apex-chart/apex-chart.d.ts +0 -257
  897. package/types/components/zd-apex-chart/interfaces.d.ts +0 -51
  898. package/types/components/zd-badge/badge.d.ts +0 -28
  899. package/types/components/zd-badge/interfaces.d.ts +0 -10
  900. package/types/components/zd-breadcrumbs/breadcrumbs.d.ts +0 -32
  901. package/types/components/zd-breadcrumbs/interfaces.d.ts +0 -23
  902. package/types/components/zd-button/button.d.ts +0 -122
  903. package/types/components/zd-button/interfaces.d.ts +0 -33
  904. package/types/components/zd-button-group/button-group.d.ts +0 -75
  905. package/types/components/zd-button-group/interfaces.d.ts +0 -24
  906. package/types/components/zd-card/card.d.ts +0 -110
  907. package/types/components/zd-card/interfaces.d.ts +0 -30
  908. package/types/components/zd-carousel/carousel.d.ts +0 -181
  909. package/types/components/zd-carousel/interfaces.d.ts +0 -45
  910. package/types/components/zd-checkbox/checkbox.d.ts +0 -12
  911. package/types/components/zd-checkbox/interfaces.d.ts +0 -6
  912. package/types/components/zd-checkbox-multiple/checkbox-multiple.d.ts +0 -42
  913. package/types/components/zd-checkbox-multiple/interfaces.d.ts +0 -13
  914. package/types/components/zd-chip/chip.d.ts +0 -64
  915. package/types/components/zd-chip/interfaces.d.ts +0 -19
  916. package/types/components/zd-code-editor/code-editor.d.ts +0 -90
  917. package/types/components/zd-code-editor/interfaces.d.ts +0 -14
  918. package/types/components/zd-col/col.d.ts +0 -37
  919. package/types/components/zd-col/interfaces.d.ts +0 -16
  920. package/types/components/zd-collapse-card/collapse-card.d.ts +0 -56
  921. package/types/components/zd-collapse-card/interfaces.d.ts +0 -14
  922. package/types/components/zd-component/child-not-found.d.ts +0 -6
  923. package/types/components/zd-component/component-render.d.ts +0 -16
  924. package/types/components/zd-component/component.d.ts +0 -178
  925. package/types/components/zd-component/interfaces.d.ts +0 -46
  926. package/types/components/zd-container/container.d.ts +0 -51
  927. package/types/components/zd-container/interfaces.d.ts +0 -12
  928. package/types/components/zd-currency/currency.d.ts +0 -12
  929. package/types/components/zd-currency/interfaces.d.ts +0 -6
  930. package/types/components/zd-dashboard/dashboard.d.ts +0 -122
  931. package/types/components/zd-dashboard/interfaces.d.ts +0 -37
  932. package/types/components/zd-date/date-range.d.ts +0 -152
  933. package/types/components/zd-date/date.d.ts +0 -155
  934. package/types/components/zd-date/interfaces.d.ts +0 -31
  935. package/types/components/zd-dialog/dialog.d.ts +0 -76
  936. package/types/components/zd-dialog/interfaces.d.ts +0 -13
  937. package/types/components/zd-divider/divider.d.ts +0 -20
  938. package/types/components/zd-divider/interfaces.d.ts +0 -8
  939. package/types/components/zd-dropdown/dropdown.d.ts +0 -85
  940. package/types/components/zd-dropdown/interfaces.d.ts +0 -24
  941. package/types/components/zd-file-input/file-input.d.ts +0 -101
  942. package/types/components/zd-file-input/interfaces.d.ts +0 -20
  943. package/types/components/zd-footer/footer.d.ts +0 -81
  944. package/types/components/zd-footer/interfaces.d.ts +0 -26
  945. package/types/components/zd-form/form.d.ts +0 -153
  946. package/types/components/zd-form/interfaces.d.ts +0 -34
  947. package/types/components/zd-frame/frame.d.ts +0 -90
  948. package/types/components/zd-frame/interfaces.d.ts +0 -25
  949. package/types/components/zd-frame-page/frame-page.d.ts +0 -14
  950. package/types/components/zd-frame-page/interfaces.d.ts +0 -4
  951. package/types/components/zd-grid/errors/delete-rows.d.ts +0 -6
  952. package/types/components/zd-grid/errors/not-editing.d.ts +0 -6
  953. package/types/components/zd-grid/errors/row-not-found.d.ts +0 -6
  954. package/types/components/zd-grid/grid-column-editable.d.ts +0 -13
  955. package/types/components/zd-grid/grid-column.d.ts +0 -46
  956. package/types/components/zd-grid/grid-editable-controller.d.ts +0 -8
  957. package/types/components/zd-grid/grid-editable.d.ts +0 -272
  958. package/types/components/zd-grid/grid.d.ts +0 -260
  959. package/types/components/zd-grid/interfaces.d.ts +0 -75
  960. package/types/components/zd-header/header.d.ts +0 -93
  961. package/types/components/zd-header/interfaces.d.ts +0 -31
  962. package/types/components/zd-icon/icon.d.ts +0 -55
  963. package/types/components/zd-icon/interfaces.d.ts +0 -13
  964. package/types/components/zd-image/image.d.ts +0 -85
  965. package/types/components/zd-image/interfaces.d.ts +0 -22
  966. package/types/components/zd-increment/increment.d.ts +0 -53
  967. package/types/components/zd-increment/interfaces.d.ts +0 -9
  968. package/types/components/zd-input/input-factory.d.ts +0 -6
  969. package/types/components/zd-input/input.d.ts +0 -223
  970. package/types/components/zd-input/interfaces.d.ts +0 -39
  971. package/types/components/zd-iterable/column-not-found.d.ts +0 -6
  972. package/types/components/zd-iterable/column.d.ts +0 -97
  973. package/types/components/zd-iterable/interfaces.d.ts +0 -72
  974. package/types/components/zd-iterable/iterable-columns-button-controller.d.ts +0 -9
  975. package/types/components/zd-iterable/iterable-columns-button.d.ts +0 -34
  976. package/types/components/zd-iterable/iterable-controller.d.ts +0 -12
  977. package/types/components/zd-iterable/iterable-page-component.d.ts +0 -27
  978. package/types/components/zd-iterable/iterable-page-info.d.ts +0 -7
  979. package/types/components/zd-iterable/iterable-page-size.d.ts +0 -62
  980. package/types/components/zd-iterable/iterable-pagination.d.ts +0 -28
  981. package/types/components/zd-iterable/iterable.d.ts +0 -102
  982. package/types/components/zd-iterable/search.d.ts +0 -25
  983. package/types/components/zd-iterable-component-render/interfaces.d.ts +0 -19
  984. package/types/components/zd-iterable-component-render/iterable-component-render.d.ts +0 -83
  985. package/types/components/zd-list/interfaces.d.ts +0 -45
  986. package/types/components/zd-list/item-not-found.d.ts +0 -6
  987. package/types/components/zd-list/list-group.d.ts +0 -30
  988. package/types/components/zd-list/list-item.d.ts +0 -49
  989. package/types/components/zd-list/list.d.ts +0 -85
  990. package/types/components/zd-loading/interfaces.d.ts +0 -6
  991. package/types/components/zd-loading/loading.d.ts +0 -20
  992. package/types/components/zd-login/interfaces.d.ts +0 -25
  993. package/types/components/zd-login/login-button.d.ts +0 -50
  994. package/types/components/zd-login/login.d.ts +0 -54
  995. package/types/components/zd-master-detail/detail-not-found.d.ts +0 -6
  996. package/types/components/zd-master-detail/interfaces.d.ts +0 -10
  997. package/types/components/zd-master-detail/master-detail.d.ts +0 -43
  998. package/types/components/zd-master-detail/master-not-found.d.ts +0 -6
  999. package/types/components/zd-menu/interfaces.d.ts +0 -68
  1000. package/types/components/zd-menu/menu-button.d.ts +0 -28
  1001. package/types/components/zd-menu/menu-group.d.ts +0 -61
  1002. package/types/components/zd-menu/menu-link.d.ts +0 -50
  1003. package/types/components/zd-menu/menu-separator.d.ts +0 -7
  1004. package/types/components/zd-menu/menu.d.ts +0 -198
  1005. package/types/components/zd-modal/interfaces.d.ts +0 -37
  1006. package/types/components/zd-modal/modal-close-button.d.ts +0 -28
  1007. package/types/components/zd-modal/modal.d.ts +0 -61
  1008. package/types/components/zd-month/interfaces.d.ts +0 -6
  1009. package/types/components/zd-month/month.d.ts +0 -31
  1010. package/types/components/zd-number/interfaces.d.ts +0 -8
  1011. package/types/components/zd-number/number.d.ts +0 -60
  1012. package/types/components/zd-password/interfaces.d.ts +0 -6
  1013. package/types/components/zd-password/password.d.ts +0 -21
  1014. package/types/components/zd-progress/interfaces.d.ts +0 -12
  1015. package/types/components/zd-progress/progress.d.ts +0 -41
  1016. package/types/components/zd-radio/interfaces.d.ts +0 -11
  1017. package/types/components/zd-radio/radio.d.ts +0 -34
  1018. package/types/components/zd-range-slider/interfaces.d.ts +0 -34
  1019. package/types/components/zd-range-slider/range-slider.d.ts +0 -69
  1020. package/types/components/zd-row/interfaces.d.ts +0 -14
  1021. package/types/components/zd-row/row.d.ts +0 -43
  1022. package/types/components/zd-select/interfaces.d.ts +0 -29
  1023. package/types/components/zd-select/select.d.ts +0 -248
  1024. package/types/components/zd-select-multiple/interfaces.d.ts +0 -19
  1025. package/types/components/zd-select-multiple/select-multiple.d.ts +0 -116
  1026. package/types/components/zd-select-tree/interfaces.d.ts +0 -55
  1027. package/types/components/zd-select-tree/select-tree.d.ts +0 -181
  1028. package/types/components/zd-select-tree-multiple/interfaces.d.ts +0 -29
  1029. package/types/components/zd-select-tree-multiple/select-tree-multiple.d.ts +0 -87
  1030. package/types/components/zd-selectable-list/interfaces.d.ts +0 -15
  1031. package/types/components/zd-selectable-list/selectable-list.d.ts +0 -63
  1032. package/types/components/zd-speed-dial/interfaces.d.ts +0 -13
  1033. package/types/components/zd-speed-dial/speed-dial.d.ts +0 -47
  1034. package/types/components/zd-steppers/interfaces.d.ts +0 -23
  1035. package/types/components/zd-steppers/steppers.d.ts +0 -40
  1036. package/types/components/zd-svg-map/interfaces.d.ts +0 -26
  1037. package/types/components/zd-svg-map/svg-map.d.ts +0 -91
  1038. package/types/components/zd-switch/interfaces.d.ts +0 -7
  1039. package/types/components/zd-switch/switch.d.ts +0 -16
  1040. package/types/components/zd-table/interfaces.d.ts +0 -18
  1041. package/types/components/zd-table/table.d.ts +0 -43
  1042. package/types/components/zd-tabs/interfaces.d.ts +0 -26
  1043. package/types/components/zd-tabs/tab-not-found.d.ts +0 -11
  1044. package/types/components/zd-tabs/tab.d.ts +0 -15
  1045. package/types/components/zd-tabs/tabs.d.ts +0 -66
  1046. package/types/components/zd-tag/interfaces.d.ts +0 -7
  1047. package/types/components/zd-tag/tag.d.ts +0 -13
  1048. package/types/components/zd-text/interfaces.d.ts +0 -15
  1049. package/types/components/zd-text/text.d.ts +0 -16
  1050. package/types/components/zd-text-input/interfaces.d.ts +0 -23
  1051. package/types/components/zd-text-input/text-input.d.ts +0 -97
  1052. package/types/components/zd-textarea/interfaces.d.ts +0 -22
  1053. package/types/components/zd-textarea/textarea.d.ts +0 -75
  1054. package/types/components/zd-time/interfaces.d.ts +0 -23
  1055. package/types/components/zd-time/time-format-selector.d.ts +0 -8
  1056. package/types/components/zd-time/time.d.ts +0 -147
  1057. package/types/components/zd-toggleable/interfaces.d.ts +0 -6
  1058. package/types/components/zd-toggleable/toggleable.d.ts +0 -21
  1059. package/types/components/zd-tooltip/interfaces.d.ts +0 -19
  1060. package/types/components/zd-tooltip/tooltip.d.ts +0 -61
  1061. package/types/components/zd-tree/interfaces.d.ts +0 -78
  1062. package/types/components/zd-tree/tree.d.ts +0 -159
  1063. package/types/components/zd-tree-grid/interfaces.d.ts +0 -21
  1064. package/types/components/zd-tree-grid/tree-grid-editable.d.ts +0 -205
  1065. package/types/components/zd-tree-grid/tree-grid.d.ts +0 -111
  1066. package/types/formatters/column-zdselect.d.ts +0 -1
  1067. package/types/formatters/column-zdselectmultiple.d.ts +0 -1
  1068. package/types/formatters/index.d.ts +0 -2
  1069. package/types/index.d.ts +0 -6
  1070. package/types/services/index.d.ts +0 -4
  1071. package/types/services/zd-alert/alert-queue.d.ts +0 -13
  1072. package/types/services/zd-alert/alert-replace.d.ts +0 -5
  1073. package/types/services/zd-alert/alert-service.d.ts +0 -34
  1074. package/types/services/zd-alert/alert-stack.d.ts +0 -9
  1075. package/types/services/zd-alert/interfaces.d.ts +0 -6
  1076. package/types/services/zd-dialog/dialog-service.d.ts +0 -24
  1077. package/types/services/zd-json-cache/json-cache-service.d.ts +0 -12
  1078. package/types/services/zd-loading/loading-service.d.ts +0 -23
  1079. package/types/services/zd-modal/modal-service.d.ts +0 -39
  1080. package/types/utils/data-value-out/data-value-out.d.ts +0 -5
  1081. package/types/utils/data-value-out/index.d.ts +0 -2
  1082. package/types/utils/data-value-out/interfaces.d.ts +0 -8
  1083. package/types/utils/icons/icons.d.ts +0 -24
  1084. package/types/utils/index.d.ts +0 -6
  1085. package/types/utils/report/dataset-formatters/grouped-pdf-formatter.d.ts +0 -47
  1086. package/types/utils/report/dataset-formatters/index.d.ts +0 -1
  1087. package/types/utils/report/errors/empty-data-error.d.ts +0 -6
  1088. package/types/utils/report/index.d.ts +0 -10
  1089. package/types/utils/report/interfaces.d.ts +0 -15
  1090. package/types/utils/report/report-type/base-report.d.ts +0 -17
  1091. package/types/utils/report/report-type/csv-report.d.ts +0 -9
  1092. package/types/utils/report/report-type/index.d.ts +0 -5
  1093. package/types/utils/report/report-type/interfaces.d.ts +0 -79
  1094. package/types/utils/report/report-type/pdf-report.d.ts +0 -16
  1095. package/types/utils/report/report-type/report-column-transformer.d.ts +0 -9
  1096. package/types/utils/report/report-type/xls-report.d.ts +0 -10
  1097. package/types/utils/report/report-type/xls2-report.d.ts +0 -17
  1098. package/types/utils/report/report-type/xls3-report.d.ts +0 -17
  1099. package/types/utils/report/report.d.ts +0 -18
  1100. package/types/utils/themes/themes.d.ts +0 -71
  1101. package/types/utils/tree-data-structure/index.d.ts +0 -2
  1102. package/types/utils/tree-data-structure/interfaces.d.ts +0 -9
  1103. package/types/utils/tree-data-structure/tree-data-structure.d.ts +0 -152
  1104. package/types/utils/watch-url/watch-url.d.ts +0 -59
@@ -0,0 +1,2733 @@
1
+ import {
2
+ IDictionary, Http, Metadata, FormatterParserProvider, KeyMap, Datasource,
3
+ Loader,
4
+ SimpleControllerBuilder,
5
+ } from '@zeedhi/core';
6
+ import {
7
+ GridEditable, GridColumnEditable, IComponent, TextInput, Select,
8
+ Column,
9
+ IGridEditableProps,
10
+ DataEditorWithAdd,
11
+ TableActionBuilder,
12
+ IterableTable,
13
+ DataSelector,
14
+ GridEditableEvents,
15
+ DataNavigator,
16
+ ViewNavigator,
17
+ } from '../../../../src';
18
+ import { mockLoaderValueAccessor } from '../../__helpers__/mock-loader-value-accessor';
19
+ import { flushPromises } from '../../__helpers__/flush-promises-helper';
20
+ import { mockI18n } from '../../__helpers__/mock-i18n';
21
+ import { spyOnAllMethods } from '../../__helpers__/spy-on-all-methods';
22
+
23
+ mockI18n();
24
+
25
+ const setupInstance = (props: Partial<IGridEditableProps> = {}) => {
26
+ const instance = new GridEditable({
27
+ name: 'GridEditable',
28
+ component: 'ZdGridEditable',
29
+ columns: [
30
+ { name: 'first' },
31
+ { name: 'second' },
32
+ { name: 'third' },
33
+ ],
34
+ datasource: {
35
+ limit: 2,
36
+ page: 1,
37
+ data: [
38
+ { id: 1 },
39
+ { id: 2 },
40
+ { id: 3 },
41
+ { id: 4 },
42
+ { id: 5 },
43
+ { id: 6 },
44
+ { id: 7 },
45
+ ],
46
+ },
47
+ ...props,
48
+ });
49
+ const elem = document.createElement('DIV');
50
+ (KeyMap as any).isElementActive = () => true;
51
+ instance.onCreated();
52
+ instance.onMounted(elem);
53
+
54
+ return instance;
55
+ };
56
+
57
+ describe('Grid Editable', () => {
58
+ beforeAll(() => {
59
+ Loader.setBuilder(new SimpleControllerBuilder());
60
+ });
61
+
62
+ describe('constructor()', () => {
63
+ it('should create a new grid with default values', () => {
64
+ const instance = new GridEditable({
65
+ name: 'grid',
66
+ component: 'ZdGridEditable',
67
+ });
68
+
69
+ expect(instance.name).toBe('grid');
70
+ expect(instance.doubleClickEdit).toBeFalsy();
71
+ });
72
+
73
+ it('should create a new grid with defined values', () => {
74
+ const instance = new GridEditable({
75
+ name: 'grid',
76
+ component: 'ZdGridEditable',
77
+ doubleClickEdit: true,
78
+ backgroundColor: 'blue',
79
+ });
80
+
81
+ expect(instance.name).toBe('grid');
82
+ expect(instance.doubleClickEdit).toBeTruthy();
83
+ expect(instance.backgroundColor).toBe('blue');
84
+ });
85
+ });
86
+
87
+ describe('navigation', () => {
88
+ const dispatchEvent = (key: string, modifiers: any) => {
89
+ const event = new KeyboardEvent('keydown', modifiers);
90
+ delete (event as any).key;
91
+ Object.defineProperty(event, 'key', { value: key });
92
+ delete (event as any).code;
93
+ Object.defineProperty(event, 'code', { value: key });
94
+ document.dispatchEvent(event);
95
+ };
96
+
97
+ it('when not using cellSelection, horizontal navigation should not call viewNavigator', () => {
98
+ const instance = new GridEditable({
99
+ name: 'grid',
100
+ component: 'ZdGridEditable',
101
+ cellSelection: false,
102
+ });
103
+ const elem = document.createElement('DIV');
104
+ (KeyMap as any).isElementActive = () => true;
105
+ instance.onCreated();
106
+ instance.onMounted(elem);
107
+ const fn = jest.fn();
108
+ instance.setViewNavigate(fn);
109
+
110
+ dispatchEvent('arrowright', {});
111
+ expect(fn).not.toHaveBeenCalled();
112
+ dispatchEvent('arrowleft', {});
113
+ expect(fn).not.toHaveBeenCalled();
114
+
115
+
116
+ instance.onBeforeDestroy();
117
+ (KeyMap as any).isElementActive = () => false;
118
+ });
119
+ });
120
+
121
+ describe('changeColumnOrder()', () => {
122
+ it('should do nothing if column is not sortable', () => {
123
+ const instance = setupInstance({
124
+ name: 'Grid',
125
+ component: 'ZdGridEditable',
126
+ columns: [
127
+ { name: 'id', sortable: false },
128
+ ],
129
+ });
130
+ const spy = jest.spyOn(instance.datasource, 'getOrderByColumn');
131
+ instance.changeOrder([{ key: 'id', order: 'asc' }]);
132
+ expect(spy).not.toHaveBeenCalled();
133
+ });
134
+
135
+ it('should do nothing if grid is editing', () => {
136
+ const instance = setupInstance({
137
+ name: 'Grid',
138
+ component: 'ZdGridEditable',
139
+ columns: [
140
+ { name: 'id' },
141
+ ],
142
+ });
143
+ const spy = jest.spyOn(instance.datasource, 'getOrderByColumn');
144
+ instance.editing = true;
145
+ instance.changeOrder([{ key: 'id', order: 'asc' }]);
146
+ expect(spy).not.toHaveBeenCalled();
147
+ });
148
+
149
+ it('should order by id column', () => {
150
+ const instance = setupInstance({
151
+ name: 'Grid',
152
+ component: 'ZdGridEditable',
153
+ columns: [
154
+ { name: 'id' },
155
+ ],
156
+ });
157
+
158
+ const idColumn = instance.columns[0] as GridColumnEditable;
159
+ instance.changeOrder([{ key: 'id', order: 'asc' }]);
160
+ expect(instance.datasource.getOrderByColumn(idColumn.name)).toBe('asc');
161
+ });
162
+ });
163
+
164
+ describe('rowClick', () => {
165
+ it('should call rowClick event', () => {
166
+ let rowClicked = false;
167
+ const instance = setupInstance({
168
+ name: 'Grid',
169
+ component: 'ZdGridEditable',
170
+ datasource: {
171
+ limit: 2,
172
+ page: 1,
173
+ data: [
174
+ { id: 1 },
175
+ { id: 2 },
176
+ ],
177
+ },
178
+ });
179
+ const event = new MouseEvent('click');
180
+ const element = document.createElement('div');
181
+ instance.rowClick({ id: 1 }, event, element);
182
+ expect(instance.datasource.currentRow).toEqual({ id: 1 });
183
+ expect(rowClicked).toBeFalsy();
184
+
185
+ instance.events.rowClick = () => { rowClicked = true; };
186
+
187
+ instance.rowClick({ id: 2 }, event, element);
188
+ expect(instance.datasource.currentRow).toEqual({ id: 2 });
189
+ expect(rowClicked).toBeTruthy();
190
+ });
191
+ });
192
+
193
+ describe('rowDoubleClick', () => {
194
+ it('should call rowDoubleClick event', () => {
195
+ let rowClicked = false;
196
+ const instance = setupInstance({
197
+ name: 'Grid',
198
+ component: 'ZdGridEditable',
199
+ datasource: {
200
+ limit: 2,
201
+ page: 1,
202
+ data: [
203
+ { id: 1 },
204
+ { id: 2 },
205
+ ],
206
+ },
207
+ });
208
+ const event = new MouseEvent('click');
209
+ const element = document.createElement('div');
210
+ instance.rowDoubleClick({ id: 1 }, event, element);
211
+ expect(instance.datasource.currentRow).toEqual({ id: 1 });
212
+ expect(rowClicked).toBeFalsy();
213
+
214
+ instance.events.rowDoubleClick = () => { rowClicked = true; };
215
+
216
+ instance.rowDoubleClick({ id: 2 }, event, element);
217
+ expect(instance.datasource.currentRow).toEqual({ id: 2 });
218
+ expect(rowClicked).toBeTruthy();
219
+ });
220
+ });
221
+
222
+ describe('cellClick', () => {
223
+ it('should call cellClick event', () => {
224
+ let cellClicked = '';
225
+ const instance = setupInstance({
226
+ name: 'Grid',
227
+ component: 'ZdGridEditable',
228
+ columns: [
229
+ { name: 'id' },
230
+ ],
231
+ datasource: {
232
+ limit: 2,
233
+ page: 1,
234
+ data: [
235
+ { id: 1 },
236
+ ],
237
+ },
238
+ events: {
239
+ cellClick: ({ column }: any) => { cellClicked = column.name; },
240
+ },
241
+ });
242
+ const event = new MouseEvent('click');
243
+ const element = document.createElement('div');
244
+ instance.cellClick({ id: 1 }, instance.columns[0] as GridColumnEditable, event, element);
245
+ expect(instance.datasource.currentRow).toEqual({});
246
+ expect(cellClicked).toBe('id');
247
+ });
248
+
249
+ it('should call cellClick event if grid is being edited', () => {
250
+ let cellClicked = '';
251
+ const instance = setupInstance({
252
+ name: 'Grid',
253
+ component: 'ZdGridEditable',
254
+ columns: [
255
+ { name: 'id' },
256
+ ],
257
+ datasource: {
258
+ limit: 2,
259
+ page: 1,
260
+ data: [
261
+ { id: 1 },
262
+ ],
263
+ },
264
+ events: {
265
+ cellClick: ({ column }: any) => { cellClicked = column.name; },
266
+ },
267
+ });
268
+ const event = new MouseEvent('click');
269
+ const element = document.createElement('div');
270
+ instance.editing = true;
271
+ instance.cellClick({ id: 1 }, instance.columns[0] as GridColumnEditable, event, element);
272
+ expect(instance.datasource.currentRow).toEqual({});
273
+ expect(cellClicked).toBe('id');
274
+ });
275
+
276
+ it('should call rowClick after cellClick event', () => {
277
+ let cellClicked = '';
278
+ let rowClicked = false;
279
+ const instance = setupInstance({
280
+ name: 'Grid',
281
+ component: 'ZdGridEditable',
282
+ columns: [
283
+ { name: 'id' },
284
+ ],
285
+ datasource: {
286
+ limit: 2,
287
+ page: 1,
288
+ data: [
289
+ { id: 1 },
290
+ ],
291
+ },
292
+ events: {
293
+ rowClick: () => { rowClicked = true; },
294
+ cellClick: ({ column }: any) => { cellClicked = column.name; },
295
+ },
296
+ });
297
+ const event = new MouseEvent('click');
298
+ const element = document.createElement('div');
299
+ instance.cellClick({ id: 1 }, instance.columns[0] as GridColumnEditable, event, element);
300
+ instance.rowClick({ id: 1 }, event, element);
301
+ expect(instance.datasource.currentRow).toEqual({ id: 1 });
302
+ expect(cellClicked).toBe('id');
303
+ expect(rowClicked).toBeTruthy();
304
+ });
305
+
306
+ it('should not call rowClick if cellClick prevents it', () => {
307
+ let cellClicked = '';
308
+ let rowClicked = false;
309
+ const instance = setupInstance({
310
+ name: 'Grid',
311
+ component: 'ZdGridEditable',
312
+ columns: [
313
+ { name: 'id' },
314
+ ],
315
+ datasource: {
316
+ limit: 2,
317
+ page: 1,
318
+ data: [
319
+ { id: 1 },
320
+ ],
321
+ },
322
+ events: {
323
+ rowClick: () => { rowClicked = true; },
324
+ cellClick: ({ column }: any) => {
325
+ cellClicked = column.name;
326
+ return true;
327
+ },
328
+ },
329
+ });
330
+ const event = new MouseEvent('click');
331
+ const element = document.createElement('div');
332
+ instance.cellClick({ id: 1 }, instance.columns[0] as GridColumnEditable, event, element);
333
+ instance.rowClick({ id: 1 }, event, element);
334
+ expect(instance.datasource.currentRow).toEqual({});
335
+ expect(cellClicked).toBe('id');
336
+ expect(rowClicked).toBeFalsy();
337
+ });
338
+
339
+ it('should put grid in editing mode if column is editable', () => {
340
+ const instance = setupInstance({
341
+ name: 'Grid',
342
+ component: 'ZdGridEditable',
343
+ columns: [
344
+ { name: 'id', editable: true },
345
+ ],
346
+ datasource: {
347
+ limit: 2,
348
+ page: 1,
349
+ data: [
350
+ { id: 1 },
351
+ ],
352
+ },
353
+ });
354
+ const event = new MouseEvent('click');
355
+ const element = document.createElement('div');
356
+ instance.cellClick({ id: 1 }, instance.columns[0] as GridColumnEditable, event, element);
357
+ expect(instance.editing).toBeTruthy();
358
+ });
359
+ });
360
+
361
+ describe('cellDoubleClick', () => {
362
+ it('should call cellDoubleClick event', () => {
363
+ let cellDoubleClicked = '';
364
+ const instance = setupInstance({
365
+ name: 'Grid',
366
+ component: 'ZdGridEditable',
367
+ columns: [
368
+ { name: 'id' },
369
+ ],
370
+ datasource: {
371
+ limit: 2,
372
+ page: 1,
373
+ data: [
374
+ { id: 1 },
375
+ ],
376
+ },
377
+ events: {
378
+ cellDoubleClick: ({ column }: any) => { cellDoubleClicked = column.name; },
379
+ },
380
+ });
381
+ const event = new MouseEvent('dblclick');
382
+ const element = document.createElement('div');
383
+ instance.cellDoubleClick({ id: 1 }, instance.columns[0] as GridColumnEditable, event, element);
384
+ expect(instance.datasource.currentRow).toEqual({});
385
+ expect(cellDoubleClicked).toBe('id');
386
+ });
387
+
388
+ it('should call cellDoubleClick event if grid is being edited', () => {
389
+ let cellDoubleClicked = '';
390
+ const instance = setupInstance({
391
+ name: 'Grid',
392
+ component: 'ZdGridEditable',
393
+ columns: [
394
+ { name: 'id' },
395
+ ],
396
+ datasource: {
397
+ limit: 2,
398
+ page: 1,
399
+ data: [
400
+ { id: 1 },
401
+ ],
402
+ },
403
+ events: {
404
+ cellDoubleClick: ({ column }: any) => { cellDoubleClicked = column.name; },
405
+ },
406
+ });
407
+ const event = new MouseEvent('dblclick');
408
+ const element = document.createElement('div');
409
+ instance.editing = true;
410
+ instance.cellDoubleClick({ id: 1 }, instance.columns[0] as GridColumnEditable, event, element);
411
+ expect(instance.datasource.currentRow).toEqual({});
412
+ expect(cellDoubleClicked).toBe('id');
413
+ });
414
+
415
+ it('should put grid in editing mode if column is editable', () => {
416
+ const instance = setupInstance({
417
+ name: 'Grid',
418
+ component: 'ZdGridEditable',
419
+ columns: [
420
+ { name: 'id', editable: true },
421
+ ],
422
+ datasource: {
423
+ limit: 2,
424
+ page: 1,
425
+ data: [
426
+ { id: 1 },
427
+ ],
428
+ },
429
+ });
430
+ const event = new MouseEvent('dblclick');
431
+ const element = document.createElement('div');
432
+ instance.cellDoubleClick({ id: 1 }, instance.columns[0] as GridColumnEditable, event, element);
433
+ expect(instance.editing).toBeTruthy();
434
+ });
435
+
436
+ it('should call inlineEdit event', () => {
437
+ const inlineEditFn = jest.fn();
438
+ const instance = setupInstance({
439
+ name: 'Grid',
440
+ component: 'ZdGridEditable',
441
+ columns: [
442
+ { name: 'id', editable: true },
443
+ ],
444
+ datasource: {
445
+ limit: 2,
446
+ page: 1,
447
+ data: [
448
+ { id: 1 },
449
+ ],
450
+ },
451
+ events: {
452
+ inlineEdit: inlineEditFn,
453
+ },
454
+ });
455
+ const event = new MouseEvent('dblclick');
456
+ const element = document.createElement('div');
457
+ instance.cellDoubleClick({ id: 1 }, instance.columns[0] as GridColumnEditable, event, element);
458
+ expect(inlineEditFn).toHaveBeenCalledWith({
459
+ event,
460
+ element,
461
+ row: { id: 1 },
462
+ column: instance.columns[0],
463
+ component: instance,
464
+ });
465
+ });
466
+ });
467
+
468
+ describe('getEditableComponent', () => {
469
+ it('should return editable component', () => {
470
+ const instance = setupInstance({
471
+ name: 'Grid',
472
+ component: 'ZdGridEditable',
473
+ columns: [
474
+ {
475
+ name: 'id',
476
+ editable: true,
477
+ align: 'right',
478
+ componentProps: {
479
+ name: 'column',
480
+ component: 'ZdTextInput',
481
+ },
482
+ },
483
+ ],
484
+ datasource: {
485
+ limit: 2,
486
+ page: 1,
487
+ data: [
488
+ { id: 1 },
489
+ ],
490
+ },
491
+ });
492
+ const comp: IComponent = instance.getEditableComponent(instance.columns[0] as GridColumnEditable, { id: 1 });
493
+ expect(comp.name).toBe('id_editable_1');
494
+ expect(comp.component).toBe('ZdTextInput');
495
+ expect(comp.parent).toEqual(instance);
496
+ expect(comp.showLabel).toBeFalsy();
497
+ expect(comp.showHelper).toBeFalsy();
498
+ expect(comp.dense).toBeTruthy();
499
+ expect(comp.align).toBe('right');
500
+ expect(comp.value).toBe(1);
501
+ expect(comp.autoRegister).toBeFalsy();
502
+ expect((comp.events as any).blur).toBeInstanceOf(Function);
503
+ expect((comp.events as any).change).toBeInstanceOf(Function);
504
+ expect((comp.events as any).focus).toBeInstanceOf(Function);
505
+
506
+ const comp2: IComponent = instance.getEditableComponent(
507
+ instance.columns[0] as GridColumnEditable, { id: 2 }
508
+ );
509
+ expect(comp2.name).toBe('id_editable_2');
510
+ expect(comp2.component).toBe('ZdTextInput');
511
+ expect(comp2.parent).toEqual(instance);
512
+ });
513
+
514
+ it('should return component with edited value for the second time', () => {
515
+ const instance = setupInstance({
516
+ name: 'Grid',
517
+ component: 'ZdGridEditable',
518
+ columns: [
519
+ {
520
+ name: 'id',
521
+ editable: true,
522
+ align: 'right',
523
+ componentProps: {
524
+ name: 'column',
525
+ component: 'ZdTextInput',
526
+ },
527
+ },
528
+ ],
529
+ datasource: {
530
+ limit: 2,
531
+ page: 1,
532
+ data: [
533
+ { id: 1 },
534
+ ],
535
+ },
536
+ });
537
+ const comp: any = instance.getEditableComponent(instance.columns[0] as GridColumnEditable, { id: 1 });
538
+ const textInput = new TextInput(comp);
539
+ textInput.value = null;
540
+ comp.events.change({ component: textInput });
541
+ const comp2: any = instance.getEditableComponent(instance.columns[0] as GridColumnEditable, { id: 1 });
542
+ expect(comp2.value).toBeNull();
543
+ });
544
+
545
+ it('should call blur, change and focus events', () => {
546
+ const changeFn = jest.fn();
547
+ const blurFn = jest.fn();
548
+ const focusFn = jest.fn();
549
+ const instance = setupInstance({
550
+ name: 'Grid',
551
+ component: 'ZdGridEditable',
552
+ columns: [
553
+ {
554
+ name: 'id',
555
+ editable: true,
556
+ align: 'right',
557
+ componentProps: {
558
+ name: 'column',
559
+ component: 'ZdTextInput',
560
+ events: {
561
+ change: changeFn,
562
+ blur: blurFn,
563
+ focus: focusFn,
564
+ },
565
+ },
566
+ },
567
+ ],
568
+ datasource: {
569
+ limit: 2,
570
+ page: 1,
571
+ data: [
572
+ { id: 1 },
573
+ ],
574
+ },
575
+ });
576
+ const comp: any = instance.getEditableComponent(instance.columns[0] as GridColumnEditable, { id: 1 });
577
+ const textInput = new TextInput(comp);
578
+ textInput.value = '';
579
+ comp.events.change({ component: textInput });
580
+ comp.events.blur({ component: textInput });
581
+ comp.events.focus({ component: textInput });
582
+ expect(changeFn).toHaveBeenCalled();
583
+ expect(blurFn).toHaveBeenCalled();
584
+ expect(focusFn).toHaveBeenCalled();
585
+ });
586
+
587
+ it('should add lookupdata to component', () => {
588
+ const instance = setupInstance({
589
+ name: 'Grid',
590
+ component: 'ZdGridEditable',
591
+ columns: [
592
+ {
593
+ name: 'id',
594
+ editable: true,
595
+ align: 'right',
596
+ componentProps: {
597
+ name: 'column',
598
+ component: 'ZdSelect',
599
+ dataValue: 'id',
600
+ dataText: 'name',
601
+ datasource: {
602
+ uniqueKey: 'id',
603
+ type: 'rest',
604
+ route: 'employees',
605
+ },
606
+ },
607
+ },
608
+ ],
609
+ datasource: {
610
+ limit: 2,
611
+ page: 1,
612
+ data: [
613
+ { id: 1 },
614
+ ],
615
+ },
616
+ });
617
+
618
+ const column = instance.columns[0];
619
+ column.lookupData = {
620
+ 1: { id: 1, name: 'Employee 1' },
621
+ };
622
+
623
+ const comp: IComponent = instance.getEditableComponent(instance.columns[0] as GridColumnEditable, { id: 1 });
624
+ expect(comp.datasource.data).toEqual([{ id: 1, name: 'Employee 1' }]);
625
+ });
626
+
627
+ it('should add array lookupdata to component', () => {
628
+ const instance = setupInstance({
629
+ name: 'Grid',
630
+ component: 'ZdGridEditable',
631
+ columns: [
632
+ {
633
+ name: 'ingredients',
634
+ editable: true,
635
+ align: 'right',
636
+ componentProps: {
637
+ name: 'column',
638
+ component: 'ZdSelect',
639
+ dataValue: 'id',
640
+ dataText: 'name',
641
+ datasource: {
642
+ uniqueKey: 'id',
643
+ type: 'rest',
644
+ route: '/menu',
645
+ lazyLoad: true,
646
+ },
647
+ },
648
+ },
649
+ ],
650
+ datasource: {
651
+ limit: 2,
652
+ page: 1,
653
+ data: [
654
+ {
655
+ id: 1, name: 'Menu 1', ingredients: ['1', '6', '9'],
656
+ },
657
+ ],
658
+ },
659
+ });
660
+
661
+ const column = instance.columns[0];
662
+ column.lookupData = {
663
+ 1: { id: '1' },
664
+ 6: { id: '6' },
665
+ 9: { id: '9' },
666
+ };
667
+
668
+ const comp: IComponent = instance.getEditableComponent(
669
+ instance.columns[0] as GridColumnEditable,
670
+ { id: 1, name: 'Menu 1', ingredients: ['1', '6', '9'] },
671
+ );
672
+ expect(comp.datasource.data).toEqual([{ id: '1' }, { id: '6' }, { id: '9' }]);
673
+ });
674
+
675
+ it('should add array of objects lookupdata to component', () => {
676
+ const instance = setupInstance({
677
+ name: 'Grid',
678
+ component: 'ZdGridEditable',
679
+ columns: [
680
+ {
681
+ name: 'ingredients',
682
+ editable: true,
683
+ align: 'right',
684
+ componentProps: {
685
+ name: 'column',
686
+ component: 'ZdSelect',
687
+ dataValue: 'id',
688
+ dataText: 'name',
689
+ datasource: {
690
+ uniqueKey: 'id',
691
+ type: 'rest',
692
+ route: '/menu',
693
+ lazyLoad: true,
694
+ },
695
+ },
696
+ },
697
+ ],
698
+ datasource: {
699
+ limit: 2,
700
+ page: 1,
701
+ data: [
702
+ {
703
+ id: 1,
704
+ name: 'Menu 1',
705
+ ingredients: [
706
+ { id: '1', name: 'Salada' },
707
+ { id: '6', name: 'Arroz' },
708
+ { id: '9', name: 'Macarrão' },
709
+ ],
710
+ },
711
+ ],
712
+ },
713
+ });
714
+
715
+ const column = instance.columns[0];
716
+ column.lookupData = {
717
+ 1: { id: '1' },
718
+ 6: { id: '6' },
719
+ 9: { id: '9' },
720
+ };
721
+
722
+ const comp: IComponent = instance.getEditableComponent(
723
+ instance.columns[0] as GridColumnEditable,
724
+ { id: 1, name: 'Menu 1', ingredients: [{ id: '1' }, { id: '6' }, { id: '9' }] },
725
+ );
726
+ expect(comp.datasource.data).toEqual([{ id: '1' }, { id: '6' }, { id: '9' }]);
727
+ });
728
+
729
+ it('should get an object from column', () => {
730
+ const instance = setupInstance({
731
+ name: 'Grid',
732
+ component: 'ZdGridEditable',
733
+ columns: [
734
+ {
735
+ name: 'job_data',
736
+ editable: true,
737
+ align: 'right',
738
+ componentProps: {
739
+ name: 'column',
740
+ component: 'ZdSelect',
741
+ dataValue: 'id',
742
+ dataText: 'name',
743
+ datasource: {
744
+ uniqueKey: 'id',
745
+ type: 'rest',
746
+ route: '/job',
747
+ lazyLoad: true,
748
+ },
749
+ },
750
+ },
751
+ ],
752
+ datasource: {
753
+ limit: 2,
754
+ page: 1,
755
+ data: [
756
+ {
757
+ id: 1, name: 'Employee 1', job_data: { id: 1, name: 'Job 1' },
758
+ },
759
+ ],
760
+ },
761
+ });
762
+
763
+ const column = instance.columns[0];
764
+ column.lookupData = {
765
+ 1: { id: 1, name: 'Job 1' },
766
+ };
767
+
768
+ const comp: IComponent = instance.getEditableComponent(
769
+ instance.columns[0] as GridColumnEditable,
770
+ { id: 1, name: 'Employee 1', job_data: { id: 1, name: 'Job 1' } },
771
+ );
772
+ expect(comp.datasource.data).toEqual([{ id: 1, name: 'Job 1' }]);
773
+ });
774
+
775
+ it('should do not try get lookup value if lookupColumn not exist', () => {
776
+ const instance = new GridEditable(
777
+ {
778
+ name: 'grid-foreignKeySelects',
779
+ component: 'ZdGridEditable',
780
+ gridHeight: '220px',
781
+ columns: [
782
+ {
783
+ name: 'id',
784
+ label: 'ID',
785
+ sortable: false,
786
+ },
787
+ {
788
+ name: 'rest_request',
789
+ label: 'REST with request',
790
+ componentProps: {
791
+ name: 'name_1',
792
+ component: 'ZdSelect',
793
+ dataText: ['id', 'valor-que-nunca-é-retornado'],
794
+ dataValue: 'valor-que-nunca-é-retornado',
795
+ datasource: {
796
+ data: [
797
+ { id: 1 },
798
+ { id: 2 },
799
+ { id: 3 },
800
+ ],
801
+ },
802
+ },
803
+ },
804
+ ],
805
+ datasource: {
806
+ uniqueKey: 'id',
807
+ data: [
808
+ { id: 1, rest_request: 2 },
809
+ { id: 2, rest_request: 3 },
810
+ { id: 3, rest_request: 4 },
811
+ ],
812
+ },
813
+ },
814
+ );
815
+
816
+ const consoleSpy = jest.spyOn(console, 'warn').mockImplementation(() => true);
817
+
818
+ const formatterFn = FormatterParserProvider.getFormatter('column_ZdSelect');
819
+
820
+ const value = formatterFn({
821
+ column: instance.columns[1],
822
+ value: 2,
823
+ row: { id: 1, rest_request: 2 },
824
+ componentProps: instance.columns[1].componentProps,
825
+ });
826
+
827
+ expect(consoleSpy).toHaveBeenCalled();
828
+ expect(value).toEqual(2);
829
+ consoleSpy.mockClear();
830
+ });
831
+
832
+ it('should not throw when using accessor in datasource.data', () => {
833
+ const controller = { data: [] };
834
+ mockLoaderValueAccessor(controller);
835
+ const instance = setupInstance({
836
+ name: 'Grid',
837
+ component: 'ZdGridEditable',
838
+ columns: [
839
+ {
840
+ name: 'id',
841
+ editable: true,
842
+ componentProps: {
843
+ name: 'column',
844
+ component: 'ZdSelect',
845
+ dataValue: 'id',
846
+ dataText: 'name',
847
+ datasource: {
848
+ uniqueKey: 'id',
849
+ data: '{{Controller.data}}',
850
+ },
851
+ },
852
+ },
853
+ ],
854
+ datasource: {
855
+ limit: 2,
856
+ page: 1,
857
+ data: [
858
+ { id: 1 },
859
+ ],
860
+ },
861
+ });
862
+
863
+ const column = instance.columns[0];
864
+ column.lookupData = {
865
+ 1: { id: 1, name: 'Employee 1' },
866
+ };
867
+
868
+ const fn = () => instance.getEditableComponent(instance.columns[0] as GridColumnEditable, { id: 1 });
869
+ expect(fn).not.toThrow();
870
+ });
871
+
872
+ it('should get formated value', () => {
873
+ const instance = setupInstance({
874
+ name: 'Grid',
875
+ component: 'ZdGridEditable',
876
+ columns: [
877
+ {
878
+ name: 'id',
879
+ editable: true,
880
+ align: 'right',
881
+ componentProps: {
882
+ name: 'column',
883
+ component: 'ZdSelect',
884
+ dataValue: 'value',
885
+ dataText: 'text',
886
+ returnObject: true,
887
+ datasource: {
888
+ data: [
889
+ { value: 1, text: 'FIRST' },
890
+ { value: 2, text: 'SECOND' },
891
+ { value: 3, text: 'THIRD' },
892
+ ],
893
+ },
894
+ },
895
+ },
896
+ ],
897
+ datasource: {
898
+ limit: 2,
899
+ page: 1,
900
+ data: [
901
+ { id: 1 },
902
+ { id: 2 },
903
+ { id: 3 },
904
+ ],
905
+ },
906
+ });
907
+ const spyM = jest.spyOn(instance.columns[0], 'getLookupData').mockImplementation(() => ({}));
908
+ const formatterFn = FormatterParserProvider.getFormatter('column_ZdSelect');
909
+ const value = formatterFn({
910
+ column: instance.columns[0],
911
+ value: { value: 2, text: 'SECOND' },
912
+ row: { id: 2 },
913
+ componentProps: instance.columns[0].componentProps,
914
+ });
915
+ instance.getEditableComponent(
916
+ instance.columns[0], {
917
+ id: { value: 1, text: 'FIRST' },
918
+ },
919
+ );
920
+ expect(spyM).toHaveBeenCalled();
921
+ expect(value).toEqual('');
922
+ spyM.mockClear();
923
+ });
924
+
925
+ it('should not add lookup data to component if value is already in datasource', () => {
926
+ const instance = setupInstance({
927
+ name: 'Grid',
928
+ component: 'ZdGridEditable',
929
+ columns: [
930
+ {
931
+ name: 'id',
932
+ editable: true,
933
+ align: 'right',
934
+ componentProps: {
935
+ name: 'column',
936
+ component: 'ZdSelect',
937
+ dataValue: 'id',
938
+ dataText: 'name',
939
+ datasource: {
940
+ uniqueKey: 'id',
941
+ data: [
942
+ { id: 1, name: 'Employee 1' },
943
+ ],
944
+ },
945
+ },
946
+ },
947
+ ],
948
+ datasource: {
949
+ limit: 2,
950
+ page: 1,
951
+ data: [
952
+ { id: 1 },
953
+ ],
954
+ },
955
+ });
956
+
957
+ const column = instance.columns[0];
958
+ column.lookupData = {
959
+ 1: { id: 1, name: 'Employee 1' },
960
+ };
961
+
962
+ const comp: IComponent = instance.getEditableComponent(instance.columns[0] as GridColumnEditable, { id: 1 });
963
+ expect(comp.datasource.data).toEqual([{ id: 1, name: 'Employee 1' }]);
964
+ });
965
+ });
966
+
967
+ describe('isEdited()', () => {
968
+ it('should return if cell is valid', () => {
969
+ const instance = setupInstance({
970
+ name: 'Grid',
971
+ component: 'ZdGridEditable',
972
+ columns: [
973
+ {
974
+ name: 'id',
975
+ editable: true,
976
+ align: 'right',
977
+ componentProps: {
978
+ name: 'column',
979
+ component: 'ZdTextInput',
980
+ },
981
+ },
982
+ ],
983
+ datasource: {
984
+ limit: 2,
985
+ page: 1,
986
+ data: [
987
+ { id: '1' },
988
+ ],
989
+ },
990
+ });
991
+ const comp: any = instance.getEditableComponent(instance.columns[0] as GridColumnEditable, { id: '1' });
992
+ const textInput = new TextInput(comp);
993
+ (comp.events as any).change({ component: textInput });
994
+ expect(instance.isEdited(instance.columns[0] as GridColumnEditable, { id: '1' })).toBeFalsy();
995
+ textInput.value = '2';
996
+ (comp.events as any).change({ component: textInput });
997
+ expect(instance.isEdited(instance.columns[0] as GridColumnEditable, { id: '1' })).toBeTruthy();
998
+ });
999
+ });
1000
+
1001
+ describe('cancelEditedRows()', () => {
1002
+ const instantiateMemoryGrid = () => {
1003
+ return setupInstance({
1004
+ name: 'Grid',
1005
+ component: 'ZdGridEditable',
1006
+ columns: [
1007
+ {
1008
+ name: 'id',
1009
+ editable: true,
1010
+ align: 'right',
1011
+ componentProps: {
1012
+ name: 'column',
1013
+ component: 'ZdTextInput',
1014
+ validations: {
1015
+ required: {},
1016
+ },
1017
+ },
1018
+ },
1019
+ ],
1020
+ datasource: {
1021
+ limit: 2,
1022
+ page: 1,
1023
+ data: [
1024
+ { id: '1' },
1025
+ ],
1026
+ },
1027
+ });
1028
+ }
1029
+
1030
+ const instantiateRESTGrid = () => {
1031
+ return setupInstance({
1032
+ name: 'Grid',
1033
+ component: 'ZdGridEditable',
1034
+ columns: [
1035
+ {
1036
+ name: 'id',
1037
+ editable: true,
1038
+ align: 'right',
1039
+ componentProps: {
1040
+ name: 'column',
1041
+ component: 'ZdTextInput',
1042
+ validations: {
1043
+ required: {},
1044
+ },
1045
+ },
1046
+ },
1047
+ ],
1048
+ datasource: {
1049
+ uniqueKey: 'id',
1050
+ type: 'rest',
1051
+ route: '/menu',
1052
+ lazyLoad: true,
1053
+ limit: 2,
1054
+ page: 1,
1055
+ },
1056
+ });
1057
+ }
1058
+
1059
+ it('should undo editing REST datasorce', async () => {
1060
+ const instanceRESTData = instantiateRESTGrid();
1061
+ const spy = jest.spyOn(Http, 'get').mockImplementation(() => Promise.resolve({
1062
+ data: {
1063
+ data: [{ id: '1' }],
1064
+ pagination: { page: 1, total: 1, limit: 2 },
1065
+ },
1066
+ }));
1067
+ instanceRESTData.editing = true;
1068
+ await instanceRESTData.cancelEditedRows();
1069
+ expect(instanceRESTData.editing).toBeFalsy();
1070
+ spy.mockClear();
1071
+ });
1072
+
1073
+ const dispatchEvent = (key: string, modifiers: any) => {
1074
+ const event = new KeyboardEvent('keydown', modifiers);
1075
+ delete (event as any).key;
1076
+ Object.defineProperty(event, 'key', { value: key });
1077
+ delete (event as any).code;
1078
+ Object.defineProperty(event, 'code', { value: key });
1079
+ document.dispatchEvent(event);
1080
+ };
1081
+
1082
+ it('should cancel editedRows with keymap', async () => {
1083
+ const instance = instantiateMemoryGrid();
1084
+ const elem = document.createElement('DIV');
1085
+ (KeyMap as any).isElementActive = () => true;
1086
+ instance.onMounted(elem);
1087
+
1088
+ instance.editing = true;
1089
+ const comp: any = instance.getEditableComponent(instance.columns[0] as GridColumnEditable, { id: '1' });
1090
+ const textInput = new TextInput(comp);
1091
+ textInput.value = '';
1092
+ comp.events.focus({ component: textInput });
1093
+ await flushPromises();
1094
+
1095
+ dispatchEvent('escape', {}); // esc keydown
1096
+ await flushPromises();
1097
+
1098
+ instance.onBeforeDestroy();
1099
+ await flushPromises();
1100
+ expect(instance.editing).toEqual(false);
1101
+ (KeyMap as any).isElementActive = () => false;
1102
+ });
1103
+ });
1104
+
1105
+ describe('cancelAddedRow()', () => {
1106
+ it('should remove an added row from datasource and remove it from editedRows', async () => {
1107
+ const initialData = [
1108
+ { id: '1', name: 'name1' },
1109
+ { id: '2', name: 'name2' },
1110
+ { id: '3', name: 'name3' },
1111
+ ];
1112
+ const instance = new GridEditable({
1113
+ name: 'Grid',
1114
+ component: 'ZdGridEditable',
1115
+ datasource: {
1116
+ data: initialData,
1117
+ },
1118
+ });
1119
+ instance.onCreated();
1120
+
1121
+ await instance.addNewRow({ id: '4', name: 'name4' });
1122
+
1123
+ await instance.cancelAddedRow('4');
1124
+
1125
+ expect(instance.datasource.data).toEqual(initialData);
1126
+ expect(instance.getEditedRows()).toEqual([]);
1127
+ expect(instance.getAddedRows()).toEqual([]);
1128
+ });
1129
+ });
1130
+
1131
+ describe('selectClick', () => {
1132
+ it('should call selected/unselected events', () => {
1133
+ const selectedFn = jest.fn();
1134
+ const unselectedFn = jest.fn();
1135
+ const instance = new GridEditable({
1136
+ name: 'Grid',
1137
+ component: 'ZdGridEditable',
1138
+ datasource: {
1139
+ limit: 2,
1140
+ page: 1,
1141
+ data: [
1142
+ { id: 1 },
1143
+ ],
1144
+ },
1145
+ events: {
1146
+ selected: selectedFn,
1147
+ unselected: unselectedFn,
1148
+ },
1149
+ });
1150
+ const event = new MouseEvent('click');
1151
+ const element = document.createElement('div');
1152
+ instance.selectClick({ id: 1 }, true, event, element);
1153
+ expect(selectedFn).toHaveBeenCalled();
1154
+ instance.selectClick({ id: 1 }, false, event, element);
1155
+ expect(unselectedFn).toHaveBeenCalled();
1156
+ });
1157
+ });
1158
+
1159
+ describe('selectAllClick', () => {
1160
+ it('should call selectedAll/unselectedAll events', () => {
1161
+ const selectedAllFn = jest.fn();
1162
+ const unselectedAllFn = jest.fn();
1163
+ const instance = new GridEditable({
1164
+ name: 'Grid',
1165
+ component: 'ZdGridEditable',
1166
+ datasource: {
1167
+ limit: 2,
1168
+ page: 1,
1169
+ data: [
1170
+ { id: 1 },
1171
+ ],
1172
+ },
1173
+ events: {
1174
+ selectedAll: selectedAllFn,
1175
+ unselectedAll: unselectedAllFn,
1176
+ },
1177
+ });
1178
+ const event = new MouseEvent('click');
1179
+ const element = document.createElement('div');
1180
+ instance.selectAllClick(true, event, element);
1181
+ expect(selectedAllFn).toHaveBeenCalled();
1182
+ instance.selectAllClick(false, event, element);
1183
+ expect(unselectedAllFn).toHaveBeenCalled();
1184
+ });
1185
+ });
1186
+
1187
+ describe('Editing Selects', () => {
1188
+ it('should change value of out column', async () => {
1189
+ const instance = new GridEditable({
1190
+ name: 'Grid',
1191
+ component: 'ZdGridEditable',
1192
+ datasource: {
1193
+ data: [
1194
+ {
1195
+ id: 1, code: 1, name: 'name 1', code2: 1, name2: 'name 1', code3: 1,
1196
+ },
1197
+ ],
1198
+ },
1199
+ columns: [
1200
+ {
1201
+ name: 'code',
1202
+ editable: true,
1203
+ componentProps: {
1204
+ name: 'column',
1205
+ component: 'ZdSelect',
1206
+ dataText: 'name',
1207
+ formatterDataText: 'name',
1208
+ dataValue: 'value',
1209
+ dataValueOut: [
1210
+ 'name',
1211
+ ],
1212
+ datasource: {
1213
+ data: [
1214
+ { value: 1, name: 'name 1' },
1215
+ { value: 2, name: 'name 2' },
1216
+ ],
1217
+ },
1218
+ },
1219
+ },
1220
+ {
1221
+ name: 'code2',
1222
+ editable: true,
1223
+ componentProps: {
1224
+ name: 'column',
1225
+ component: 'ZdSelect',
1226
+ dataText: 'text',
1227
+ formatterDataText: 'name',
1228
+ dataValue: 'value',
1229
+ datasource: {
1230
+ data: [
1231
+ { value: 1, text: 'name 1' },
1232
+ { value: 2, text: 'name 2' },
1233
+ ],
1234
+ },
1235
+ },
1236
+ },
1237
+ {
1238
+ name: 'code3',
1239
+ editable: true,
1240
+ componentProps: {
1241
+ name: 'column',
1242
+ component: 'ZdTextInput',
1243
+ dataValueOut: [
1244
+ { column: 'text', columnOnGrid: 'name' },
1245
+ ],
1246
+ },
1247
+ },
1248
+ ],
1249
+ });
1250
+ instance.onCreated();
1251
+ instance.editing = true;
1252
+ const comp: any = instance.getEditableComponent(instance.columns[0] as GridColumnEditable, {
1253
+ id: 1, code: 1, name: 'name 1', code2: 1, name2: 'name 1', code3: 1,
1254
+ });
1255
+ const select = new Select(comp);
1256
+ await select.setValue(2);
1257
+ (comp.events as any).change({ component: select });
1258
+ (comp.events as any).blur({ component: select });
1259
+ expect(instance.getEditedRows()).toEqual([
1260
+ {
1261
+ id: 1, code: 2, name: 'name 2', code2: 1, name2: 'name 1', code3: 1,
1262
+ },
1263
+ ]);
1264
+
1265
+ await select.setValue(1);
1266
+ (comp.events as any).change({ component: select });
1267
+ (comp.events as any).blur({ component: select });
1268
+ expect(instance.getEditedRows()).toEqual([]);
1269
+
1270
+ const comp2: any = instance.getEditableComponent(instance.columns[1] as GridColumnEditable, {
1271
+ id: 1, code: 1, name: 'name 2', code2: 1, name2: 'name 1', code3: 1,
1272
+ });
1273
+ const select2 = new Select(comp2);
1274
+ await select2.setValue(2);
1275
+ (comp2.events as any).change({ component: select2 });
1276
+ (comp2.events as any).blur({ component: select2 });
1277
+ expect(instance.getEditedRows()).toEqual([
1278
+ {
1279
+ id: 1, code: 1, name: 'name 2', code2: 2, name2: 'name 1', code3: 1,
1280
+ },
1281
+ ]);
1282
+
1283
+ const comp3: any = instance.getEditableComponent(instance.columns[2] as GridColumnEditable, {
1284
+ id: 1, code: 1, name: 'name 2', code2: 2, name2: 'name 1', code3: 1,
1285
+ });
1286
+ const input3 = new TextInput(comp3);
1287
+ input3.value = 2;
1288
+ (comp3.events as any).change({ component: input3 });
1289
+ (comp3.events as any).blur({ component: input3 });
1290
+ expect(instance.getEditedRows()).toEqual([
1291
+ {
1292
+ id: 1, code: 1, name: 'name 2', code2: 2, name2: 'name 1', code3: 2,
1293
+ },
1294
+ ]);
1295
+
1296
+ await instance.saveEditedRows();
1297
+ expect(instance.datasource.data).toEqual([
1298
+ {
1299
+ id: 1, code: 1, name: 'name 2', code2: 2, name2: 'name 1', code3: 2,
1300
+ },
1301
+ ]);
1302
+ });
1303
+ });
1304
+
1305
+ describe('Formatting Selects', () => {
1306
+ it('should format value of column', async () => {
1307
+ const instance = new GridEditable({
1308
+ name: 'Grid',
1309
+ component: 'ZdGridEditable',
1310
+ datasource: {
1311
+ data: [
1312
+ {
1313
+ id: 1, code: 1, code2: 2, code3: 3,
1314
+ },
1315
+ ],
1316
+ },
1317
+ columns: [
1318
+ {
1319
+ name: 'code',
1320
+ editable: true,
1321
+ componentProps: {
1322
+ name: 'column',
1323
+ component: 'ZdSelect',
1324
+ dataText: 'text',
1325
+ dataValue: 'value',
1326
+ datasource: {
1327
+ data: [
1328
+ { value: 1, text: 'name 1' },
1329
+ { value: 2, text: 'name 2' },
1330
+ ],
1331
+ },
1332
+ },
1333
+ },
1334
+ {
1335
+ name: 'code2',
1336
+ editable: true,
1337
+ componentProps: {
1338
+ name: 'column',
1339
+ component: 'ZdSelect',
1340
+ dataText: 'text',
1341
+ dataValue: 'value',
1342
+ datasource: {
1343
+ data: [
1344
+ { value: 1, text: 'name 1' },
1345
+ ],
1346
+ },
1347
+ },
1348
+ },
1349
+ {
1350
+ name: 'code3',
1351
+ editable: true,
1352
+ componentProps: {
1353
+ name: 'column',
1354
+ component: 'ZdSelect',
1355
+ dataText: 'text_error',
1356
+ dataValue: 'value',
1357
+ datasource: {
1358
+ data: [
1359
+ { value: 3, text: 'name 3' },
1360
+ ],
1361
+ },
1362
+ },
1363
+ },
1364
+ ],
1365
+ });
1366
+ instance.onCreated();
1367
+ const column = instance.columns[0];
1368
+ const value = column.formatterByRow(instance.datasource.data[0]);
1369
+ expect(value).toBe('name 1');
1370
+
1371
+ const column2 = instance.columns[1];
1372
+ const value2 = column2.formatterByRow(instance.datasource.data[0]);
1373
+ expect(value2).toBe(2);
1374
+
1375
+ const column3 = instance.columns[2];
1376
+ const value3 = column3.formatterByRow(instance.datasource.data[0]);
1377
+ expect(value3).toBe(3);
1378
+ });
1379
+
1380
+ it('should format value of column using multiple dataText value', async () => {
1381
+ const instance = new GridEditable({
1382
+ name: 'Grid',
1383
+ component: 'ZdGridEditable',
1384
+ datasource: {
1385
+ data: [
1386
+ { id: 1, code: 1, name: 'name 1' },
1387
+ ],
1388
+ },
1389
+ columns: [
1390
+ {
1391
+ name: 'code',
1392
+ editable: true,
1393
+ componentProps: {
1394
+ name: 'column',
1395
+ component: 'ZdSelect',
1396
+ dataText: ['value', 'text', 'code'],
1397
+ dataValue: 'value',
1398
+ datasource: {
1399
+ data: [
1400
+ { value: 1, text: 'name 1' },
1401
+ { value: 2, text: 'name 2' },
1402
+ ],
1403
+ },
1404
+ },
1405
+ },
1406
+ ],
1407
+ });
1408
+ const column = instance.columns[0] as Column;
1409
+ const value = column.formatterByRow({ id: 1, code: 1, name: 'name 1' });
1410
+ expect(value).toBe('1 | name 1');
1411
+ });
1412
+
1413
+ it('should format value of column using dataText with mask', async () => {
1414
+ const instance = new GridEditable({
1415
+ name: 'Grid',
1416
+ component: 'ZdGridEditable',
1417
+ datasource: {
1418
+ data: [
1419
+ { id: 1, code: 1, name: 'name 1' },
1420
+ ],
1421
+ },
1422
+ columns: [
1423
+ {
1424
+ name: 'code',
1425
+ editable: true,
1426
+ componentProps: {
1427
+ name: 'column',
1428
+ component: 'ZdSelect',
1429
+ dataText: ['value', { name: 'text', mask: 'a.a.a' }, 'code'],
1430
+ dataValue: 'value',
1431
+ datasource: {
1432
+ data: [
1433
+ { value: 1, text: 'name 1' },
1434
+ { value: 2, text: 'name 2' },
1435
+ ],
1436
+ },
1437
+ },
1438
+ },
1439
+ ],
1440
+ });
1441
+ const column = instance.columns[0] as Column;
1442
+ const value = column.formatterByRow({ id: 1, code: 1, name: 'name 1' });
1443
+ expect(value).toBe('1 | n.a.m');
1444
+ });
1445
+
1446
+ it('should format value of column using simple datasource', async () => {
1447
+ const instance = new GridEditable({
1448
+ name: 'Grid',
1449
+ component: 'ZdGridEditable',
1450
+ datasource: {
1451
+ data: [
1452
+ { id: 1, name: 'name 1' },
1453
+ ],
1454
+ },
1455
+ columns: [
1456
+ {
1457
+ name: 'name',
1458
+ editable: true,
1459
+ componentProps: {
1460
+ name: 'column',
1461
+ component: 'ZdSelect',
1462
+ datasource: {
1463
+ type: 'simple',
1464
+ items: [
1465
+ 'name 1',
1466
+ ],
1467
+ },
1468
+ },
1469
+ },
1470
+ ],
1471
+ });
1472
+ const column = instance.columns[0] as Column;
1473
+ const value = column.formatterByRow({ id: 1, name: 'name 1' });
1474
+ expect(value).toBe('name 1');
1475
+ });
1476
+
1477
+ // it('should format value of column using REST datasource', async () => {
1478
+ // let paramId: any;
1479
+ // const spy = jest.spyOn(Http, 'get').mockImplementation((_route:string, params: any) => {
1480
+ // paramId = params.params.id;
1481
+ // return Promise.resolve({
1482
+ // data: {
1483
+ // data: [{ id: '1', name: 'name 1' }, { id: '2', name: 'name 2' }],
1484
+ // pagination: { page: 1, total: 1, limit: 15 },
1485
+ // },
1486
+ // });
1487
+ // });
1488
+
1489
+ // const instance = new GridEditable({
1490
+ // name: 'Grid',
1491
+ // component: 'ZdGridEditable',
1492
+ // datasource: {
1493
+ // uniqueKey: 'id',
1494
+ // data: [
1495
+ // { id: '1' },
1496
+ // { id: '2' },
1497
+ // { id: '3' },
1498
+ // ],
1499
+ // },
1500
+ // columns: [
1501
+ // {
1502
+ // name: 'id',
1503
+ // editable: true,
1504
+ // componentProps: {
1505
+ // name: 'column',
1506
+ // component: 'ZdSelect',
1507
+ // dataText: ['id', 'name'],
1508
+ // dataValue: 'id',
1509
+ // datasource: {
1510
+ // type: 'rest',
1511
+ // route: '/zeedhi',
1512
+ // },
1513
+ // },
1514
+ // },
1515
+ // ],
1516
+ // });
1517
+ // instance.onCreated();
1518
+ // const column = instance.columns[0] as Column;
1519
+ // let value1 = column.formatterByRow({ id: '1' });
1520
+ // let value2 = column.formatterByRow({ id: '2' });
1521
+ // let value3 = column.formatterByRow({ id: '3' });
1522
+ // expect(value1).toBe('1');
1523
+ // expect(value2).toBe('2');
1524
+ // expect(value3).toBe('3');
1525
+ // expect(spy).not.toHaveBeenCalled();
1526
+
1527
+ // jest.runAllTimers();
1528
+ // await flushPromises();
1529
+
1530
+ // expect(spy).toHaveBeenCalled();
1531
+ // expect(paramId).toEqual(['1', '2', '3']);
1532
+ // value1 = column.formatterByRow({ id: '1' });
1533
+ // value2 = column.formatterByRow({ id: '2' });
1534
+ // value3 = column.formatterByRow({ id: '3' });
1535
+ // expect(value1).toBe('1 | name 1');
1536
+ // expect(value2).toBe('2 | name 2');
1537
+ // expect(value3).toBe('3');
1538
+
1539
+ // spy.mockClear();
1540
+ // });
1541
+
1542
+ it('should format value of column using dataTextDiscrete', async () => {
1543
+ const instance = setupInstance({
1544
+ name: 'Grid',
1545
+ component: 'ZdGridEditable',
1546
+ datasource: {
1547
+ data: [
1548
+ {
1549
+ id: 1, code: 1, code2: 2, code3: 3,
1550
+ },
1551
+ ],
1552
+ },
1553
+ columns: [
1554
+ {
1555
+ name: 'code',
1556
+ editable: true,
1557
+ componentProps: {
1558
+ name: 'column',
1559
+ component: 'ZdSelect',
1560
+ dataText: 'text',
1561
+ dataValue: 'value',
1562
+ dataTextDiscrete: ['value', 'text'],
1563
+ datasource: {
1564
+ data: [
1565
+ { value: 1, text: 'name 1' },
1566
+ { value: 2, text: 'name 2' },
1567
+ ],
1568
+ },
1569
+ },
1570
+ },
1571
+ ],
1572
+ });
1573
+ const column = instance.columns[0];
1574
+ const value = column.formatterByRow(instance.datasource.data[0]);
1575
+ expect(value).toBe('1 | name 1');
1576
+ });
1577
+ });
1578
+
1579
+ describe('Formatting Select Multiple', () => {
1580
+ it('should format a column with an array of values', () => {
1581
+ const instance = setupInstance({
1582
+ name: 'Grid',
1583
+ component: 'ZdGridEditable',
1584
+ datasource: {
1585
+ data: [
1586
+ { id: 1, ingredients: [1, 2] },
1587
+ ],
1588
+ },
1589
+ columns: [
1590
+ {
1591
+ name: 'ingredients',
1592
+ editable: true,
1593
+ componentProps: {
1594
+ name: 'column',
1595
+ component: 'ZdSelectMultiple',
1596
+ dataText: 'text',
1597
+ dataValue: 'value',
1598
+ datasource: {
1599
+ uniqueKey: 'value',
1600
+ data: [
1601
+ { value: 1, text: 'name 1' },
1602
+ { value: 2, text: 'name 2' },
1603
+ { value: 3, text: 'name 3' },
1604
+ { value: 4, text: 'name 4' },
1605
+ ],
1606
+ },
1607
+ },
1608
+ },
1609
+ ],
1610
+ });
1611
+ const column = instance.columns[0];
1612
+ const value = column.formatterByRow(instance.datasource.data[0]);
1613
+ expect(value).toBe('name 1, name 2');
1614
+ });
1615
+
1616
+ it('should format a ZdSelectMultiple using formatterDataText', () => {
1617
+ const instance = setupInstance({
1618
+ name: 'Grid',
1619
+ component: 'ZdGridEditable',
1620
+ datasource: {
1621
+ data: [
1622
+ { id: 1, ingredients: [1, 2], ingredient_name: ['First (formatter)', 'Second (formatter)'] },
1623
+ ],
1624
+ },
1625
+ columns: [
1626
+ {
1627
+ name: 'ingredients',
1628
+ editable: true,
1629
+ componentProps: {
1630
+ name: 'column',
1631
+ component: 'ZdSelectMultiple',
1632
+ dataText: 'text',
1633
+ dataValue: 'value',
1634
+ formatterDataText: 'ingredient_name',
1635
+ datasource: {
1636
+ uniqueKey: 'value',
1637
+ data: [
1638
+ { value: 1, text: 'First' },
1639
+ { value: 2, text: 'Second' },
1640
+ { value: 3, text: 'Third' },
1641
+ { value: 4, text: 'Fourth' },
1642
+ ],
1643
+ },
1644
+ },
1645
+ },
1646
+ ],
1647
+ });
1648
+ const column = instance.columns[0];
1649
+ const value = column.formatterByRow(instance.datasource.data[0]);
1650
+ expect(value).toBe('First (formatter), Second (formatter)');
1651
+ });
1652
+
1653
+ it('should format a ZdSelectMultiple without using formatterDataText', () => {
1654
+ const instance = setupInstance({
1655
+ name: 'Grid',
1656
+ component: 'ZdGridEditable',
1657
+ datasource: {
1658
+ data: [
1659
+ { id: 1, ingredients: [1, 2], ingredient_name: ['First (formatter)', 'Second (formatter)'] },
1660
+ ],
1661
+ },
1662
+ columns: [
1663
+ {
1664
+ name: 'ingredients',
1665
+ editable: true,
1666
+ componentProps: {
1667
+ name: 'column',
1668
+ component: 'ZdSelectMultiple',
1669
+ dataText: 'text',
1670
+ dataValue: 'value',
1671
+ foreignColumns: {
1672
+ text: 'ingredient_name',
1673
+ },
1674
+ datasource: {
1675
+ uniqueKey: 'value',
1676
+ data: [
1677
+ { value: 1, text: 'First' },
1678
+ { value: 2, text: 'Second' },
1679
+ { value: 3, text: 'Third' },
1680
+ { value: 4, text: 'Fourth' },
1681
+ ],
1682
+ },
1683
+ },
1684
+ },
1685
+ ],
1686
+ });
1687
+ const column = instance.columns[0];
1688
+ const value = column.formatterByRow(instance.datasource.data[0]);
1689
+ expect(value).toBe('First (formatter), Second (formatter)');
1690
+ });
1691
+
1692
+ it('should format a ZdSelectMultiple without using formatterDataText and dataText as object', () => {
1693
+ const instance = setupInstance({
1694
+ name: 'Grid',
1695
+ component: 'ZdGridEditable',
1696
+ datasource: {
1697
+ data: [
1698
+ {
1699
+ id: 1, ingredients: [1, 2], value: [1, 2], ingredient_name: ['First (formatter)', 'Second (formatter)'],
1700
+ },
1701
+ ],
1702
+ },
1703
+ columns: [
1704
+ {
1705
+ name: 'ingredients',
1706
+ editable: true,
1707
+ componentProps: {
1708
+ name: 'column',
1709
+ component: 'ZdSelectMultiple',
1710
+ dataText: [{ name: 'text' }, { name: 'value' }],
1711
+ dataValue: 'value',
1712
+ foreignColumns: {
1713
+ text: 'ingredient_name',
1714
+ },
1715
+ datasource: {
1716
+ uniqueKey: 'value',
1717
+ data: [
1718
+ { value: 1, text: 'First' },
1719
+ { value: 2, text: 'Second' },
1720
+ { value: 3, text: 'Third' },
1721
+ { value: 4, text: 'Fourth' },
1722
+ ],
1723
+ },
1724
+ },
1725
+ },
1726
+ ],
1727
+ });
1728
+ const column = instance.columns[0];
1729
+ const value = column.formatterByRow(instance.datasource.data[0]);
1730
+ expect(value).toBe('First (formatter) | 1, Second (formatter) | 2');
1731
+ });
1732
+
1733
+ it('should format a ZdSelectMultiple without using formatterDataText and dataText as string', () => {
1734
+ const instance = setupInstance({
1735
+ name: 'Grid',
1736
+ component: 'ZdGridEditable',
1737
+ datasource: {
1738
+ data: [
1739
+ {
1740
+ id: 1, ingredients: [1, 2], value: [1, 2], ingredient_name: ['First (formatter)', 'Second (formatter)'],
1741
+ },
1742
+ ],
1743
+ },
1744
+ columns: [
1745
+ {
1746
+ name: 'ingredients',
1747
+ editable: true,
1748
+ componentProps: {
1749
+ name: 'column',
1750
+ component: 'ZdSelectMultiple',
1751
+ dataText: 'value',
1752
+ dataValue: 'value',
1753
+ foreignColumns: {
1754
+ text: 'ingredient_name',
1755
+ },
1756
+ datasource: {
1757
+ uniqueKey: 'value',
1758
+ data: [
1759
+ { value: 1, text: 'First' },
1760
+ { value: 2, text: 'Second' },
1761
+ { value: 3, text: 'Third' },
1762
+ { value: 4, text: 'Fourth' },
1763
+ ],
1764
+ },
1765
+ },
1766
+ },
1767
+ ],
1768
+ });
1769
+ const column = instance.columns[0];
1770
+ const value = column.formatterByRow(instance.datasource.data[0]);
1771
+ expect(value).toBe('1, 2');
1772
+ });
1773
+
1774
+ it('should format a ZdSelectMultiple using multiple formatterDataText', () => {
1775
+ const instance = setupInstance({
1776
+ name: 'Grid',
1777
+ component: 'ZdGridEditable',
1778
+ datasource: {
1779
+ data: [
1780
+ { id: 1, ingredients: [1, 2], ingredient_name: ['First (formatter)', 'Second (formatter)'] },
1781
+ ],
1782
+ },
1783
+ columns: [
1784
+ {
1785
+ name: 'ingredients',
1786
+ editable: true,
1787
+ componentProps: {
1788
+ name: 'column',
1789
+ component: 'ZdSelectMultiple',
1790
+ dataText: ['value', 'text'],
1791
+ dataValue: 'value',
1792
+ formatterDataText: ['ingredients', 'ingredient_name'],
1793
+ datasource: {
1794
+ uniqueKey: 'value',
1795
+ data: [
1796
+ { value: 1, text: 'First' },
1797
+ { value: 2, text: 'Second' },
1798
+ { value: 3, text: 'Third' },
1799
+ { value: 4, text: 'Fourth' },
1800
+ ],
1801
+ },
1802
+ },
1803
+ },
1804
+ ],
1805
+ });
1806
+ const column = instance.columns[0];
1807
+ const value = column.formatterByRow(instance.datasource.data[0]);
1808
+ expect(value).toBe('1 | First (formatter), 2 | Second (formatter)');
1809
+ });
1810
+
1811
+ it('should format a ZdSelectMultiple using multiple dataText and foreignColumns', () => {
1812
+ const instance = setupInstance({
1813
+ name: 'Grid',
1814
+ component: 'ZdGridEditable',
1815
+ datasource: {
1816
+ data: [
1817
+ { id: 1, ingredients: [1, 2], ingredient_name: ['First (formatter)', 'Second (formatter)'] },
1818
+ ],
1819
+ },
1820
+ columns: [
1821
+ {
1822
+ name: 'ingredients',
1823
+ editable: true,
1824
+ componentProps: {
1825
+ name: 'column',
1826
+ component: 'ZdSelectMultiple',
1827
+ dataText: ['value', 'text'],
1828
+ dataValue: 'value',
1829
+ foreignColumns: {
1830
+ value: 'ingredients',
1831
+ text: 'ingredient_name',
1832
+ },
1833
+ datasource: {
1834
+ uniqueKey: 'value',
1835
+ data: [
1836
+ { value: 1, text: 'First' },
1837
+ { value: 2, text: 'Second' },
1838
+ { value: 3, text: 'Third' },
1839
+ { value: 4, text: 'Fourth' },
1840
+ ],
1841
+ },
1842
+ },
1843
+ },
1844
+ ],
1845
+ });
1846
+ const column = instance.columns[0];
1847
+ const value = column.formatterByRow(instance.datasource.data[0]);
1848
+ expect(value).toBe('1 | First (formatter), 2 | Second (formatter)');
1849
+ });
1850
+
1851
+ it('should format value of column using dataText with mask', async () => {
1852
+ const instance = setupInstance({
1853
+ name: 'Grid',
1854
+ component: 'ZdGridEditable',
1855
+ datasource: {
1856
+ data: [
1857
+ { id: 1, ingredients: [1, 2], ingredient_name: ['First (formatter)', 'Second (formatter)'] },
1858
+ ],
1859
+ },
1860
+ columns: [
1861
+ {
1862
+ name: 'ingredients',
1863
+ editable: true,
1864
+ componentProps: {
1865
+ name: 'column',
1866
+ component: 'ZdSelectMultiple',
1867
+ formatterDataText: [{ name: 'ingredient_name', mask: 'a.a.a' }],
1868
+ dataText: [{ name: 'text', mask: 'a.a.a' }],
1869
+ dataValue: 'value',
1870
+ datasource: {
1871
+ uniqueKey: 'value',
1872
+ data: [
1873
+ { value: 1, text: 'First' },
1874
+ { value: 2, text: 'Second' },
1875
+ { value: 3, text: 'Third' },
1876
+ { value: 4, text: 'Fourth' },
1877
+ ],
1878
+ },
1879
+ },
1880
+ },
1881
+ ],
1882
+ });
1883
+ const column = instance.columns[0];
1884
+ const value = column.formatterByRow(instance.datasource.data[0]);
1885
+ expect(value).toBe('f.i.r, s.e.c');
1886
+ });
1887
+
1888
+ it('should format empty array or null values as a string', () => {
1889
+ const instance = new GridEditable({
1890
+ name: 'Grid',
1891
+ component: 'ZdGridEditable',
1892
+ columns: [
1893
+ {
1894
+ name: 'ingredients',
1895
+ editable: true,
1896
+ componentProps: {
1897
+ name: 'column',
1898
+ component: 'ZdSelectMultiple',
1899
+ dataText: 'text',
1900
+ dataValue: 'value',
1901
+ datasource: {
1902
+ uniqueKey: 'value',
1903
+ data: [
1904
+ { value: 1, text: 'name 1' },
1905
+ { value: 2, text: 'name 2' },
1906
+ { value: 3, text: 'name 3' },
1907
+ { value: 4, text: 'name 4' },
1908
+ ],
1909
+ },
1910
+ },
1911
+ },
1912
+ ],
1913
+ });
1914
+ const column = instance.columns[0];
1915
+ let value = column.formatterByRow({ id: 1, ingredients: [] });
1916
+ expect(value).toBe('');
1917
+
1918
+ value = column.formatterByRow({ id: 1, ingredients: null });
1919
+ expect(value).toBe('');
1920
+
1921
+ value = column.formatterByRow({ id: 1, ingredients: undefined });
1922
+ expect(value).toBe('');
1923
+ });
1924
+ });
1925
+
1926
+ describe('getCellWithAppliedConditions', () => {
1927
+ it('should return properties with applied contidtions', async () => {
1928
+ const instance = setupInstance({
1929
+ name: 'Grid',
1930
+ component: 'ZdGridEditable',
1931
+ datasource: {
1932
+ data: [
1933
+ {
1934
+ id: 1, code: 1, name: 'name 1', code2: 3,
1935
+ },
1936
+ {
1937
+ id: 2, code: 2, name: 'name 2', code2: 6,
1938
+ },
1939
+ ],
1940
+ },
1941
+ columns: [
1942
+ {
1943
+ name: 'code',
1944
+ editable: true,
1945
+ conditions: {
1946
+ editable: ({ row }: any) => row.id === 1,
1947
+ componentProps: {
1948
+ datasource: {
1949
+ limit: ({ row }: any) => row.id * 2,
1950
+ },
1951
+ },
1952
+ },
1953
+ },
1954
+ ],
1955
+ });
1956
+ instance.changeData();
1957
+ let row = instance.datasource.data[0];
1958
+ let column = instance.columns[0];
1959
+
1960
+ let appliedConditions = instance.getAppliedConditions({ row, column });
1961
+ expect(appliedConditions).toEqual({ editable: true, componentProps: { datasource: { limit: 2 } } });
1962
+
1963
+ row = instance.datasource.data[1];
1964
+ appliedConditions = instance.getAppliedConditions({ row, column });
1965
+ expect(appliedConditions).toEqual({ editable: false, componentProps: { datasource: { limit: 4 } } });
1966
+
1967
+ // grid with selectable calls this function with the selectable column that is not GridColumnEditable
1968
+ // this column does not have applyCondition
1969
+ instance.columns.unshift({ name: 'test' } as any);
1970
+ row = instance.datasource.data[0];
1971
+ column = instance.columns[0];
1972
+ appliedConditions = instance.getAppliedConditions({ row, column });
1973
+ expect(appliedConditions).toEqual({});
1974
+ });
1975
+ });
1976
+
1977
+ describe('Formatting Toggleable Inputs', () => {
1978
+ let structure: IGridEditableProps;
1979
+ let instance: GridEditable;
1980
+ let row1: IDictionary<any>;
1981
+ let row2: IDictionary<any>;
1982
+
1983
+ beforeEach(() => {
1984
+ row1 = { id: 1, name: 'name 1', code: true };
1985
+ row2 = { id: 2, name: 'name 2', code: false };
1986
+
1987
+ structure = {
1988
+ name: 'Grid',
1989
+ component: 'ZdGridEditable',
1990
+ datasource: {
1991
+ data: [row1, row2],
1992
+ },
1993
+ columns: [
1994
+ {
1995
+ name: 'code',
1996
+ editable: true,
1997
+ componentProps: {
1998
+ name: 'column',
1999
+ component: 'ZdCheckbox',
2000
+ },
2001
+ },
2002
+ ],
2003
+ };
2004
+ });
2005
+
2006
+ it('by default, should get boolean values', () => {
2007
+ instance = new GridEditable(structure);
2008
+
2009
+ expect(instance.columns[0].formatterByRow(row1)).toBeTruthy();
2010
+ expect(instance.columns[0].formatterByRow(row2)).toBeFalsy();
2011
+ });
2012
+
2013
+ it('should get trueValue and falseValue instead of default boolean if they are defined', () => {
2014
+ structure.columns = [
2015
+ {
2016
+ name: 'code',
2017
+ editable: true,
2018
+ componentProps: {
2019
+ name: 'column',
2020
+ component: 'ZdCheckbox',
2021
+ trueValue: 'T',
2022
+ falseValue: 'F',
2023
+ },
2024
+ },
2025
+ ];
2026
+
2027
+ row1 = { id: 1, name: 'name 1', code: 'T' };
2028
+ row2 = { id: 2, name: 'name 2', code: 'F' };
2029
+ structure.datasource = { data: [row1, row2] };
2030
+
2031
+ instance = new GridEditable(structure);
2032
+
2033
+ expect(instance.columns[0].formatterByRow(row1)).toBe('T');
2034
+ expect(instance.columns[0].formatterByRow(row2)).toBe('F');
2035
+ });
2036
+
2037
+ it('should get displayValues instead of trueValue and falseValue if all of them are defined', () => {
2038
+ structure.columns = [
2039
+ {
2040
+ name: 'code',
2041
+ editable: true,
2042
+ componentProps: {
2043
+ name: 'column',
2044
+ component: 'ZdCheckbox',
2045
+ trueValue: 'T',
2046
+ falseValue: 'F',
2047
+ trueDisplayValue: 'TRUE',
2048
+ falseDisplayValue: 'FALSE',
2049
+ },
2050
+ },
2051
+ ];
2052
+
2053
+ row1 = { id: 1, name: 'name 1', code: 'T' };
2054
+ row2 = { id: 2, name: 'name 2', code: 'F' };
2055
+ structure.datasource = { data: [row1, row2] };
2056
+
2057
+ instance = new GridEditable(structure);
2058
+
2059
+ expect(instance.columns[0].formatterByRow(row1)).toBe('TRUE');
2060
+ expect(instance.columns[0].formatterByRow(row2)).toBe('FALSE');
2061
+ });
2062
+
2063
+ it('should get icons instead of displayValues if all of them are defined', () => {
2064
+ structure.columns = [
2065
+ {
2066
+ name: 'code',
2067
+ editable: true,
2068
+ componentProps: {
2069
+ name: 'column',
2070
+ component: 'ZdCheckbox',
2071
+ trueDisplayValue: 'TRUE',
2072
+ falseDisplayValue: 'FALSE',
2073
+ trueIcon: 'checkboxOn',
2074
+ falseIcon: 'checkboxOff',
2075
+ },
2076
+ },
2077
+ ];
2078
+
2079
+ instance = new GridEditable(structure);
2080
+
2081
+ expect(instance.columns[0].formatterByRow(row1)).toBe('checkboxOn');
2082
+ expect(instance.columns[0].formatterByRow(row2)).toBe('checkboxOff');
2083
+ });
2084
+
2085
+ it('should test the focus event and the currentRow changing', () => {
2086
+ const focusFn = jest.fn();
2087
+ const newInstance = setupInstance({
2088
+ name: 'Grid',
2089
+ component: 'ZdGridEditable',
2090
+ columns: [
2091
+ {
2092
+ name: 'id',
2093
+ editable: true,
2094
+ align: 'right',
2095
+ componentProps: {
2096
+ name: 'column',
2097
+ component: 'ZdTextInput',
2098
+ },
2099
+ },
2100
+ {
2101
+ name: 'id1',
2102
+ editable: true,
2103
+ align: 'right',
2104
+ componentProps: {
2105
+ name: 'column',
2106
+ component: 'ZdTextInput',
2107
+ events: {
2108
+ focus: focusFn,
2109
+ },
2110
+ },
2111
+ },
2112
+ ],
2113
+ datasource: {
2114
+ limit: 2,
2115
+ page: 1,
2116
+ data: [
2117
+ { id: 1 },
2118
+ { id: 2 },
2119
+ ],
2120
+ },
2121
+ });
2122
+ const comp1: any = newInstance.getEditableComponent(newInstance.columns[0] as GridColumnEditable, { id: 1 });
2123
+ const textInput1 = new TextInput(comp1);
2124
+ comp1.events.focus({ component: textInput1 });
2125
+ expect(newInstance.datasource.currentRow).toEqual({ id: 1 });
2126
+
2127
+ const comp2: any = newInstance.getEditableComponent(newInstance.columns[1] as GridColumnEditable, { id: 2 });
2128
+ const textInput2 = new TextInput(comp2);
2129
+ comp2.events.focus({ component: textInput2 });
2130
+ expect(focusFn).toHaveBeenCalled();
2131
+ expect(newInstance.datasource.currentRow).toEqual({ id: 2 });
2132
+ });
2133
+ });
2134
+
2135
+ describe('addNewRow', () => {
2136
+ it('should add a new row to the datasource data and apply it to the editedRow property too', async () => {
2137
+ const instance = new GridEditable({
2138
+ name: 'Grid',
2139
+ component: 'ZdGridEditable',
2140
+ datasource: {
2141
+ page: 1,
2142
+ data: [
2143
+ { id: 1 },
2144
+ ],
2145
+ },
2146
+ });
2147
+ instance.onCreated();
2148
+ const newRow1 = { id: 2 };
2149
+ const newRow2 = { id: 3 };
2150
+ await instance.addNewRow(newRow1, 'start');
2151
+ await instance.addNewRow(newRow2);
2152
+ expect(instance.datasource.data[0]).toEqual({ id: 2, __added_row: true });
2153
+ expect(instance.datasource.data[2]).toEqual({ id: 3, __added_row: true });
2154
+ expect(instance.getEditedRows()).toEqual([{ id: 2 }, { id: 3 }]);
2155
+ await instance.addNewRow({});
2156
+ expect(instance.datasource.data.length).toBe(4);
2157
+ expect(instance.getEditedRows()).toEqual([{ id: 2 }, { id: 3 }]);
2158
+ });
2159
+
2160
+ it('should remove new rows calling cancelEditedRows', async () => {
2161
+ const instance = new GridEditable({
2162
+ name: 'Grid',
2163
+ component: 'ZdGridEditable',
2164
+ datasource: {
2165
+ page: 1,
2166
+ data: [
2167
+ { id: 1 },
2168
+ ],
2169
+ },
2170
+ });
2171
+ instance.onCreated();
2172
+ const newRow1 = { id: 2 };
2173
+ const newRow2 = { id: 3 };
2174
+ await instance.addNewRow(newRow1, 'start');
2175
+ await instance.addNewRow(newRow2);
2176
+ expect(instance.datasource.data.length).toBe(3);
2177
+ await instance.cancelEditedRows();
2178
+ expect(instance.datasource.data.length).toBe(1);
2179
+ });
2180
+
2181
+ it('should remove new rows calling cancelEditedRows with RestDatasource', async () => {
2182
+ const spy = jest.spyOn(Http, 'get').mockImplementation(() => Promise.resolve({
2183
+ data: {
2184
+ data: [{ id: 1 }],
2185
+ pagination: { page: 1, total: 1, limit: 2 },
2186
+ },
2187
+ }));
2188
+
2189
+ const instance = setupInstance({
2190
+ name: 'Grid',
2191
+ component: 'ZdGridEditable',
2192
+ datasource: {
2193
+ uniqueKey: 'id',
2194
+ type: 'rest',
2195
+ route: '/menu',
2196
+ lazyLoad: true,
2197
+ limit: 2,
2198
+ page: 1,
2199
+ },
2200
+ });
2201
+
2202
+ await instance.datasource.get();
2203
+ expect(instance.datasource.data.length).toBe(1);
2204
+ const newRow1 = { id: 2 };
2205
+ const newRow2 = { id: 3 };
2206
+ await instance.addNewRow(newRow1, 'start');
2207
+ await instance.addNewRow(newRow2);
2208
+ expect(instance.datasource.data.length).toBe(3);
2209
+ await instance.cancelEditedRows();
2210
+ expect(instance.datasource.data.length).toBe(1);
2211
+
2212
+ spy.mockClear();
2213
+ });
2214
+ });
2215
+
2216
+ describe('getComponent', () => {
2217
+ it('should get the component in specified cell', async () => {
2218
+ const instance = setupInstance({
2219
+ name: 'Grid',
2220
+ component: 'ZdGridEditable',
2221
+ columns: [
2222
+ {
2223
+ name: 'id',
2224
+ label: 'ID',
2225
+ },
2226
+ {
2227
+ name: 'name',
2228
+ label: 'Name',
2229
+ editable: true,
2230
+ componentProps: {
2231
+ name: 'name-input',
2232
+ component: 'ZdTextInput',
2233
+ },
2234
+ },
2235
+ ],
2236
+ datasource: {
2237
+ uniqueKey: 'id',
2238
+ data: [
2239
+ { id: '1', name: 'Employee 1' },
2240
+ ],
2241
+ },
2242
+ });
2243
+
2244
+ const col = instance.columns[1];
2245
+ const row = instance.datasource.data[0];
2246
+ const component = instance.getEditableComponent(col, row);
2247
+ Metadata.addInstance(component);
2248
+
2249
+ const metadataComp = Metadata.getInstance('name_editable_1');
2250
+ const instanceComp = instance.getComponent('1', 'name');
2251
+ expect(instanceComp).toEqual(metadataComp);
2252
+ });
2253
+ });
2254
+
2255
+ describe('setLookupDataFilter()', () => {
2256
+ it('should not filter to lookupDatasorce', async () => {
2257
+ const setFilterFn = jest.fn();
2258
+ const spyDatasource = jest.spyOn(Datasource.prototype, 'setFilter').mockImplementation(setFilterFn);
2259
+
2260
+ const instance = new GridEditable({
2261
+ name: 'Grid',
2262
+ component: 'ZdGridEditable',
2263
+ columns: [
2264
+ {
2265
+ name: 'code',
2266
+ editable: true,
2267
+ componentProps: {
2268
+ name: 'column',
2269
+ component: 'ZdSelect',
2270
+ dataText: 'text',
2271
+ formatterDataText: 'name',
2272
+ dataValue: 'value',
2273
+ dataValueOut: [
2274
+ { column: 'text', columnOnGrid: 'name' },
2275
+ ],
2276
+ },
2277
+ },
2278
+ ],
2279
+ });
2280
+
2281
+ const col1 = instance.columns[0];
2282
+
2283
+ col1.setLookupDataFilter({ id: 1 });
2284
+
2285
+ expect(setFilterFn).not.toHaveBeenCalled();
2286
+ spyDatasource.mockClear();
2287
+ });
2288
+
2289
+ it('should set a filter to lookupDatasorce', () => {
2290
+ const setFilterFn = jest.fn();
2291
+ const spyDatasource = jest.spyOn(Datasource.prototype, 'setFilter').mockImplementation(setFilterFn);
2292
+
2293
+ const instance = new GridEditable({
2294
+ name: 'Grid',
2295
+ component: 'ZdGridEditable',
2296
+ datasource: {
2297
+ data: [
2298
+ {
2299
+ id: 1, code: 1,
2300
+ },
2301
+ ],
2302
+ },
2303
+ columns: [
2304
+ {
2305
+ name: 'code',
2306
+ editable: true,
2307
+ componentProps: {
2308
+ name: 'column',
2309
+ component: 'ZdSelect',
2310
+ dataText: 'text',
2311
+ formatterDataText: 'name',
2312
+ dataValue: 'value',
2313
+ dataValueOut: [
2314
+ { column: 'text', columnOnGrid: 'name' },
2315
+ ],
2316
+ datasource: {
2317
+ data: [
2318
+ { value: 1, text: 'name 1' },
2319
+ { value: 2, text: 'name 2' },
2320
+ ],
2321
+ },
2322
+ },
2323
+ },
2324
+ ],
2325
+ });
2326
+
2327
+ const col1 = instance.columns[0];
2328
+
2329
+ col1.setLookupDataFilter({ id: 1 });
2330
+
2331
+ expect(setFilterFn).toHaveBeenCalled();
2332
+ spyDatasource.mockClear();
2333
+ });
2334
+ });
2335
+
2336
+ describe('changeData()', () => {
2337
+ let instance: GridEditable;
2338
+
2339
+ beforeEach(() => {
2340
+ instance = setupInstance({
2341
+ name: 'grid',
2342
+ component: 'ZdGridEditable',
2343
+ columns: [
2344
+ { name: 'id' },
2345
+ { name: 'name' },
2346
+ ],
2347
+ datasource: {
2348
+ uniqueKey: 'id',
2349
+ data: [],
2350
+ },
2351
+ });
2352
+ instance.editing = true;
2353
+ });
2354
+
2355
+ it('should do nothing when data is not provided', () => {
2356
+ const data = [{ id: null, name: '' }, { id: 1, name: '1' }];
2357
+ instance.datasource.data = data;
2358
+ instance.updateRow({ id: 1 });
2359
+ instance.updateRow({ id: null });
2360
+ instance.changeData();
2361
+ expect(instance.getEditedRows()).toEqual([{ id: 1 }]);
2362
+ });
2363
+
2364
+ it('should handle case where uniqueKey is not zero but falsy', () => {
2365
+ const data = [{ id: '', name: 'null' }, { id: 1, name: '1' }];
2366
+ instance.datasource.data = data;
2367
+ instance.updateRow({ id: 1 });
2368
+ instance.updateRow({ id: '' });
2369
+ instance.changeData(data);
2370
+ expect(instance.getEditedRows()).toEqual([{ id: 1 }]);
2371
+ });
2372
+ });
2373
+
2374
+ describe('enterEdit', () => {
2375
+ let instance: GridEditable;
2376
+
2377
+ beforeEach(() => {
2378
+ instance = new GridEditable({
2379
+ name: 'grid',
2380
+ component: 'ZdGridEditable',
2381
+ columns: [
2382
+ { name: 'id' },
2383
+ { name: 'name' },
2384
+ ],
2385
+ datasource: {
2386
+ uniqueKey: 'id',
2387
+ data: [],
2388
+ },
2389
+ });
2390
+ instance.editing = true;
2391
+ });
2392
+
2393
+ it('should throw an error if viewEnterEdit is not assigned', () => {
2394
+ expect(() => {
2395
+ instance.enterEdit('1', 'id');
2396
+ }).toThrow('viewEnterEdit method not assigned');
2397
+ });
2398
+
2399
+ it('should call viewEnterEdit with the correct arguments when viewEnterEdit is assigned', () => {
2400
+ const viewEnterEdit = jest.fn();
2401
+ instance.setViewEnterEdit(viewEnterEdit);
2402
+ instance.enterEdit('1', 'id');
2403
+
2404
+ expect(viewEnterEdit).toHaveBeenCalledWith('1', 'id');
2405
+ });
2406
+ });
2407
+
2408
+ describe('inlineEdit', () => {
2409
+ it('should not call inlineEdit event if the grid is already editing', () => {
2410
+ const inlineEditFn = jest.fn();
2411
+ const instance = setupInstance({
2412
+ name: 'Grid',
2413
+ component: 'ZdGridEditable',
2414
+ columns: [
2415
+ { name: 'id', editable: true },
2416
+ ],
2417
+ datasource: {
2418
+ limit: 2,
2419
+ page: 1,
2420
+ data: [
2421
+ { id: 1 },
2422
+ ],
2423
+ },
2424
+ events: {
2425
+ inlineEdit: inlineEditFn,
2426
+ },
2427
+ });
2428
+ instance.editing = true;
2429
+ instance.inlineEdit(instance.datasource.data[0], instance.columns[0], {} as Event);
2430
+ expect(inlineEditFn).not.toHaveBeenCalled();
2431
+ });
2432
+ });
2433
+
2434
+ describe('isAdded', () => {
2435
+ it('should check if the row is an added row', async () => {
2436
+ const grid = setupInstance({
2437
+ name: 'grid',
2438
+ component: 'ZdGridEditable',
2439
+ datasource: { data: [], uniqueKey: 'id' },
2440
+ });
2441
+
2442
+ await grid.addNewRow({ id: 1 });
2443
+
2444
+ expect(grid.isAdded({ id: 1 })).toBeTruthy();
2445
+ expect(grid.isAdded({ id: 2 })).toBeFalsy();
2446
+ });
2447
+ });
2448
+
2449
+ describe('getAddedRows()', () => {
2450
+ it('should retrieve the rows that were added', async () => {
2451
+ const grid = setupInstance({
2452
+ name: 'grid',
2453
+ component: 'ZdGridEditable',
2454
+ columns: [
2455
+ { name: 'name' },
2456
+ ],
2457
+ datasource: { data: [], uniqueKey: 'id' },
2458
+ });
2459
+
2460
+ await grid.addNewRow({ id: '1', name: 'first' });
2461
+ await grid.addNewRow({ id: '2', name: 'second' });
2462
+ grid.updateCell('1', 'name', 'new value');
2463
+
2464
+ expect(grid.getAddedRows()).toEqual([{ id: '1', name: 'new value' }, { id: '2', name: 'second' }]);
2465
+ });
2466
+
2467
+ it('should retrieve the rows that were added, synced with cell updates', async () => {
2468
+ const grid = setupInstance({
2469
+ name: 'grid',
2470
+ component: 'ZdGridEditable',
2471
+ columns: [
2472
+ { name: 'name' },
2473
+ ],
2474
+ datasource: { data: [], uniqueKey: 'id' },
2475
+ });
2476
+
2477
+ await grid.addNewRow({ id: '1', name: 'first' });
2478
+ await grid.addNewRow({ id: '2', name: 'second' });
2479
+ grid.updateCell('1', 'name', 'new value');
2480
+ grid.updateCell('1', 'name', 'first');
2481
+
2482
+ expect(grid.getAddedRows()).toEqual([{ id: '1', name: 'first' }, { id: '2', name: 'second' }]);
2483
+ });
2484
+ });
2485
+
2486
+ describe('cancel column', () => {
2487
+ it('should call DataEditor cancelAddedRow', () => {
2488
+ const grid = new GridEditable({
2489
+ name: 'grid',
2490
+ component: 'ZdGridEditable',
2491
+ showCancelColumn: true,
2492
+ columns: [
2493
+ { name: 'name' },
2494
+ ],
2495
+ datasource: { data: [{ id: '1' }], uniqueKey: 'id' },
2496
+ });
2497
+ const spy = jest.fn();
2498
+ grid.cancelAddedRow = spy;
2499
+ });
2500
+ });
2501
+
2502
+ describe('Grid delegations', () => {
2503
+ beforeEach(() => {
2504
+ jest.resetAllMocks();
2505
+ });
2506
+
2507
+ it('should call dataEditorWithAdd delegation', () => {
2508
+ const spyObj = spyOnAllMethods(DataEditorWithAdd.prototype);
2509
+
2510
+ const instance = setupInstance({
2511
+ name: 'grid',
2512
+ component: 'ZdGridEditable',
2513
+ });
2514
+
2515
+ instance.addCancelColumn();
2516
+ expect(spyObj.addCancelColumn).toHaveBeenCalled();
2517
+
2518
+ instance.getCancelColumnProps();
2519
+ expect(spyObj.getCancelColumnProps).toHaveBeenCalled();
2520
+
2521
+ instance.isAdded({ id: '1' });
2522
+ expect(spyObj.isAdded).toHaveBeenCalledWith({ id: '1' });
2523
+
2524
+ instance.cancelAddedRow('1');
2525
+ expect(spyObj.cancelAddedRow).toHaveBeenCalledWith('1');
2526
+
2527
+ instance.cancelAddedRows();
2528
+ expect(spyObj.cancelAddedRows).toHaveBeenCalled();
2529
+
2530
+ instance.getAddedRows();
2531
+ expect(spyObj.getAddedRows).toHaveBeenCalled();
2532
+
2533
+ instance.addNewRow({ id: '1' });
2534
+ expect(spyObj.addNewRow).toHaveBeenCalledWith({ id: '1' }, undefined);
2535
+
2536
+ instance.setViewEnterEdit(() => {});
2537
+ expect(spyObj.setViewEnterEdit).toHaveBeenCalledTimes(1)
2538
+
2539
+ instance.getVisibleValue({ id: '1' }, { name: 'name' });
2540
+ expect(spyObj.getVisibleValue).toHaveBeenCalledWith({ id: '1' }, { name: 'name' });
2541
+
2542
+ instance.getEditableComponent({ name: 'name' }, { id: '1' });
2543
+ expect(spyObj.getEditableComponent).toHaveBeenCalledWith({ name: 'name' }, { id: '1' });
2544
+
2545
+ instance.isEdited({ name: 'name' }, { id: '1' });
2546
+ expect(spyObj.isEdited).toHaveBeenCalledWith({ name: 'name' }, { id: '1' });
2547
+
2548
+ instance.isValid({ name: 'name' }, { id: '1' });
2549
+ expect(spyObj.isValid).toHaveBeenCalledWith({ name: 'name' }, { id: '1' }, undefined);
2550
+
2551
+ instance.isGridValid();
2552
+ expect(spyObj.isGridValid).toHaveBeenCalled();
2553
+
2554
+ instance.getComponent('1', 'name');
2555
+ expect(spyObj.getComponent).toHaveBeenCalledWith('1', 'name');
2556
+
2557
+ instance.updateRow({ id: '1' });
2558
+ expect(spyObj.updateRow).toHaveBeenCalledWith({ id: '1' });
2559
+
2560
+ instance.updateCell('1', 'name', 'value');
2561
+ expect(spyObj.updateCell).toHaveBeenCalledWith('1', 'name', 'value');
2562
+
2563
+ instance.changeData();
2564
+ expect(spyObj.changeData).toHaveBeenCalled();
2565
+
2566
+ instance.enterEdit('1', 'name');
2567
+ expect(spyObj.enterEdit).toHaveBeenCalledWith('1', 'name');
2568
+
2569
+ instance.cancelEditedRows();
2570
+ expect(spyObj.cancelEditedRows).toHaveBeenCalled();
2571
+
2572
+ instance.saveEditedRows();
2573
+ expect(spyObj.saveEditedRows).toHaveBeenCalled();
2574
+
2575
+ instance.getCanEditRow({ id: '1' });
2576
+ expect(spyObj.getCanEditRow).toHaveBeenCalledWith({ id: '1' });
2577
+
2578
+ instance.reapplyCanEditRow({ id: '1' });
2579
+ expect(spyObj.reapplyCanEditRow).toHaveBeenCalledWith({ id: '1' });
2580
+
2581
+ instance.getEditedRows();
2582
+ expect(spyObj.getEditedRows).toHaveBeenCalled();
2583
+
2584
+ instance.checkValid({ name: 'name' }, { id: '1' });
2585
+ expect(spyObj.checkValid).toHaveBeenCalledWith({ name: 'name' }, { id: '1' });
2586
+
2587
+ instance.getEditedRow({ id: '1' });
2588
+ expect(spyObj.getEditedRow).toHaveBeenCalledWith({ id: '1' });
2589
+ });
2590
+
2591
+ it('should call TableActionBuilder delegation', () => {
2592
+ const spy = jest.spyOn(TableActionBuilder.prototype, 'getActionComponent');
2593
+
2594
+ const instance = setupInstance({
2595
+ name: 'grid',
2596
+ component: 'ZdGridEditable',
2597
+ });
2598
+
2599
+ instance.getActionComponent({ name: 'name' }, { name: 'name' } as any, { id: '1' });
2600
+ expect(spy).toHaveBeenCalledWith({ name: 'name' }, { name: 'name' }, { id: '1' }, undefined);
2601
+ });
2602
+
2603
+ it('should call IterableTable delegation', () => {
2604
+ const spyChangeOrder = jest.spyOn(IterableTable.prototype, 'changeOrder').mockImplementation(async () => {});
2605
+ const spySelectCell = jest.spyOn(IterableTable.prototype, 'selectCell').mockImplementation(() => {});
2606
+ const spyGetRowStyleConditions = jest.spyOn(IterableTable.prototype, 'getRowStyleConditions').mockImplementation(() => ({}));
2607
+ const spyDeleteRows = jest.spyOn(IterableTable.prototype, 'deleteRows').mockImplementation(async () => { return [] });
2608
+ const spyReapplyRowStyleConditions = jest.spyOn(IterableTable.prototype, 'reapplyRowStyleConditions').mockImplementation(async () => {});
2609
+
2610
+ const instance = new GridEditable({
2611
+ name: 'grid',
2612
+ component: 'ZdGridEditable',
2613
+ });
2614
+
2615
+ instance.changeOrder([{ key: 'name', order: 'asc' }]);
2616
+ expect(spyChangeOrder).toHaveBeenCalledWith([{ key: 'name', order: 'asc' }]);
2617
+
2618
+ instance.selectCell({ id: '1' }, { name: 'name' } as any);
2619
+ expect(spySelectCell).toHaveBeenCalledWith({ id: '1' }, { name: 'name' });
2620
+
2621
+ instance.getRowStyleConditions({ id: '1' });
2622
+ expect(spyGetRowStyleConditions).toHaveBeenCalledWith({ id: '1' });
2623
+
2624
+ instance.reapplyRowStyleConditions({ id: '1' });
2625
+ expect(spyReapplyRowStyleConditions).toHaveBeenCalledWith({ id: '1' });
2626
+
2627
+ instance.deleteRows();
2628
+ expect(spyDeleteRows).toHaveBeenCalled();
2629
+ });
2630
+
2631
+ it('should call DataSelector delegation', () => {
2632
+ const spySelectAll = jest.spyOn(DataSelector.prototype, 'selectAll').mockImplementation(() => {});
2633
+ const spyToggleRow = jest.spyOn(DataSelector.prototype, 'toggleRow').mockImplementation(() => {});
2634
+ const spySelectRow = jest.spyOn(DataSelector.prototype, 'selectRow').mockImplementation(() => {});
2635
+ const spyCallDisableSelection = jest.spyOn(DataSelector.prototype, 'callDisableSelection').mockImplementation(() => (true));
2636
+
2637
+ const instance = new GridEditable({
2638
+ name: 'grid',
2639
+ component: 'ZdGridEditable',
2640
+ });
2641
+
2642
+ instance.selectAll(true);
2643
+ expect(spySelectAll).toHaveBeenCalledWith(true);
2644
+
2645
+ instance.toggleRow({ id: '1' });
2646
+ expect(spyToggleRow).toHaveBeenCalledWith({ id: '1' });
2647
+
2648
+ instance.selectRow({ id: '1' }, true);
2649
+ expect(spySelectRow).toHaveBeenCalledWith({ id: '1' }, true);
2650
+
2651
+ instance.callDisableSelection({ id: '1' });
2652
+ expect(spyCallDisableSelection).toHaveBeenCalledWith({ id: '1' });
2653
+ });
2654
+
2655
+ it('should call GridEditableEvents delegation', () => {
2656
+ const spyCellClick = jest.spyOn(GridEditableEvents.prototype, 'cellClick').mockImplementation(() => {});
2657
+ const spyCellClickEvent = jest.spyOn(GridEditableEvents.prototype, 'cellClickEvent').mockImplementation(() => {});
2658
+ const spyCellDoubleClick = jest.spyOn(GridEditableEvents.prototype, 'cellDoubleClick').mockImplementation(() => {});
2659
+ const spyRowDoubleClick = jest.spyOn(GridEditableEvents.prototype, 'rowDoubleClick').mockImplementation(() => {});
2660
+ const spyInlineEdit = jest.spyOn(GridEditableEvents.prototype, 'inlineEdit').mockImplementation(() => {});
2661
+
2662
+ const instance = new GridEditable({
2663
+ name: 'grid',
2664
+ component: 'ZdGridEditable',
2665
+ });
2666
+
2667
+ instance.cellClick({ id: '1' }, { name: 'name' } as any, {} as any, {} as any);
2668
+ expect(spyCellClick).toHaveBeenCalledWith({ id: '1' }, { name: 'name' }, {} as any, {} as any);
2669
+
2670
+ instance.cellClickEvent({ id: '1' }, { name: 'name' } as any, {} as any, {} as any);
2671
+ expect(spyCellClickEvent).toHaveBeenCalledWith({ id: '1' }, { name: 'name' }, {} as any, {} as any);
2672
+
2673
+ instance.cellDoubleClick({ id: '1' }, { name: 'name' } as any, {} as any, {} as any);
2674
+ expect(spyCellDoubleClick).toHaveBeenCalledWith({ id: '1' }, { name: 'name' }, {} as any, {} as any);
2675
+
2676
+ instance.inlineEdit({ id: '1' }, { name: 'name' } as any, {} as any, {} as any);
2677
+ expect(spyInlineEdit).toHaveBeenCalledWith({ id: '1' }, { name: 'name' }, {} as any, {} as any);
2678
+
2679
+ instance.rowDoubleClick({ id: '1' }, { name: 'name' } as any, {} as any);
2680
+ expect(spyRowDoubleClick).toHaveBeenCalledWith({ id: '1' }, { name: 'name' }, {} as any);
2681
+ });
2682
+
2683
+ it('should call DataNavigator delegation', () => {
2684
+ const spyNavigateDatasource = jest.spyOn(DataNavigator.prototype, 'navigateDatasource').mockImplementation(() => {});
2685
+ const spyNavigatePageUp = jest.spyOn(DataNavigator.prototype, 'navigatePageUp').mockImplementation(() => {});
2686
+ const spyNavigatePageDown = jest.spyOn(DataNavigator.prototype, 'navigatePageDown').mockImplementation(() => {});
2687
+
2688
+ const instance = new GridEditable({
2689
+ name: 'grid',
2690
+ component: 'ZdGridEditable',
2691
+ });
2692
+
2693
+ instance.navigateDatasource('up');
2694
+ expect(spyNavigateDatasource).toHaveBeenCalledWith('up');
2695
+
2696
+ instance.navigatePageUp();
2697
+ expect(spyNavigatePageUp).toHaveBeenCalled();
2698
+
2699
+ instance.navigatePageDown();
2700
+ expect(spyNavigatePageDown).toHaveBeenCalled();
2701
+ });
2702
+
2703
+ it('should call ViewNavigator delegation', () => {
2704
+ const spyNavigateLeft = jest.spyOn(ViewNavigator.prototype, 'navigateLeft').mockImplementation(() => {});
2705
+ const spyNavigateRight = jest.spyOn(ViewNavigator.prototype, 'navigateRight').mockImplementation(() => {});
2706
+ const spyNavigateUp = jest.spyOn(ViewNavigator.prototype, 'navigateUp').mockImplementation(() => {});
2707
+ const spyNavigateDown = jest.spyOn(ViewNavigator.prototype, 'navigateDown').mockImplementation(() => {});
2708
+ const spySetViewNavigate = jest.spyOn(ViewNavigator.prototype, 'setViewNavigate').mockImplementation(() => {});
2709
+
2710
+ const instance = new GridEditable({
2711
+ name: 'grid',
2712
+ component: 'ZdGridEditable',
2713
+ });
2714
+
2715
+ instance.cellSelection = true;
2716
+
2717
+ instance.navigateLeft({} as any);
2718
+ expect(spyNavigateLeft).toHaveBeenCalledWith({} as any);
2719
+
2720
+ instance.navigateRight({} as any);
2721
+ expect(spyNavigateRight).toHaveBeenCalledWith({} as any);
2722
+
2723
+ instance.navigateUp();
2724
+ expect(spyNavigateUp).toHaveBeenCalled();
2725
+
2726
+ instance.navigateDown();
2727
+ expect(spyNavigateDown).toHaveBeenCalled();
2728
+
2729
+ instance.setViewNavigate(() => {});
2730
+ expect(spySetViewNavigate).toHaveBeenCalled();
2731
+ });
2732
+ });
2733
+ });