@talxis/base-controls 1.2605.1 → 1.2606.2

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 (283) hide show
  1. package/dist/components/DatasetControl/EditColumns/OptionText/OptionText.js +1 -2
  2. package/dist/components/DatasetControl/EditColumns/OptionText/OptionText.js.map +1 -1
  3. package/dist/components/Grid/cells/cell/Cell.js +2 -6
  4. package/dist/components/Grid/cells/cell/Cell.js.map +1 -1
  5. package/dist/components/Grid/column-headers/column-header/ColumnHeader.js +1 -1
  6. package/dist/components/Grid/column-headers/column-header/ColumnHeader.js.map +1 -1
  7. package/dist/components/Grid/grid/ag-grid/AgGridModel.js +1 -1
  8. package/dist/components/Grid/grid/ag-grid/AgGridModel.js.map +1 -1
  9. package/dist/components/Lookup/Lookup.js +4 -1
  10. package/dist/components/Lookup/Lookup.js.map +1 -1
  11. package/dist/components/Lookup/components/TargetSelector.js +1 -1
  12. package/dist/components/Lookup/components/TargetSelector.js.map +1 -1
  13. package/dist/components/Lookup/hooks/useLookup.d.ts +8 -0
  14. package/dist/components/Lookup/translations.d.ts +8 -0
  15. package/dist/components/Lookup/translations.js +8 -0
  16. package/dist/components/Lookup/translations.js.map +1 -1
  17. package/dist/components/TaskGrid/TaskGrid.js +5 -6
  18. package/dist/components/TaskGrid/TaskGrid.js.map +1 -1
  19. package/dist/components/TaskGrid/TaskGridDatasetControl.d.ts +18 -5
  20. package/dist/components/TaskGrid/TaskGridDatasetControl.js +63 -30
  21. package/dist/components/TaskGrid/TaskGridDatasetControl.js.map +1 -1
  22. package/dist/components/TaskGrid/TaskGridDatasetControlFactory.d.ts +3 -2
  23. package/dist/components/TaskGrid/TaskGridDatasetControlFactory.js +10 -5
  24. package/dist/components/TaskGrid/TaskGridDatasetControlFactory.js.map +1 -1
  25. package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/AddTaskButton.js +3 -8
  26. package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/AddTaskButton.js.map +1 -1
  27. package/dist/components/TaskGrid/components/grid/cell-renderers/lookup-many/LookupManyCellRenderer.d.ts +7 -0
  28. package/dist/components/TaskGrid/components/grid/cell-renderers/lookup-many/LookupManyCellRenderer.js +102 -0
  29. package/dist/components/TaskGrid/components/grid/cell-renderers/lookup-many/LookupManyCellRenderer.js.map +1 -0
  30. package/dist/components/TaskGrid/components/grid/cell-renderers/lookup-many/index.d.ts +1 -0
  31. package/dist/components/TaskGrid/components/grid/cell-renderers/lookup-many/index.js +2 -0
  32. package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.d.ts +1 -0
  33. package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.js +4 -5
  34. package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.js.map +1 -1
  35. package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/index.js +1 -1
  36. package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/styles.d.ts +0 -6
  37. package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/styles.js +0 -6
  38. package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/styles.js.map +1 -1
  39. package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.d.ts +2 -7
  40. package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.js +47 -16
  41. package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.js.map +1 -1
  42. package/dist/components/TaskGrid/components/grid/grid-drag-handler/GridDragHandler.js.map +1 -1
  43. package/dist/components/TaskGrid/components/grid/group-cell/styles.d.ts +3 -0
  44. package/dist/components/TaskGrid/components/grid/group-cell/styles.js +3 -0
  45. package/dist/components/TaskGrid/components/grid/group-cell/styles.js.map +1 -1
  46. package/dist/components/TaskGrid/components/grid/lookup-many/LookupMany.d.ts +13 -0
  47. package/dist/components/TaskGrid/components/grid/lookup-many/LookupMany.js +84 -0
  48. package/dist/components/TaskGrid/components/grid/lookup-many/LookupMany.js.map +1 -0
  49. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/ColorfulLookupMany.d.ts +5 -0
  50. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/ColorfulLookupMany.js +12 -0
  51. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/ColorfulLookupMany.js.map +1 -0
  52. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/index.d.ts +2 -0
  53. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/index.js +13 -0
  54. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/index.js.map +1 -0
  55. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/multi-value-container/MultiValueContainer.d.ts +3 -0
  56. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/multi-value-container/MultiValueContainer.js +17 -0
  57. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/multi-value-container/MultiValueContainer.js.map +1 -0
  58. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/multi-value-container/index.d.ts +1 -0
  59. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/multi-value-container/index.js +2 -0
  60. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/Option.d.ts +3 -0
  61. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/Option.js +17 -0
  62. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/Option.js.map +1 -0
  63. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/index.d.ts +1 -0
  64. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/index.js +2 -0
  65. package/dist/components/TaskGrid/{data-providers/custom-columns-data-provider → components/grid/lookup-many/colorful-lookup-many/components/option}/index.js.map +1 -1
  66. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/styles.d.ts +14 -0
  67. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/styles.js +21 -0
  68. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/styles.js.map +1 -0
  69. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/context.d.ts +4 -0
  70. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/context.js +9 -0
  71. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/context.js.map +1 -0
  72. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/index.d.ts +1 -0
  73. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/index.js +2 -0
  74. package/dist/components/TaskGrid/{data-providers/saved-query-data-provider → components/grid/lookup-many/colorful-lookup-many}/index.js.map +1 -1
  75. package/dist/components/TaskGrid/components/grid/lookup-many/components/components.d.ts +11 -0
  76. package/dist/components/TaskGrid/components/grid/lookup-many/components/components.js +17 -0
  77. package/dist/components/TaskGrid/components/grid/lookup-many/components/components.js.map +1 -0
  78. package/dist/components/TaskGrid/components/grid/lookup-many/components/index.d.ts +1 -0
  79. package/dist/components/TaskGrid/components/grid/lookup-many/components/index.js +2 -0
  80. package/dist/components/TaskGrid/components/grid/lookup-many/components/index.js.map +1 -0
  81. package/dist/components/TaskGrid/components/grid/lookup-many/components/menu/Menu.d.ts +3 -0
  82. package/dist/components/TaskGrid/components/grid/lookup-many/components/menu/Menu.js +10 -0
  83. package/dist/components/TaskGrid/components/grid/lookup-many/components/menu/Menu.js.map +1 -0
  84. package/dist/components/TaskGrid/components/grid/lookup-many/components/menu/index.d.ts +1 -0
  85. package/dist/components/TaskGrid/components/grid/lookup-many/components/menu/index.js +2 -0
  86. package/dist/components/TaskGrid/components/grid/lookup-many/components/menu/index.js.map +1 -0
  87. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/MultiValueContainer.d.ts +7 -0
  88. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/MultiValueContainer.js +16 -0
  89. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/MultiValueContainer.js.map +1 -0
  90. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/index.d.ts +1 -0
  91. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/index.js +2 -0
  92. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/index.js.map +1 -0
  93. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/styles.d.ts +18 -0
  94. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/styles.js +24 -0
  95. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/styles.js.map +1 -0
  96. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/MultiValueLabel.d.ts +3 -0
  97. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/MultiValueLabel.js +21 -0
  98. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/MultiValueLabel.js.map +1 -0
  99. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/index.d.ts +1 -0
  100. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/index.js +2 -0
  101. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/index.js.map +1 -0
  102. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/styles.d.ts +15 -0
  103. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/styles.js +22 -0
  104. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/styles.js.map +1 -0
  105. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-remove/MultiValueRemove.d.ts +3 -0
  106. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-remove/MultiValueRemove.js +18 -0
  107. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-remove/MultiValueRemove.js.map +1 -0
  108. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-remove/styles.d.ts +22 -0
  109. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-remove/styles.js +28 -0
  110. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-remove/styles.js.map +1 -0
  111. package/dist/components/TaskGrid/components/grid/lookup-many/context.d.ts +4 -0
  112. package/dist/components/TaskGrid/components/grid/lookup-many/context.js +9 -0
  113. package/dist/components/TaskGrid/components/grid/lookup-many/context.js.map +1 -0
  114. package/dist/components/TaskGrid/components/grid/lookup-many/index.d.ts +4 -0
  115. package/dist/components/TaskGrid/components/grid/lookup-many/index.js +5 -0
  116. package/dist/components/TaskGrid/components/grid/lookup-many/index.js.map +1 -0
  117. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/PeopleLookupMany.d.ts +5 -0
  118. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/PeopleLookupMany.js +12 -0
  119. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/PeopleLookupMany.js.map +1 -0
  120. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/components.d.ts +2 -0
  121. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/components.js +15 -0
  122. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/components.js.map +1 -0
  123. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/index.d.ts +1 -0
  124. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/index.js +2 -0
  125. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/index.js.map +1 -0
  126. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/MultiValueContainer.d.ts +3 -0
  127. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/MultiValueContainer.js +12 -0
  128. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/MultiValueContainer.js.map +1 -0
  129. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/index.d.ts +1 -0
  130. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/index.js +2 -0
  131. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/index.js.map +1 -0
  132. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/styles.d.ts +9 -0
  133. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/styles.js +18 -0
  134. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/styles.js.map +1 -0
  135. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/MultiValueLabel.d.ts +3 -0
  136. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/MultiValueLabel.js +17 -0
  137. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/MultiValueLabel.js.map +1 -0
  138. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/index.d.ts +1 -0
  139. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/index.js +2 -0
  140. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/index.js.map +1 -0
  141. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/styles.d.ts +5 -0
  142. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/styles.js +6 -0
  143. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/styles.js.map +1 -0
  144. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/Option.d.ts +3 -0
  145. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/Option.js +16 -0
  146. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/Option.js.map +1 -0
  147. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/index.d.ts +1 -0
  148. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/index.js +2 -0
  149. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/index.js.map +1 -0
  150. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/styles.d.ts +10 -0
  151. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/styles.js +11 -0
  152. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/styles.js.map +1 -0
  153. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/context.d.ts +4 -0
  154. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/context.js +9 -0
  155. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/context.js.map +1 -0
  156. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/index.d.ts +1 -0
  157. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/index.js +2 -0
  158. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/index.js.map +1 -0
  159. package/dist/components/TaskGrid/components/grid/multi-record-selector/MultiRecordSelector.d.ts +1 -0
  160. package/dist/components/TaskGrid/components/grid/multi-record-selector/MultiRecordSelector.js +27 -14
  161. package/dist/components/TaskGrid/components/grid/multi-record-selector/MultiRecordSelector.js.map +1 -1
  162. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-container/MultiValueContainer.d.ts +3 -0
  163. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-container/MultiValueContainer.js +13 -0
  164. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-container/MultiValueContainer.js.map +1 -0
  165. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-container/styles.d.ts +18 -0
  166. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-container/styles.js +24 -0
  167. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-container/styles.js.map +1 -0
  168. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/MultiValueLabel.d.ts +3 -0
  169. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/MultiValueLabel.js +20 -0
  170. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/MultiValueLabel.js.map +1 -0
  171. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/styles.d.ts +12 -0
  172. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/styles.js +19 -0
  173. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/styles.js.map +1 -0
  174. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-remove/MultiValueRemove.d.ts +3 -0
  175. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-remove/MultiValueRemove.js +16 -0
  176. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-remove/MultiValueRemove.js.map +1 -0
  177. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-remove/styles.d.ts +22 -0
  178. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-remove/styles.js +28 -0
  179. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-remove/styles.js.map +1 -0
  180. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/option/Option.d.ts +3 -0
  181. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/option/styles.d.ts +16 -0
  182. package/dist/components/TaskGrid/components/grid/multi-record-selector/styles.d.ts +3 -0
  183. package/dist/components/TaskGrid/components/grid/multi-record-selector/styles.js +15 -0
  184. package/dist/components/TaskGrid/components/grid/multi-record-selector/styles.js.map +1 -0
  185. package/dist/components/TaskGrid/components/header/Header.d.ts +1 -1
  186. package/dist/components/TaskGrid/components/header/Header.js +62 -47
  187. package/dist/components/TaskGrid/components/header/Header.js.map +1 -1
  188. package/dist/components/TaskGrid/components/header/edit-columns/EditColumns.js.map +1 -1
  189. package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/CreateViewDialog.js.map +1 -1
  190. package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManager.js.map +1 -1
  191. package/dist/components/TaskGrid/context.d.ts +5 -4
  192. package/dist/components/TaskGrid/context.js.map +1 -1
  193. package/dist/components/TaskGrid/extensions/dataverse/DataverseCustomColumnsStrategy.d.ts +75 -0
  194. package/dist/components/TaskGrid/{data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.js → extensions/dataverse/DataverseCustomColumnsStrategy.js} +56 -21
  195. package/dist/components/TaskGrid/extensions/dataverse/DataverseCustomColumnsStrategy.js.map +1 -0
  196. package/dist/components/TaskGrid/extensions/dataverse/DataverseGridCustomizerStrategy.d.ts +20 -0
  197. package/dist/components/TaskGrid/extensions/dataverse/DataverseGridCustomizerStrategy.js +41 -0
  198. package/dist/components/TaskGrid/extensions/dataverse/DataverseGridCustomizerStrategy.js.map +1 -0
  199. package/dist/components/TaskGrid/extensions/dataverse/DataverseSavedQueryStrategy.d.ts +49 -0
  200. package/dist/components/TaskGrid/{data-providers/saved-query-data-provider/TalxisSavedQueryDataProvider.js → extensions/dataverse/DataverseSavedQueryStrategy.js} +41 -19
  201. package/dist/components/TaskGrid/extensions/dataverse/DataverseSavedQueryStrategy.js.map +1 -0
  202. package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskGridDescriptor.d.ts +102 -0
  203. package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskGridDescriptor.js +184 -0
  204. package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskGridDescriptor.js.map +1 -0
  205. package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskStrategy.d.ts +124 -0
  206. package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskStrategy.js +498 -0
  207. package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskStrategy.js.map +1 -0
  208. package/dist/components/TaskGrid/extensions/dataverse/index.d.ts +5 -0
  209. package/dist/components/TaskGrid/extensions/dataverse/index.js +6 -0
  210. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/LookupManyHandler.d.ts +65 -0
  211. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/LookupManyHandler.js +208 -0
  212. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/LookupManyHandler.js.map +1 -0
  213. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlDataProviderFactory.d.ts +11 -0
  214. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlDataProviderFactory.js +16 -0
  215. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlDataProviderFactory.js.map +1 -0
  216. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlLookupManyCellRenderer.d.ts +2 -0
  217. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlLookupManyCellRenderer.js +35 -0
  218. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlLookupManyCellRenderer.js.map +1 -0
  219. package/dist/components/TaskGrid/interfaces.d.ts +58 -26
  220. package/dist/components/TaskGrid/labels.d.ts +1 -15
  221. package/dist/components/TaskGrid/labels.js +2 -16
  222. package/dist/components/TaskGrid/labels.js.map +1 -1
  223. package/dist/components/TaskGrid/{data-providers/custom-columns-data-provider → providers/custom-columns}/CustomColumnsDataProvider.d.ts +11 -1
  224. package/dist/components/TaskGrid/{data-providers/custom-columns-data-provider → providers/custom-columns}/CustomColumnsDataProvider.js +3 -0
  225. package/dist/components/TaskGrid/providers/custom-columns/CustomColumnsDataProvider.js.map +1 -0
  226. package/dist/components/TaskGrid/providers/custom-columns/index.d.ts +1 -0
  227. package/dist/components/TaskGrid/providers/custom-columns/index.js +2 -0
  228. package/dist/components/TaskGrid/providers/custom-columns/index.js.map +1 -0
  229. package/dist/components/TaskGrid/providers/index.d.ts +3 -0
  230. package/dist/components/TaskGrid/providers/index.js +4 -0
  231. package/dist/components/TaskGrid/providers/index.js.map +1 -0
  232. package/dist/components/TaskGrid/{data-providers/saved-query-data-provider → providers/saved-query}/SavedQueryDataProvider.d.ts +14 -9
  233. package/dist/components/TaskGrid/{data-providers/saved-query-data-provider → providers/saved-query}/SavedQueryDataProvider.js +89 -69
  234. package/dist/components/TaskGrid/providers/saved-query/SavedQueryDataProvider.js.map +1 -0
  235. package/dist/components/TaskGrid/providers/saved-query/index.d.ts +1 -0
  236. package/dist/components/TaskGrid/providers/saved-query/index.js +2 -0
  237. package/dist/components/TaskGrid/providers/saved-query/index.js.map +1 -0
  238. package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/TaskDataProvider.d.ts +25 -39
  239. package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/TaskDataProvider.js +51 -34
  240. package/dist/components/TaskGrid/providers/task/TaskDataProvider.js.map +1 -0
  241. package/dist/components/TaskGrid/providers/task/index.js.map +1 -0
  242. package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/record-tree/RecordTree.d.ts +8 -0
  243. package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/record-tree/RecordTree.js +2 -0
  244. package/dist/components/TaskGrid/providers/task/record-tree/RecordTree.js.map +1 -0
  245. package/dist/components/TaskGrid/providers/task/record-tree/index.js.map +1 -0
  246. package/dist/components/TaskGrid/providers/task/record-tree/patchDataBuilderPrepare.js.map +1 -0
  247. package/dist/index.d.ts +234 -196
  248. package/dist/index.js +1 -0
  249. package/dist/index.js.map +1 -1
  250. package/dist/utils/index.d.ts +1 -0
  251. package/dist/utils/index.js +1 -0
  252. package/dist/utils/index.js.map +1 -1
  253. package/dist/utils/localization/LocalizationService.d.ts +15 -0
  254. package/dist/utils/localization/LocalizationService.js +17 -0
  255. package/dist/utils/localization/LocalizationService.js.map +1 -0
  256. package/dist/utils/localization/index.d.ts +1 -0
  257. package/dist/utils/localization/index.js +2 -0
  258. package/dist/utils/localization/index.js.map +1 -0
  259. package/package.json +5 -4
  260. package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/CustomColumnsDataProvider.js.map +0 -1
  261. package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.d.ts +0 -33
  262. package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.js.map +0 -1
  263. package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/index.d.ts +0 -2
  264. package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/index.js +0 -3
  265. package/dist/components/TaskGrid/data-providers/index.d.ts +0 -3
  266. package/dist/components/TaskGrid/data-providers/index.js +0 -6
  267. package/dist/components/TaskGrid/data-providers/saved-query-data-provider/SavedQueryDataProvider.js.map +0 -1
  268. package/dist/components/TaskGrid/data-providers/saved-query-data-provider/TalxisSavedQueryDataProvider.d.ts +0 -21
  269. package/dist/components/TaskGrid/data-providers/saved-query-data-provider/TalxisSavedQueryDataProvider.js.map +0 -1
  270. package/dist/components/TaskGrid/data-providers/saved-query-data-provider/index.d.ts +0 -2
  271. package/dist/components/TaskGrid/data-providers/saved-query-data-provider/index.js +0 -3
  272. package/dist/components/TaskGrid/data-providers/task-data-provider/TaskDataProvider.js.map +0 -1
  273. package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/RecordTree.js.map +0 -1
  274. package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/patchDataBuilderPrepare.js.map +0 -1
  275. /package/dist/components/TaskGrid/{data-providers/task-data-provider → components/grid/cell-renderers/lookup-many}/index.js.map +0 -0
  276. /package/dist/components/TaskGrid/{data-providers/task-data-provider/record-tree → components/grid/lookup-many/colorful-lookup-many/components/multi-value-container}/index.js.map +0 -0
  277. /package/dist/components/TaskGrid/{data-providers → extensions/dataverse}/index.js.map +0 -0
  278. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/index.d.ts +0 -0
  279. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/index.js +0 -0
  280. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/record-tree/index.d.ts +0 -0
  281. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/record-tree/index.js +0 -0
  282. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/record-tree/patchDataBuilderPrepare.d.ts +0 -0
  283. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/record-tree/patchDataBuilderPrepare.js +0 -0
@@ -1,8 +1,11 @@
1
1
  /// <reference types="@types/powerapps-component-framework" />
2
2
  import { EventEmitter, GetDataEvent, IAvailableColumnOptions, IAvailableRelatedColumn, IColumn, ICommand, IDataProvider, IDataProviderEventListeners, IEventBubbleOptions, IEventEmitter, IRawRecord, IRecord, IRecordSaveOperationResult, IRetrievedData, IRetrieveRecordCommandOptions, MemoryDataProvider } from "@talxis/client-libraries";
3
3
  import { IRecordTree } from "./record-tree/RecordTree";
4
- import { ILocalizationService, ITaskGridLabels } from "../../labels";
4
+ import { ILocalizationService } from "../../../../utils";
5
+ import { ITaskGridLabels } from "../../labels";
5
6
  import { INativeColumns } from "../../interfaces";
7
+ import { ISavedQueryDataProvider } from "../saved-query";
8
+ import { ICustomColumnsDataProvider } from "../custom-columns";
6
9
  export interface IFailedRecord {
7
10
  id: string;
8
11
  error: any;
@@ -15,7 +18,7 @@ export type IDeleteTasksResult = {
15
18
  deletedTaskIds: string[];
16
19
  errors: IFailedRecord[];
17
20
  };
18
- export type IEditTasksResult = {
21
+ export type IOpenDatasetItemsResult = {
19
22
  success: true;
20
23
  updatedRecords: IRawRecord[];
21
24
  } | {
@@ -27,13 +30,14 @@ export interface ITaskDataProviderParameters {
27
30
  nativeColumns: INativeColumns;
28
31
  localizationService: ILocalizationService<ITaskGridLabels>;
29
32
  strategy: ITaskDataProviderStrategy;
33
+ savedQueryDataProvider: ISavedQueryDataProvider;
34
+ customColumnsDataProvider?: ICustomColumnsDataProvider;
30
35
  onIsFlatListEnabled: () => boolean;
31
36
  }
32
37
  /** Strategy interface that handles all data access and mutation operations for tasks. */
33
38
  export interface ITaskDataProviderStrategy {
34
39
  /**
35
- * Called once on first load. Must return the initial columns, raw task records, and provider metadata.
36
- * An empty `ids` array instructs the strategy to fetch all records.
40
+ * Called when the provider needs to retrieve latest data for specific tasks to synchronize the grid with the server.
37
41
  */
38
42
  onGetRawRecords: (ids: string[]) => Promise<IRawRecord[]>;
39
43
  /** Called once on first load. Must return the initial columns, raw task records, and entity metadata. */
@@ -46,8 +50,6 @@ export interface ITaskDataProviderStrategy {
46
50
  onGetAvailableColumns: (options?: IAvailableColumnOptions) => Promise<IColumn[]>;
47
51
  /** Returns linked-entity columns that can be used for filtering and sorting. */
48
52
  onGetAvailableRelatedColumns: () => Promise<IAvailableRelatedColumn[]>;
49
- /** Returns the attribute names that are searched when the user types in the quick-find input. */
50
- onGetQuickFindColumns: () => string[];
51
53
  /** @returns The created task raw record, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */
52
54
  onCreateTask(parentTaskId?: string): Promise<IRawRecord | null>;
53
55
  /**
@@ -61,27 +63,16 @@ export interface ITaskDataProviderStrategy {
61
63
  /** @returns The created task raw records, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */
62
64
  onCreateTasksFromTemplate(templateId: string, parentTaskId?: string): Promise<IRawRecord[] | null>;
63
65
  /**
64
- * @returns Result indicating which tasks were updated and which failed, or `null` if the operation was cancelled by the user.
65
- * `success: true` means all tasks were updated. `success: false` means some or all failed.
66
- * Throws on unexpected failure.
66
+ * Opens one or more dataset items. When `isTaskEntity` is `true` the references point to task records;
67
+ * when `false` they point to a related entity (e.g. a lookup target).
67
68
  */
68
- onEditTasks(taskIds: string[]): Promise<IEditTasksResult | null>;
69
+ onOpenDatasetItems(entityReferences: ComponentFramework.EntityReference[], isTaskEntity: boolean): Promise<IOpenDatasetItemsResult | null>;
69
70
  /** Moves a task to a new position relative to another task. Returns the updated raw records, or `null` on cancellation. */
70
71
  onMoveTask(movingTaskId: string, movingToTaskId: string, position: 'above' | 'below' | 'child'): Promise<IRawRecord[] | null>;
71
72
  /** Persists inline cell edits for the given record. */
72
73
  onRecordSave(record: IRecord): Promise<IRecordSaveOperationResult>;
73
74
  /** Returns whether the given task record is currently active (non-completed). */
74
75
  onIsRecordActive(recordId: string): boolean;
75
- /** Opens the record detail view. Called when a user clicks a non-subject cell. */
76
- onOpenDatasetItem(entityReference: ComponentFramework.EntityReference, context?: {
77
- columnName?: string;
78
- }): void;
79
- /** Return `false` to disable task creation (hide the *New* button). Defaults to `true`. */
80
- onIsTaskAddingEnabled?(): boolean;
81
- /** Return `false` to disable inline cell editing. Defaults to `true`. */
82
- onIsTaskEditingEnabled?(): boolean;
83
- /** Return `false` to disable task deletion (hide the *Delete* button). Defaults to `true`. */
84
- onIsTaskDeletingEnabled?(): boolean;
85
76
  /** When provided, the task tree is scoped to the subtree of the returned task id. */
86
77
  onGetRootTaskId?: () => string | undefined;
87
78
  }
@@ -94,10 +85,10 @@ export interface ITaskDataProviderEventListener {
94
85
  onAfterTasksCreated: (records: IRawRecord[] | null, parentId?: string) => void;
95
86
  onBeforeTaskMoved: () => void;
96
87
  onAfterTaskMoved: (movingFromTaskId: string, movingToTaskId: string, position: 'above' | 'below' | 'child') => void;
97
- onBeforeTasksEdited: (taskIds: string[]) => void;
98
88
  onTaskDataUpdated: (data: IRawRecord[]) => void;
99
- onAfterTasksEdited: (result: IEditTasksResult | null) => void;
100
89
  onRecordTreeUpdated: (updatedParentIds: (string | undefined)[]) => void;
90
+ onBeforeDatasetItemsOpened: (entityReferences: ComponentFramework.EntityReference[], isTaskEntity: boolean) => void;
91
+ onAfterDatasetItemsOpened: (entityReferences: ComponentFramework.EntityReference[], isTaskEntity: boolean, result: IOpenDatasetItemsResult | null) => void;
101
92
  onError: (error: any, message: string) => void;
102
93
  }
103
94
  /** Extended data provider interface for task records. Adds task-specific operations on top of `IDataProvider`. */
@@ -117,11 +108,10 @@ export interface ITaskDataProvider extends IDataProvider {
117
108
  /** Applies updated raw record data in-place and rebuilds the tree if hierarchy changed. */
118
109
  updateTaskData(newData: IRawRecord[]): void;
119
110
  /**
120
- * @returns Result indicating which tasks were updated and which failed, or `null` if the operation was cancelled by the user.
121
- * `success: true` means all tasks were updated. `success: false` means some or all failed — `updatedRecords` still contains the records that succeeded.
122
- * Throws on unexpected failure.
111
+ * Opens one or more task records by id. Builds entity references from the current records map
112
+ * and delegates to `strategy.onOpenDatasetItems` with `isTaskEntity: true`.
123
113
  */
124
- editTasks(taskIds: string[]): Promise<IEditTasksResult | null>;
114
+ openTaskItems(taskIds: string[]): Promise<IOpenDatasetItemsResult | null>;
125
115
  /** @returns The created task raw record, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */
126
116
  createTask(parentTaskId?: string): Promise<IRawRecord | null>;
127
117
  /**
@@ -137,11 +127,6 @@ export interface ITaskDataProvider extends IDataProvider {
137
127
  /** Returns `true` when the grid is displaying a flat list instead of a tree hierarchy. */
138
128
  isFlatListEnabled(): boolean;
139
129
  /** Returns `true` when task creation is allowed (from `ITaskDataProviderStrategy.onIsTaskAddingEnabled`). */
140
- isTaskAddingEnabled(): boolean;
141
- /** Returns `true` when inline cell editing is allowed (from `ITaskDataProviderStrategy.onIsTaskEditingEnabled`). */
142
- isTaskEditingEnabled(): boolean;
143
- /** Returns `true` when task deletion is allowed (from `ITaskDataProviderStrategy.onIsTaskDeletingEnabled`). */
144
- isTaskDeletingEnabled(): boolean;
145
130
  /** Returns the root task id when the tree is scoped to a subtree, or `null` for a full tree. */
146
131
  getRootTaskId: () => string | null;
147
132
  /** Moves a task to a position relative to another task. Returns the updated raw records, or `null` on cancellation. */
@@ -153,19 +138,21 @@ export declare class TaskDataProvider extends MemoryDataProvider implements ITas
153
138
  private _hasDataBeenLoaded;
154
139
  private _taskTree;
155
140
  private _strategy;
141
+ private _savedQueryDataProvider;
142
+ private _customColumnsDataProvider?;
156
143
  private _onFlatListEnabled;
157
144
  readonly taskEvents: EventEmitter<ITaskDataProviderEventListener>;
158
145
  constructor(parameters: ITaskDataProviderParameters);
159
146
  getStrategy<T extends ITaskDataProviderStrategy>(): T;
160
147
  getRootTaskId(): string | null;
161
- isTaskAddingEnabled(): boolean;
162
- isTaskEditingEnabled(): boolean;
163
- isTaskDeletingEnabled(): boolean;
164
148
  getRecordTree(): IRecordTree;
165
149
  isFlatListEnabled(): boolean;
166
150
  getNativeColumns(): INativeColumns;
167
151
  fetchRawRecords(ids: string[]): Promise<IRawRecord[]>;
168
- onGetAvailableColumns(): Promise<IColumn[]>;
152
+ onGetAvailableColumns(options?: {
153
+ entityName?: string;
154
+ }): Promise<IColumn[]>;
155
+ private _getColumnsWithUnusedVirtualColumns;
169
156
  onGetAvailableRelatedColumns(): Promise<IAvailableRelatedColumn[]>;
170
157
  retrieveRecordCommand(options?: IRetrieveRecordCommandOptions): Promise<ICommand[]>;
171
158
  onRecordSave(record: IRecord): Promise<IRecordSaveOperationResult>;
@@ -175,15 +162,14 @@ export declare class TaskDataProvider extends MemoryDataProvider implements ITas
175
162
  createTask(parentId?: string): Promise<IRawRecord | null>;
176
163
  createTasksFromTemplate(templateId: string, parentId?: string): Promise<IRawRecord[] | null>;
177
164
  createTemplateFromTask(taskId: string): Promise<IRawRecord | null>;
178
- openDatasetItem(entityReference: ComponentFramework.EntityReference, context?: {
165
+ onOpenDatasetItem(entityReference: ComponentFramework.EntityReference, context?: {
179
166
  columnName?: string;
180
- }): void;
167
+ }): Promise<void>;
181
168
  getSorting(): ComponentFramework.PropertyHelper.DataSetApi.SortStatus[];
182
169
  getSortedRecordIds(): string[];
183
170
  deleteTasks(taskIds: string[]): Promise<IDeleteTasksResult | null>;
184
- editTasks(taskIds: string[]): Promise<IEditTasksResult | null>;
171
+ openTaskItems(taskIds: string[]): Promise<IOpenDatasetItemsResult | null>;
185
172
  isRecordActive(recordId: string): boolean;
186
- onOpenDatasetItem(entityReference: ComponentFramework.EntityReference): void;
187
173
  destroy(): Promise<void>;
188
174
  getQuickFindColumns(): IColumn[];
189
175
  createGroupedRecordDataProvider(group: IRecord): IDataProvider;
@@ -10,12 +10,14 @@ class TaskDataProvider extends MemoryDataProvider {
10
10
  });
11
11
  this._hasDataBeenLoaded = false;
12
12
  this.taskEvents = new EventEmitter();
13
+ this._savedQueryDataProvider = parameters.savedQueryDataProvider;
13
14
  this._nativeColumns = parameters.nativeColumns;
14
15
  this._taskTree = new RecordTree({
15
16
  taskDataProvider: this
16
17
  });
17
18
  this._localizationService = parameters.localizationService;
18
19
  this._strategy = parameters.strategy;
20
+ this._customColumnsDataProvider = parameters.customColumnsDataProvider;
19
21
  this._onFlatListEnabled = parameters.onIsFlatListEnabled;
20
22
  }
21
23
  getStrategy() {
@@ -24,15 +26,6 @@ class TaskDataProvider extends MemoryDataProvider {
24
26
  getRootTaskId() {
25
27
  return this._strategy.onGetRootTaskId?.() ?? null;
26
28
  }
27
- isTaskAddingEnabled() {
28
- return this._strategy.onIsTaskAddingEnabled?.() ?? true;
29
- }
30
- isTaskEditingEnabled() {
31
- return this._strategy.onIsTaskEditingEnabled?.() ?? true;
32
- }
33
- isTaskDeletingEnabled() {
34
- return this._strategy.onIsTaskDeletingEnabled?.() ?? true;
35
- }
36
29
  getRecordTree() {
37
30
  return this._taskTree;
38
31
  }
@@ -45,8 +38,25 @@ class TaskDataProvider extends MemoryDataProvider {
45
38
  async fetchRawRecords(ids) {
46
39
  return this._strategy.onGetRawRecords(ids);
47
40
  }
48
- onGetAvailableColumns() {
49
- return this._strategy.onGetAvailableColumns();
41
+ async onGetAvailableColumns(options) {
42
+ return [
43
+ ...this._getColumnsWithUnusedVirtualColumns(await this._strategy.onGetAvailableColumns(options)),
44
+ ...(this._customColumnsDataProvider ? this._customColumnsDataProvider.getColumns() : [])
45
+ ];
46
+ }
47
+ _getColumnsWithUnusedVirtualColumns(columns) {
48
+ columns = [...columns];
49
+ const columnsMap = new Map(columns.map(col => [col.name, col]));
50
+ const virtualColumns = new Map(this._savedQueryDataProvider.getSystemQueries().flatMap(query => query.columns).filter(column => column.isVirtual).map(col => [col.name, col]));
51
+ for (const virtualColumn of [...virtualColumns.values()]) {
52
+ if (!columnsMap.has(virtualColumn.name)) {
53
+ columns.push({
54
+ ...virtualColumn,
55
+ isHidden: false
56
+ });
57
+ }
58
+ }
59
+ return columns;
50
60
  }
51
61
  onGetAvailableRelatedColumns() {
52
62
  return this._strategy.onGetAvailableRelatedColumns();
@@ -143,13 +153,18 @@ class TaskDataProvider extends MemoryDataProvider {
143
153
  onError: (error, message) => this.taskEvents.dispatchEvent('onError', error, message)
144
154
  });
145
155
  }
146
- openDatasetItem(entityReference, context) {
147
- if (!context || context?.columnName === this.getNativeColumns().subject) {
148
- this.editTasks([entityReference.id.guid]);
149
- }
150
- else {
151
- this._strategy.onOpenDatasetItem(entityReference);
152
- }
156
+ async onOpenDatasetItem(entityReference, context) {
157
+ const isTaskEntity = !context || context?.columnName === this.getNativeColumns().subject;
158
+ this.taskEvents.dispatchEvent('onBeforeDatasetItemsOpened', [entityReference], isTaskEntity);
159
+ ErrorHelper.executeWithErrorHandling({
160
+ operation: async () => {
161
+ const result = await this._strategy.onOpenDatasetItems([entityReference], isTaskEntity);
162
+ if (result)
163
+ this.updateTaskData(result.updatedRecords);
164
+ this.taskEvents.dispatchEvent('onAfterDatasetItemsOpened', [entityReference], isTaskEntity, result);
165
+ },
166
+ onError: (error, message) => this.taskEvents.dispatchEvent('onError', error, message)
167
+ });
153
168
  }
154
169
  getSorting() {
155
170
  const sorting = super.getSorting();
@@ -184,14 +199,22 @@ class TaskDataProvider extends MemoryDataProvider {
184
199
  onError: (error, message) => this.taskEvents.dispatchEvent('onError', error, message)
185
200
  });
186
201
  }
187
- async editTasks(taskIds) {
202
+ async openTaskItems(taskIds) {
203
+ const entityReferences = taskIds.map(id => {
204
+ const record = this.getRecordsMap()[id];
205
+ return {
206
+ id: { guid: id },
207
+ etn: this.getEntityName(),
208
+ name: record?.getFormattedValue(this.getNativeColumns().subject) ?? undefined
209
+ };
210
+ });
188
211
  return ErrorHelper.executeWithErrorHandling({
189
212
  operation: async () => {
190
- this.taskEvents.dispatchEvent('onBeforeTasksEdited', taskIds);
191
- const result = await this._strategy.onEditTasks(taskIds);
213
+ this.taskEvents.dispatchEvent('onBeforeDatasetItemsOpened', entityReferences, true);
214
+ const result = await this._strategy.onOpenDatasetItems(entityReferences, true);
192
215
  if (result !== null)
193
216
  this.updateTaskData(result.updatedRecords);
194
- this.taskEvents.dispatchEvent('onAfterTasksEdited', result);
217
+ this.taskEvents.dispatchEvent('onAfterDatasetItemsOpened', entityReferences, true, result);
195
218
  return result;
196
219
  },
197
220
  onError: (error, message) => this.taskEvents.dispatchEvent('onError', error, message)
@@ -200,23 +223,14 @@ class TaskDataProvider extends MemoryDataProvider {
200
223
  isRecordActive(recordId) {
201
224
  return this._strategy.onIsRecordActive(recordId);
202
225
  }
203
- onOpenDatasetItem(entityReference) {
204
- if (entityReference.etn === this.getEntityName()) {
205
- this.editTasks([entityReference.id.guid]);
206
- }
207
- else {
208
- //@ts-ignore - typings
209
- this._sourceDataProvider.onOpenDatasetItem(entityReference);
210
- }
211
- }
212
226
  async destroy() {
213
227
  super.destroy();
214
228
  this.taskEvents.clearEventListeners();
215
229
  }
216
230
  getQuickFindColumns() {
217
- return this._strategy.onGetQuickFindColumns().map(columnName => {
218
- return this.getColumnsMap()[columnName];
219
- }).filter(col => col);
231
+ const quickFindColumnNames = this._savedQueryDataProvider.getCurrentQuery().quickFindColumns ?? [];
232
+ const existingQuickFindColumns = quickFindColumnNames.map(columnName => this.getColumnsMap()[columnName]).filter(col => col);
233
+ return existingQuickFindColumns;
220
234
  }
221
235
  createGroupedRecordDataProvider(group) {
222
236
  const children = this._taskTree.getNodeMap().get(group.getRecordId())?.directChildren ?? [];
@@ -248,12 +262,15 @@ class TaskDataProvider extends MemoryDataProvider {
248
262
  localizationService: this._localizationService,
249
263
  nativeColumns: this._nativeColumns,
250
264
  strategy: this._strategy,
265
+ savedQueryDataProvider: this._savedQueryDataProvider,
251
266
  onIsFlatListEnabled: () => this._onFlatListEnabled(),
252
267
  });
253
268
  }
254
269
  async refresh() {
255
270
  if (!this._hasDataBeenLoaded) {
256
271
  await this._loadDataFromStrategy();
272
+ //we need to artificially wait in order for any sync outside stuff to finish (like loading grid to register events)
273
+ await new Promise(resolve => setTimeout(resolve, 0));
257
274
  this._hasDataBeenLoaded = true;
258
275
  }
259
276
  await super.refresh();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskDataProvider.js","sources":["../../../../../src/components/TaskGrid/providers/task/TaskDataProvider.ts"],"sourcesContent":["import { EventEmitter, GetDataEvent, IAvailableColumnOptions, IAvailableRelatedColumn, IColumn, ICommand, IDataProvider, IDataProviderEventListeners, IEventBubbleOptions, IEventEmitter, IRawRecord, IRecord, IRecordSaveOperationResult, IRetrievedData, IRetrieveRecordCommandOptions, MemoryDataProvider, Operators, Type } from \"@talxis/client-libraries\";\nimport { IRecordTree, RecordTree } from \"./record-tree/RecordTree\";\nimport { ErrorHelper } from \"../../../../utils/error-handling\";\nimport { ILocalizationService } from \"../../../../utils\";\nimport { ITaskGridLabels } from \"../../labels\";\nimport { INativeColumns } from \"../../interfaces\";\nimport { ISavedQueryDataProvider} from \"../saved-query\";\nimport { ICustomColumnsDataProvider } from \"../custom-columns\";\n\nexport interface IFailedRecord {\n id: string;\n error: any;\n}\n\nexport type IDeleteTasksResult =\n | { success: true; deletedTaskIds: string[] }\n | { success: false; deletedTaskIds: string[]; errors: IFailedRecord[] };\n\nexport type IOpenDatasetItemsResult =\n | { success: true; updatedRecords: IRawRecord[] }\n | { success: false; updatedRecords: IRawRecord[]; errors: IFailedRecord[] };\n\n\nexport interface ITaskDataProviderParameters {\n nativeColumns: INativeColumns;\n localizationService: ILocalizationService<ITaskGridLabels>;\n strategy: ITaskDataProviderStrategy;\n savedQueryDataProvider: ISavedQueryDataProvider;\n customColumnsDataProvider?: ICustomColumnsDataProvider;\n onIsFlatListEnabled: () => boolean;\n}\n\n/** Strategy interface that handles all data access and mutation operations for tasks. */\nexport interface ITaskDataProviderStrategy {\n /**\n * Called when the provider needs to retrieve latest data for specific tasks to synchronize the grid with the server.\n */\n onGetRawRecords: (ids: string[]) => Promise<IRawRecord[]>;\n /** Called once on first load. Must return the initial columns, raw task records, and entity metadata. */\n onInitialize: (provider: ITaskDataProvider) => Promise<{ columns: IColumn[]; rawData: IRawRecord[]; metadata: any }>\n /** Returns all columns available for display in the grid (both native and custom). */\n onGetAvailableColumns: (options?: IAvailableColumnOptions) => Promise<IColumn[]>;\n /** Returns linked-entity columns that can be used for filtering and sorting. */\n onGetAvailableRelatedColumns: () => Promise<IAvailableRelatedColumn[]>;\n /** @returns The created task raw record, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */\n onCreateTask(parentTaskId?: string): Promise<IRawRecord | null>;\n /**\n * @returns Result indicating which tasks were deleted and which failed.\n * `success: true` means all tasks were deleted. `success: false` means some or all failed.\n * Throws on unexpected failure.\n */\n onDeleteTasks(taskIds: string[]): Promise<IDeleteTasksResult | null>;\n /** @returns The created template raw record, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */\n onCreateTemplateFromTask(taskId: string): Promise<IRawRecord | null>;\n /** @returns The created task raw records, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */\n onCreateTasksFromTemplate(templateId: string, parentTaskId?: string): Promise<IRawRecord[] | null>;\n /**\n * Opens one or more dataset items. When `isTaskEntity` is `true` the references point to task records;\n * when `false` they point to a related entity (e.g. a lookup target).\n */\n onOpenDatasetItems(entityReferences: ComponentFramework.EntityReference[], isTaskEntity: boolean): Promise<IOpenDatasetItemsResult | null>;\n /** Moves a task to a new position relative to another task. Returns the updated raw records, or `null` on cancellation. */\n onMoveTask(movingTaskId: string, movingToTaskId: string, position: 'above' | 'below' | 'child'): Promise<IRawRecord[] | null>;\n /** Persists inline cell edits for the given record. */\n onRecordSave(record: IRecord): Promise<IRecordSaveOperationResult>;\n /** Returns whether the given task record is currently active (non-completed). */\n onIsRecordActive(recordId: string): boolean;\n /** When provided, the task tree is scoped to the subtree of the returned task id. */\n onGetRootTaskId?: () => string | undefined\n}\n\nexport interface ITaskDataProviderEventListener {\n onBeforeTemplateCreated: (taskId: string) => void;\n onAfterTemplateCreated: (record: IRawRecord | null) => void;\n onBeforeTasksDeleted: (taskIds: string[]) => void;\n onAfterTasksDeleted: (result: IDeleteTasksResult | null) => void;\n onBeforeTasksCreated: (parentId?: string) => void;\n onAfterTasksCreated: (records: IRawRecord[] | null, parentId?: string) => void;\n onBeforeTaskMoved: () => void;\n onAfterTaskMoved: (movingFromTaskId: string, movingToTaskId: string, position: 'above' | 'below' | 'child') => void;\n onTaskDataUpdated: (data: IRawRecord[]) => void;\n onRecordTreeUpdated: (updatedParentIds: (string | undefined)[]) => void;\n onBeforeDatasetItemsOpened: (entityReferences: ComponentFramework.EntityReference[], isTaskEntity: boolean) => void;\n onAfterDatasetItemsOpened: (entityReferences: ComponentFramework.EntityReference[], isTaskEntity: boolean, result: IOpenDatasetItemsResult | null) => void;\n onError: (error: any, message: string) => void;\n}\n\n/** Extended data provider interface for task records. Adds task-specific operations on top of `IDataProvider`. */\nexport interface ITaskDataProvider extends IDataProvider {\n /** EventEmitter for task lifecycle events (create, delete, edit, move, template, error). */\n taskEvents: IEventEmitter<ITaskDataProviderEventListener>;\n /** Returns the native column name mapping. */\n getNativeColumns(): INativeColumns;\n /** Returns all records regardless of current tree filtering or paging. */\n getAllRecords(): IRecord[];\n /** Returns the underlying strategy cast to the given type. */\n getStrategy<T extends ITaskDataProviderStrategy>(): T;\n /** Fetches raw task records by id via the strategy. Pass an empty array to fetch all. */\n fetchRawRecords(ids: string[]): Promise<IRawRecord[]>;\n /** Returns the current hierarchical record tree built from loaded task data. */\n getRecordTree(): IRecordTree;\n /** Applies updated raw record data in-place and rebuilds the tree if hierarchy changed. */\n updateTaskData(newData: IRawRecord[]): void;\n /**\n * Opens one or more task records by id. Builds entity references from the current records map\n * and delegates to `strategy.onOpenDatasetItems` with `isTaskEntity: true`.\n */\n openTaskItems(taskIds: string[]): Promise<IOpenDatasetItemsResult | null>;\n /** @returns The created task raw record, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */\n createTask(parentTaskId?: string): Promise<IRawRecord | null>;\n /**\n * @returns Result indicating which tasks were deleted and which failed.\n * `success: true` means all tasks were deleted. `success: false` means some or all failed — `deletedTaskIds` still contains the ids that succeeded.\n * Throws on unexpected failure before any deletes could be attempted.\n */\n deleteTasks(taskIds: string[]): Promise<IDeleteTasksResult | null>;\n /** @returns The created template raw record, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */\n createTemplateFromTask(taskId: string): Promise<IRawRecord | null>;\n /** @returns The created task raw records, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */\n createTasksFromTemplate(templateId: string, parentId?: string): Promise<IRawRecord[] | null>;\n /** Returns `true` when the grid is displaying a flat list instead of a tree hierarchy. */\n isFlatListEnabled(): boolean;\n /** Returns `true` when task creation is allowed (from `ITaskDataProviderStrategy.onIsTaskAddingEnabled`). */\n /** Returns the root task id when the tree is scoped to a subtree, or `null` for a full tree. */\n getRootTaskId: () => string | null;\n /** Moves a task to a position relative to another task. Returns the updated raw records, or `null` on cancellation. */\n moveTask(movingTaskId: string, movingToTaskId: string, position: 'above' | 'below' | 'child'): Promise<IRawRecord[] | null>;\n}\n\nexport class TaskDataProvider extends MemoryDataProvider implements ITaskDataProvider {\n private _nativeColumns: INativeColumns;\n private _localizationService: ILocalizationService<ITaskGridLabels>;\n private _hasDataBeenLoaded: boolean = false;\n private _taskTree: IRecordTree;\n private _strategy: ITaskDataProviderStrategy;\n private _savedQueryDataProvider: ISavedQueryDataProvider;\n private _customColumnsDataProvider?: ICustomColumnsDataProvider;\n private _onFlatListEnabled: () => boolean;\n public readonly taskEvents: EventEmitter<ITaskDataProviderEventListener> = new EventEmitter<ITaskDataProviderEventListener>();\n\n constructor(parameters: ITaskDataProviderParameters) {\n super({\n dataSource: [],\n metadata: { PrimaryIdAttribute: 'id' }\n });\n this._savedQueryDataProvider = parameters.savedQueryDataProvider;\n this._nativeColumns = parameters.nativeColumns;\n this._taskTree = new RecordTree({\n taskDataProvider: this\n })\n this._localizationService = parameters.localizationService;\n this._strategy = parameters.strategy;\n this._customColumnsDataProvider = parameters.customColumnsDataProvider;\n this._onFlatListEnabled = parameters.onIsFlatListEnabled;\n }\n\n public getStrategy<T extends ITaskDataProviderStrategy>(): T {\n return this._strategy as T;\n }\n\n public getRootTaskId(): string | null {\n return this._strategy.onGetRootTaskId?.() ?? null;\n }\n\n public getRecordTree(): IRecordTree {\n return this._taskTree;\n }\n\n public isFlatListEnabled(): boolean {\n return this._onFlatListEnabled();\n }\n\n public getNativeColumns(): INativeColumns {\n return this._nativeColumns;\n }\n\n public async fetchRawRecords(ids: string[]) {\n return this._strategy.onGetRawRecords(ids);\n }\n\n public async onGetAvailableColumns(options?: { entityName?: string }): Promise<IColumn[]> {\n return [\n ...this._getColumnsWithUnusedVirtualColumns(await this._strategy.onGetAvailableColumns(options)),\n ...(this._customColumnsDataProvider ? this._customColumnsDataProvider.getColumns() : [])\n ];\n }\n\n private _getColumnsWithUnusedVirtualColumns(columns: IColumn[]): IColumn[] {\n columns = [...columns];\n const columnsMap = new Map(columns.map(col => [col.name, col]));\n const virtualColumns = new Map(this._savedQueryDataProvider.getSystemQueries().flatMap(query => query.columns).filter(column => column.isVirtual).map(col => [col.name, col]));\n for (const virtualColumn of [...virtualColumns.values()]) {\n if (!columnsMap.has(virtualColumn.name)) {\n columns.push({\n ...virtualColumn,\n isHidden: false\n });\n }\n }\n return columns;\n }\n\n public onGetAvailableRelatedColumns(): Promise<IAvailableRelatedColumn[]> {\n return this._strategy.onGetAvailableRelatedColumns();\n }\n\n public async retrieveRecordCommand(options?: IRetrieveRecordCommandOptions): Promise<ICommand[]> {\n return [];\n }\n\n public onRecordSave(record: IRecord): Promise<IRecordSaveOperationResult> {\n return this._strategy.onRecordSave(record);\n }\n\n public updateTaskData(newData: IRawRecord[]) {\n const affectedParentIds: (string | undefined)[] = [];\n let recordTreeChanged = false;\n\n for (const updatedData of newData) {\n const recordId = updatedData[this.getMetadata().PrimaryIdAttribute];\n if (!recordId) {\n throw new Error(`Updated data is missing record id. Data: ${JSON.stringify(updatedData)}`);\n }\n const record = this.getRecordsMap()[recordId];\n const originalParentId = record.getValue(this.getNativeColumns().parentId)?.[0]?.id?.guid;\n const originalStackRank = record.getValue(this.getNativeColumns().stackRank);\n record.setRawData(updatedData);\n const newParentId = record.getValue(this.getNativeColumns().parentId)?.[0]?.id?.guid;\n const newStackRank = record.getValue(this.getNativeColumns().stackRank);\n if (originalParentId !== newParentId) {\n recordTreeChanged = true;\n affectedParentIds.push(recordId, originalParentId, newParentId);\n } else if (originalStackRank !== newStackRank) {\n recordTreeChanged = true;\n }\n }\n if (recordTreeChanged) {\n this._taskTree.build();\n this.taskEvents.dispatchEvent('onRecordTreeUpdated', affectedParentIds);\n }\n this.taskEvents.dispatchEvent('onTaskDataUpdated', newData);\n }\n\n\n public getGroupedRecordDataProvider(groupedRecordId: string): IDataProvider | null {\n const provider = new MemoryDataProvider({\n dataSource: [],\n metadata: { PrimaryIdAttribute: 'id' }\n })\n provider.getErrorMessage = () => this.getErrorMessage();\n return provider;\n }\n\n public async moveTask(movingFromTaskId: string, movingToTaskId: string, position: \"above\" | \"below\" | \"child\"): Promise<IRawRecord[] | null> {\n return ErrorHelper.executeWithErrorHandling({\n operation: async () => {\n this.taskEvents.dispatchEvent('onBeforeTaskMoved');\n const result = await this._strategy.onMoveTask(movingFromTaskId, movingToTaskId, position);\n if (result !== null) this.updateTaskData(result);\n this.taskEvents.dispatchEvent('onAfterTaskMoved', movingFromTaskId, movingToTaskId, position);\n return result;\n },\n onError: (error, message) => this.taskEvents.dispatchEvent('onError', error, message)\n })\n }\n\n public async createTask(parentId?: string): Promise<IRawRecord | null> {\n this.taskEvents.dispatchEvent('onBeforeTasksCreated', parentId);\n return ErrorHelper.executeWithErrorHandling({\n operation: async () => {\n const rawRecord = await this._strategy.onCreateTask(parentId);\n if (rawRecord) this._createTasks([rawRecord], parentId);\n this.taskEvents.dispatchEvent('onAfterTasksCreated', rawRecord ? [rawRecord] : null, parentId);\n return rawRecord;\n },\n onError: (error, message) => this.taskEvents.dispatchEvent('onError', error, message)\n });\n }\n\n public async createTasksFromTemplate(templateId: string, parentId?: string): Promise<IRawRecord[] | null> {\n this.taskEvents.dispatchEvent('onBeforeTasksCreated', parentId);\n return ErrorHelper.executeWithErrorHandling({\n operation: async () => {\n const rawRecords = await this._strategy.onCreateTasksFromTemplate(templateId, parentId);\n if (rawRecords) this._createTasks(rawRecords, parentId);\n this.taskEvents.dispatchEvent('onAfterTasksCreated', rawRecords, parentId);\n return rawRecords;\n },\n onError: (error, message) => this.taskEvents.dispatchEvent('onError', error, message)\n })\n }\n\n public async createTemplateFromTask(taskId: string): Promise<IRawRecord | null> {\n this.taskEvents.dispatchEvent('onBeforeTemplateCreated', taskId);\n return ErrorHelper.executeWithErrorHandling({\n operation: async () => {\n const rawRecord = await this._strategy.onCreateTemplateFromTask(taskId);\n this.taskEvents.dispatchEvent('onAfterTemplateCreated', rawRecord);\n return rawRecord;\n },\n onError: (error, message) => this.taskEvents.dispatchEvent('onError', error, message)\n });\n }\n\n public async onOpenDatasetItem(entityReference: ComponentFramework.EntityReference, context?: { columnName?: string }): Promise<void> {\n const isTaskEntity = !context || context?.columnName === this.getNativeColumns().subject;\n this.taskEvents.dispatchEvent('onBeforeDatasetItemsOpened', [entityReference], isTaskEntity);\n ErrorHelper.executeWithErrorHandling({\n operation: async () => {\n const result = await this._strategy.onOpenDatasetItems([entityReference], isTaskEntity);\n if(result) this.updateTaskData(result.updatedRecords);\n this.taskEvents.dispatchEvent('onAfterDatasetItemsOpened', [entityReference], isTaskEntity, result);\n },\n onError: (error, message) => this.taskEvents.dispatchEvent('onError', error, message)\n });\n }\n\n public getSorting(): ComponentFramework.PropertyHelper.DataSetApi.SortStatus[] {\n const sorting = super.getSorting();\n if (sorting.length === 0) {\n return [{\n name: this._nativeColumns.stackRank,\n sortDirection: 0\n }];\n }\n else {\n return sorting;\n }\n }\n\n public getSortedRecordIds(): string[] {\n return this._taskTree.getSortedIds();\n }\n\n public async deleteTasks(taskIds: string[]): Promise<IDeleteTasksResult | null> {\n this.taskEvents.dispatchEvent('onBeforeTasksDeleted', taskIds);\n return ErrorHelper.executeWithErrorHandling({\n operation: async () => {\n const result = await this._strategy.onDeleteTasks(taskIds);\n if (result !== null) {\n const deletedTaskIds = result.deletedTaskIds;\n await this.deleteRecords(deletedTaskIds);\n this.setSelectedRecordIds(this.getSelectedRecordIds().filter(id => !deletedTaskIds.includes(id)));\n this._taskTree.build();\n this.taskEvents.dispatchEvent('onRecordTreeUpdated', deletedTaskIds);\n }\n this.taskEvents.dispatchEvent('onAfterTasksDeleted', result);\n return result;\n },\n onError: (error, message) => this.taskEvents.dispatchEvent('onError', error, message)\n })\n }\n\n public async openTaskItems(taskIds: string[]): Promise<IOpenDatasetItemsResult | null> {\n const entityReferences = taskIds.map(id => {\n const record = this.getRecordsMap()[id];\n return {\n id: { guid: id },\n etn: this.getEntityName(),\n name: record?.getFormattedValue(this.getNativeColumns().subject) ?? undefined\n } as ComponentFramework.EntityReference;\n });\n return ErrorHelper.executeWithErrorHandling({\n operation: async () => {\n this.taskEvents.dispatchEvent('onBeforeDatasetItemsOpened', entityReferences, true);\n const result = await this._strategy.onOpenDatasetItems(entityReferences, true);\n if (result !== null) this.updateTaskData(result.updatedRecords);\n this.taskEvents.dispatchEvent('onAfterDatasetItemsOpened', entityReferences, true, result);\n return result;\n },\n onError: (error, message) => this.taskEvents.dispatchEvent('onError', error, message)\n });\n }\n\n public isRecordActive(recordId: string): boolean {\n return this._strategy.onIsRecordActive(recordId);\n }\n\n public async destroy(): Promise<void> {\n super.destroy();\n this.taskEvents.clearEventListeners();\n }\n\n public getQuickFindColumns(): IColumn[] {\n const quickFindColumnNames = this._savedQueryDataProvider.getCurrentQuery().quickFindColumns ?? [];\n const existingQuickFindColumns = quickFindColumnNames.map(columnName => this.getColumnsMap()[columnName]).filter(col => col) as IColumn[];\n return existingQuickFindColumns;\n }\n\n public createGroupedRecordDataProvider(group: IRecord): IDataProvider {\n const children = this._taskTree.getNodeMap().get(group.getRecordId())?.directChildren ?? [];\n return {\n ...this,\n getRecords: () => children,\n isError: () => this.isError(),\n refresh: () => children\n } as IDataProvider;\n }\n\n public getPaging() {\n const paging = super.getPaging();\n paging.totalResultCount = this._taskTree.getTotalCount()\n paging.pageSize = this._taskTree.getTotalCount();\n return paging;\n }\n\n public getRecords(): IRecord[] {\n const records = super.getRecords();\n if (records.length === 0 || this._taskTree.getNodeMap().size === 0) {\n return [];\n }\n return this._taskTree.getNodeMap().get(null as any)?.directChildren ?? [];\n }\n\n public getAllRecords(): IRecord[] {\n return super.getRecords();\n }\n\n public createNewDataProvider(eventBubbleOptions?: IEventBubbleOptions): IDataProvider {\n return new TaskDataProvider({\n localizationService: this._localizationService,\n nativeColumns: this._nativeColumns,\n strategy: this._strategy,\n savedQueryDataProvider: this._savedQueryDataProvider,\n onIsFlatListEnabled: () => this._onFlatListEnabled(),\n });\n }\n public async refresh(): Promise<IRecord[]> {\n if (!this._hasDataBeenLoaded) {\n await this._loadDataFromStrategy();\n //we need to artificially wait in order for any sync outside stuff to finish (like loading grid to register events)\n await new Promise(resolve => setTimeout(resolve, 0));\n this._hasDataBeenLoaded = true;\n }\n await super.refresh();\n return this.getAllRecords();\n }\n\n public dispatchEvent<K extends keyof IDataProviderEventListeners>(event: K, ...args: Parameters<IDataProviderEventListeners[K]>): boolean {\n if (event === 'onNewDataLoaded') {\n this._taskTree.build();\n }\n return super.dispatchEvent(event, ...args);\n }\n\n public getDataSync(pageNumber: number, pageSize: number, previousPageNumber: number, event: GetDataEvent): IRetrievedData {\n return {\n data: this.getDataSource(),\n hasNextPage: false,\n totalRecordCount: this.getDataSource().length\n }\n }\n\n private async _loadDataFromStrategy() {\n return ErrorHelper.executeWithErrorHandling({\n operation: async () => {\n const { columns, rawData, metadata } = await this._strategy.onInitialize(this);\n this.setDataSource(rawData);\n this.setMetadata(metadata);\n this.setColumns(columns);\n this.getPaging().setPageSize(rawData.length);\n this.setEntityName(metadata.LogicalName);\n },\n onError: (error, message) => this.taskEvents.dispatchEvent('onError', error, message)\n })\n }\n\n private _createTasks(rawRecords: IRawRecord[], parentId?: string) {\n const records: IRecord[] = [];\n for (const rawRecord of rawRecords) {\n const record = this.newRecord({\n rawData: rawRecord,\n recordId: rawRecord[this.getMetadata().PrimaryIdAttribute],\n position: 'start',\n },);\n const stackRankAttributeName = this.getNativeColumns().stackRank;\n if (record.getValue(stackRankAttributeName) == null) {\n console.warn(`Record with id ${record.getRecordId()} is missing stack rank value. Setting it to 0.`, record);\n record.setValue(stackRankAttributeName, 0);\n const newRawData = record.toRawData()\n record.setRawData(newRawData);\n }\n records.push(record);\n }\n if (records.length > 0) {\n this._taskTree.build();\n this.taskEvents.dispatchEvent('onRecordTreeUpdated', [parentId]);\n }\n }\n}"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -12,15 +12,23 @@ interface IRecordTreeParameters {
12
12
  taskDataProvider: ITaskDataProvider;
13
13
  }
14
14
  export interface IRecordTree {
15
+ /** Builds (or rebuilds) the node map from the current provider records. Returns the resulting map keyed by record id. */
15
16
  build(): Map<string, ITreeNode>;
17
+ /** Returns the current node map keyed by record id without triggering a rebuild. */
16
18
  getNodeMap(): Map<string, ITreeNode>;
19
+ /** Returns the tree node for the given record id. Pass `null` to get the virtual root node. */
17
20
  getNode(recordId: string | null): ITreeNode;
21
+ /** Returns the total number of unique records in the tree. */
18
22
  getTotalCount(): number;
23
+ /** Returns `true` when the tree is in flat-list mode (no parent-child hierarchy). */
19
24
  isFlat(): boolean;
25
+ /** Returns `true` when the record with the given id has at least one direct child. */
20
26
  hasChildren(recordId: string): boolean;
27
+ /** Returns a map of records that match the current search/filter, keyed by record id. */
21
28
  getMatchingRecords(): {
22
29
  [recordId: string]: IRecord;
23
30
  };
31
+ /** Returns record ids in their computed display order (depth-first, stack-rank sorted). */
24
32
  getSortedIds(): string[];
25
33
  }
26
34
  export declare class RecordTree implements IRecordTree {
@@ -278,6 +278,8 @@ class RecordTree {
278
278
  return path;
279
279
  }
280
280
  _patchRecordPaths() {
281
+ if (!this._getTaskDataProvider().getColumnsMap()[this._getNativeColumns().path])
282
+ return;
281
283
  for (const record of this._records) {
282
284
  const path = this._buildPathForRecord(record.getRecordId());
283
285
  const field = record.getField(this._getNativeColumns().path);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordTree.js","sources":["../../../../../../src/components/TaskGrid/providers/task/record-tree/RecordTree.ts"],"sourcesContent":["import { IRecord, MemoryDataProvider } from \"@talxis/client-libraries\";\nimport { ITaskDataProvider } from \"../TaskDataProvider\";\nimport { patchDataBuilderPrepare } from \"./patchDataBuilderPrepare\";\n\ninterface ITreeNode {\n directChildren: IRecord[];\n allChildren: IRecord[];\n pathIds: string[];\n pathStrings: string[];\n index: number;\n parent?: IRecord;\n}\n\ninterface IRecordTreeParameters {\n taskDataProvider: ITaskDataProvider;\n}\n\nexport interface IRecordTree {\n /** Builds (or rebuilds) the node map from the current provider records. Returns the resulting map keyed by record id. */\n build(): Map<string, ITreeNode>\n /** Returns the current node map keyed by record id without triggering a rebuild. */\n getNodeMap(): Map<string, ITreeNode>;\n /** Returns the tree node for the given record id. Pass `null` to get the virtual root node. */\n getNode(recordId: string | null): ITreeNode;\n /** Returns the total number of unique records in the tree. */\n getTotalCount(): number;\n /** Returns `true` when the tree is in flat-list mode (no parent-child hierarchy). */\n isFlat(): boolean;\n /** Returns `true` when the record with the given id has at least one direct child. */\n hasChildren(recordId: string): boolean;\n /** Returns a map of records that match the current search/filter, keyed by record id. */\n getMatchingRecords(): { [recordId: string]: IRecord };\n /** Returns record ids in their computed display order (depth-first, stack-rank sorted). */\n getSortedIds(): string[];\n}\n\nexport class RecordTree implements IRecordTree {\n private _nodeMap: Map<string, ITreeNode> = new Map();\n private _sortingMap: { [recordId: string]: number } = {};\n private _matchingRecordsMap: { [recordId: string]: IRecord } = {};\n private _isFlat: boolean = false;\n private _totalUniqueRecords: number = 0;\n private _sortedRecordIds: string[] = [];\n private _records: IRecord[] = [];\n private _recordsMap: { [recordId: string]: IRecord } = {};\n private _taskDataProvider: ITaskDataProvider;\n\n constructor(parameters: IRecordTreeParameters) {\n this._taskDataProvider = parameters.taskDataProvider;\n }\n\n public getNodeMap(): Map<string, ITreeNode> {\n return this._nodeMap;\n }\n public getTotalCount(): number {\n return this._totalUniqueRecords;\n }\n public isFlat(): boolean {\n return this._isFlat;\n }\n public getMatchingRecords(): { [recordId: string]: IRecord } {\n return this._matchingRecordsMap;\n }\n public getNode(recordId: string | null): ITreeNode {\n return this._nodeMap.get(recordId as any)!;\n }\n\n public hasChildren(recordId: string): boolean {\n const children = this._nodeMap.get(recordId)?.directChildren;\n if (children && children.length > 0) {\n return true;\n }\n return false;\n }\n\n public getSortedIds(): string[] {\n return this._sortedRecordIds;\n }\n\n public build(): Map<string, ITreeNode> {\n this._records = this._taskDataProvider.getAllRecords();\n this._recordsMap = this._taskDataProvider.getRecordsMap();\n // Clear existing record tree map and flat sorted array\n this._nodeMap.clear();\n this._patchRecordPaths();\n this._buildSortingMap();\n this._buildMatchingRecords();\n\n // Create reusable sort function\n const sortByIndex = (a: IRecord, b: IRecord): number => {\n const indexA = this._sortingMap[a.getRecordId()] ?? Number.MAX_SAFE_INTEGER;\n const indexB = this._sortingMap[b.getRecordId()] ?? Number.MAX_SAFE_INTEGER;\n return indexA - indexB;\n };\n\n const records = this._records;\n const recordsMap = this._recordsMap;\n\n const parentToDirectChildren = new Map<string, IRecord[]>();\n const topLevelRecords: IRecord[] = [];\n\n for (const record of records) {\n const parentRef = record.getValue(this._getNativeColumns().parentId);\n const parentId = parentRef?.[0]?.id?.guid;\n\n if (parentId && recordsMap[parentId]) {\n if (!parentToDirectChildren.has(parentId)) {\n parentToDirectChildren.set(parentId, []);\n }\n parentToDirectChildren.get(parentId)!.push(record);\n }\n else {\n topLevelRecords.push(record);\n }\n }\n\n topLevelRecords.sort(sortByIndex);\n for (const [, children] of parentToDirectChildren) {\n children.sort(sortByIndex);\n }\n\n const hasMatchingDescendantCache = new Map<string, boolean>();\n const calculateHasMatchingDescendant = (recordId: string): boolean => {\n if (hasMatchingDescendantCache.has(recordId)) {\n return hasMatchingDescendantCache.get(recordId)!;\n }\n\n if (this._matchingRecordsMap[recordId]) {\n hasMatchingDescendantCache.set(recordId, true);\n return true;\n }\n\n // Set false sentinel before recursing to break circular reference cycles\n hasMatchingDescendantCache.set(recordId, false);\n const directChildren = parentToDirectChildren.get(recordId) || [];\n const hasMatching = directChildren.some(child =>\n calculateHasMatchingDescendant(child.getRecordId())\n );\n\n hasMatchingDescendantCache.set(recordId, hasMatching);\n return hasMatching;\n };\n\n for (const record of records) {\n calculateHasMatchingDescendant(record.getRecordId());\n }\n\n const recordToAllChildren = new Map<string, IRecord[]>();\n const recordToFilteredDirectChildren = new Map<string, IRecord[]>();\n const inProgressChildren = new Set<string>();\n\n const getAllChildren = (recordId: string): IRecord[] => {\n if (recordToAllChildren.has(recordId)) {\n return recordToAllChildren.get(recordId)!;\n }\n\n // Break circular reference cycles\n if (inProgressChildren.has(recordId)) {\n console.warn(`Circular reference detected: record \"${recordsMap[recordId]?.getNamedReference().name}\" (${recordId}) was encountered twice during tree traversal. All records involved in this cycle and their descendants will be missing from the tree.`);\n return [];\n }\n inProgressChildren.add(recordId);\n\n const directChildren = parentToDirectChildren.get(recordId) || [];\n const allChildren: IRecord[] = [];\n\n const filteredDirectChildren: IRecord[] = [];\n\n for (const child of directChildren) {\n if (hasMatchingDescendantCache.get(child.getRecordId())) {\n filteredDirectChildren.push(child);\n allChildren.push(child);\n allChildren.push(...getAllChildren(child.getRecordId()));\n }\n }\n\n recordToFilteredDirectChildren.set(recordId, filteredDirectChildren);\n recordToAllChildren.set(recordId, allChildren);\n inProgressChildren.delete(recordId);\n return allChildren;\n };\n\n const filteredTopLevelRecords: IRecord[] = [];\n const allRecordsWithMatching: IRecord[] = [];\n\n for (const record of topLevelRecords) {\n if (hasMatchingDescendantCache.get(record.getRecordId())) {\n filteredTopLevelRecords.push(record);\n }\n }\n\n for (const record of records) {\n if (hasMatchingDescendantCache.get(record.getRecordId())) {\n allRecordsWithMatching.push(record);\n }\n getAllChildren(record.getRecordId());\n }\n\n allRecordsWithMatching.sort(sortByIndex);\n \n for (const record of records) {\n const recordId = record.getRecordId();\n const isTopLevel = !record.getValue(this._getNativeColumns().parentId);\n\n const allChildren = getAllChildren(recordId);\n const filteredDirectChildren = recordToFilteredDirectChildren.get(recordId) || [];\n\n let parentRecord: IRecord | undefined = undefined;\n\n let index = -1;\n\n if (!isTopLevel) {\n const parentRef = record.getValue(this._getNativeColumns().parentId);\n const parentId = parentRef?.[0]?.id?.guid;\n if (parentId) {\n parentRecord = recordsMap[parentId];\n const parentFilteredChildren = recordToFilteredDirectChildren.get(parentId) || [];\n index = parentFilteredChildren.findIndex(sibling => sibling.getRecordId() === recordId);\n }\n } else {\n index = filteredTopLevelRecords.findIndex(topRecord => topRecord.getRecordId() === recordId);\n }\n\n let pathIds: string[] = [];\n let pathStrings: string[] = [];\n const pathCache = new Map<string, { pathIds: string[], pathStrings: string[] }>();\n if (pathCache.has(recordId)) {\n const cached = pathCache.get(recordId)!;\n pathIds = cached.pathIds;\n pathStrings = cached.pathStrings;\n }\n else {\n const pathIdParts: string[] = [];\n const pathStringParts: string[] = [];\n let currentRecord: IRecord | null = record;\n const visited = new Set<string>();\n\n while (currentRecord) {\n const currentId = currentRecord.getRecordId();\n if (visited.has(currentId)) break;\n visited.add(currentId);\n\n pathIdParts.unshift(currentRecord.getRecordId());\n pathStringParts.unshift(currentRecord.getNamedReference().name);\n const parentRef: ComponentFramework.EntityReference[] = currentRecord.getValue(this._getNativeColumns().parentId);\n const parentId = parentRef?.[0]?.id?.guid;\n currentRecord = parentId ? recordsMap[parentId] : null;\n }\n\n pathIds = pathIdParts;\n pathStrings = pathStringParts;\n pathCache.set(recordId, { pathIds, pathStrings });\n }\n\n this._nodeMap.set(recordId, {\n directChildren: filteredDirectChildren,\n allChildren: allChildren,\n pathIds,\n pathStrings,\n parent: parentRecord,\n index\n });\n }\n this._isFlat = filteredTopLevelRecords.every(record => this._nodeMap.get(record.getRecordId())!.directChildren.length === 0);\n const rootTaskId = this._getTaskDataProvider().getRootTaskId();\n if (!rootTaskId) {\n if (this._getTaskDataProvider().isFlatListEnabled()) {\n const directlyMatchingRecords: IRecord[] = allRecordsWithMatching.filter(r => this._matchingRecordsMap[r.getRecordId()]);\n this._nodeMap.set(null as any, {\n directChildren: directlyMatchingRecords,\n allChildren: directlyMatchingRecords,\n pathIds: [],\n pathStrings: [],\n index: -1\n });\n this._totalUniqueRecords = directlyMatchingRecords.length;\n this._sortedRecordIds = directlyMatchingRecords.map(r => r.getRecordId());\n }\n else {\n this._nodeMap.set(null as any, {\n directChildren: filteredTopLevelRecords,\n allChildren: allRecordsWithMatching,\n pathIds: [],\n pathStrings: [],\n index: -1\n });\n this._totalUniqueRecords = allRecordsWithMatching.length;\n this._sortedRecordIds = allRecordsWithMatching.map(r => r.getRecordId());\n }\n }\n else {\n const topLevelNode = this._nodeMap.get(rootTaskId);\n if (this._getTaskDataProvider().isFlatListEnabled()) {\n const directlyMatchingRecords: IRecord[] = topLevelNode?.allChildren.filter(r => this._matchingRecordsMap[r.getRecordId()]) || [];\n topLevelNode!.directChildren = directlyMatchingRecords;\n topLevelNode!.allChildren = directlyMatchingRecords;\n }\n this._nodeMap.set(null as any, topLevelNode!);\n this._totalUniqueRecords = topLevelNode!.allChildren.length;\n this._sortedRecordIds = topLevelNode!.allChildren.map(r => r.getRecordId());\n }\n return this._nodeMap;\n }\n\n\n private _buildMatchingRecords() {\n this._matchingRecordsMap = {};\n const provider = this._createBaseProvider();\n provider.onGetQuickFindColumns = () => this._getTaskDataProvider().getQuickFindColumns();\n provider.setFiltering(this._getTaskDataProvider().getFiltering());\n provider.setSearchQuery(this._getTaskDataProvider().getSearchQuery());\n provider.refreshSync();\n this._matchingRecordsMap = provider.getRecordsMap();\n }\n\n private _buildSortingMap() {\n this._sortingMap = {};\n let index = -1;\n const provider = this._createBaseProvider();\n provider.addEventListener('onRecordLoaded', (record) => {\n this._sortingMap[record.getRecordId()] = ++index;\n });\n provider.refreshSync();\n }\n\n private _createBaseProvider(): MemoryDataProvider {\n const taskDataProvider = this._getTaskDataProvider();\n const provider = new MemoryDataProvider({\n dataSource: taskDataProvider.getDataSource(),\n metadata: taskDataProvider.getMetadata()\n });\n patchDataBuilderPrepare({ provider, records: this._records });\n provider.getPaging().setPageSize(taskDataProvider.getDataSource().length);\n provider.setSorting(taskDataProvider.getSorting());\n provider.setColumns(taskDataProvider.getColumns());\n return provider;\n }\n\n private _buildPathForRecord(recordId: string): string[] {\n const path: string[] = [];\n const recordsMap = this._recordsMap;\n const parentIdName = this._getNativeColumns().parentId;\n let record: IRecord | undefined = recordsMap[recordId];\n const visited = new Set<string>();\n while (record) {\n const currentId = record.getRecordId();\n if (visited.has(currentId)) break;\n visited.add(currentId);\n path.unshift(record.getNamedReference().name);\n const parentId: string = record?.getValue(parentIdName)?.[0]?.id?.guid;\n record = recordsMap[parentId];\n }\n return path;\n }\n\n private _patchRecordPaths() {\n if(!this._getTaskDataProvider().getColumnsMap()[this._getNativeColumns().path]) return;\n for (const record of this._records) {\n const path = this._buildPathForRecord(record.getRecordId());\n const field = record.getField(this._getNativeColumns().path);\n const pathString = path.join('/');\n //@ts-ignore\n field._originalValue = pathString;\n //@ts-ignore\n field._currentValue = pathString;\n }\n }\n\n private _getNativeColumns(): ReturnType<ITaskDataProvider['getNativeColumns']> {\n return this._getTaskDataProvider().getNativeColumns();\n }\n\n private _getTaskDataProvider(): ITaskDataProvider {\n const provider = this._taskDataProvider;\n if (!provider) {\n throw new Error('TaskDataProvider dependency not provided!');\n }\n return provider;\n }\n}"],"names":[],"mappings":";;;MAoCa,UAAU,CAAA;AAWnB,IAAA,WAAA,CAAY,UAAiC,EAAA;AAVrC,QAAA,IAAA,CAAA,QAAQ,GAA2B,IAAI,GAAG,EAAE,CAAC;QAC7C,IAAW,CAAA,WAAA,GAAmC,EAAE,CAAC;QACjD,IAAmB,CAAA,mBAAA,GAAoC,EAAE,CAAC;QAC1D,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QACzB,IAAmB,CAAA,mBAAA,GAAW,CAAC,CAAC;QAChC,IAAgB,CAAA,gBAAA,GAAa,EAAE,CAAC;QAChC,IAAQ,CAAA,QAAA,GAAc,EAAE,CAAC;QACzB,IAAW,CAAA,WAAA,GAAoC,EAAE,CAAC;AAItD,QAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,gBAAgB,CAAC;KACxD;IAEM,UAAU,GAAA;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IACM,aAAa,GAAA;QAChB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;IACM,MAAM,GAAA;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IACM,kBAAkB,GAAA;QACrB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AACM,IAAA,OAAO,CAAC,QAAuB,EAAA;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAe,CAAE,CAAC;KAC9C;AAEM,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC/B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;AAC7D,QAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,YAAY,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;IAEM,KAAK,GAAA;QACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;;AAE1D,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,qBAAqB,EAAE,CAAC;;AAG7B,QAAA,MAAM,WAAW,GAAG,CAAC,CAAU,EAAE,CAAU,KAAY;AACnD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC;AAC5E,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC;YAC5E,OAAO,MAAM,GAAG,MAAM,CAAC;AAC3B,SAAC,CAAC;AAEF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;AAEpC,QAAA,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC5D,MAAM,eAAe,GAAc,EAAE,CAAC;AAEtC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1B,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;AAE1C,YAAA,IAAI,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACvC,oBAAA,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC5C,iBAAA;gBACD,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtD,aAAA;AACI,iBAAA;AACD,gBAAA,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,aAAA;AACJ,SAAA;AAED,QAAA,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,sBAAsB,EAAE;AAC/C,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9B,SAAA;AAED,QAAA,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAAmB,CAAC;AAC9D,QAAA,MAAM,8BAA8B,GAAG,CAAC,QAAgB,KAAa;AACjE,YAAA,IAAI,0BAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC1C,gBAAA,OAAO,0BAA0B,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;AACpD,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE;AACpC,gBAAA,0BAA0B,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC/C,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;;AAGD,YAAA,0BAA0B,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAChD,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAClE,YAAA,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,IACzC,8BAA8B,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CACtD,CAAC;AAEF,YAAA,0BAA0B,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACtD,YAAA,OAAO,WAAW,CAAC;AACvB,SAAC,CAAC;AAEF,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1B,YAAA,8BAA8B,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACxD,SAAA;AAED,QAAA,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAqB,CAAC;AACzD,QAAA,MAAM,8BAA8B,GAAG,IAAI,GAAG,EAAqB,CAAC;AACpE,QAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE7C,QAAA,MAAM,cAAc,GAAG,CAAC,QAAgB,KAAe;AACnD,YAAA,IAAI,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACnC,gBAAA,OAAO,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;AAC7C,aAAA;;AAGD,YAAA,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAClC,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAwC,qCAAA,EAAA,UAAU,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC,IAAI,MAAM,QAAQ,CAAA,sIAAA,CAAwI,CAAC,CAAC;AAC3P,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;AACD,YAAA,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEjC,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClE,MAAM,WAAW,GAAc,EAAE,CAAC;YAElC,MAAM,sBAAsB,GAAc,EAAE,CAAC;AAE7C,YAAA,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;gBAChC,IAAI,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE;AACrD,oBAAA,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,oBAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,oBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC5D,iBAAA;AACJ,aAAA;AAED,YAAA,8BAA8B,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AACrE,YAAA,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC/C,YAAA,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACpC,YAAA,OAAO,WAAW,CAAC;AACvB,SAAC,CAAC;QAEF,MAAM,uBAAuB,GAAc,EAAE,CAAC;QAC9C,MAAM,sBAAsB,GAAc,EAAE,CAAC;AAE7C,QAAA,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;YAClC,IAAI,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE;AACtD,gBAAA,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,aAAA;AACJ,SAAA;AAED,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC1B,IAAI,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE;AACtD,gBAAA,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC,aAAA;AACD,YAAA,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEzC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1B,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;AACtC,YAAA,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAC;AAEvE,YAAA,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,sBAAsB,GAAG,8BAA8B,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAElF,IAAI,YAAY,GAAwB,SAAS,CAAC;AAElD,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;YAEf,IAAI,CAAC,UAAU,EAAE;AACb,gBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAC;gBACrE,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;AAC1C,gBAAA,IAAI,QAAQ,EAAE;AACV,oBAAA,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACpC,MAAM,sBAAsB,GAAG,8BAA8B,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAClF,oBAAA,KAAK,GAAG,sBAAsB,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC;AAC3F,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,KAAK,GAAG,uBAAuB,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC;AAChG,aAAA;YAED,IAAI,OAAO,GAAa,EAAE,CAAC;YAC3B,IAAI,WAAW,GAAa,EAAE,CAAC;AAC/B,YAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwD,CAAC;AAClF,YAAA,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACzB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;AACxC,gBAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,gBAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACpC,aAAA;AACI,iBAAA;gBACD,MAAM,WAAW,GAAa,EAAE,CAAC;gBACjC,MAAM,eAAe,GAAa,EAAE,CAAC;gBACrC,IAAI,aAAa,GAAmB,MAAM,CAAC;AAC3C,gBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;AAElC,gBAAA,OAAO,aAAa,EAAE;AAClB,oBAAA,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;AAC9C,oBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;wBAAE,MAAM;AAClC,oBAAA,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAEvB,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;oBACjD,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC;AAChE,oBAAA,MAAM,SAAS,GAAyC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAC;oBAClH,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;AAC1C,oBAAA,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;AAC1D,iBAAA;gBAED,OAAO,GAAG,WAAW,CAAC;gBACtB,WAAW,GAAG,eAAe,CAAC;gBAC9B,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AACrD,aAAA;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE;AACxB,gBAAA,cAAc,EAAE,sBAAsB;AACtC,gBAAA,WAAW,EAAE,WAAW;gBACxB,OAAO;gBACP,WAAW;AACX,gBAAA,MAAM,EAAE,YAAY;gBACpB,KAAK;AACR,aAAA,CAAC,CAAC;AACN,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAE,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QAC7H,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,aAAa,EAAE,CAAC;QAC/D,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC,iBAAiB,EAAE,EAAE;gBACjD,MAAM,uBAAuB,GAAc,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACzH,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAW,EAAE;AAC3B,oBAAA,cAAc,EAAE,uBAAuB;AACvC,oBAAA,WAAW,EAAE,uBAAuB;AACpC,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,WAAW,EAAE,EAAE;oBACf,KAAK,EAAE,CAAC,CAAC;AACZ,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,mBAAmB,GAAG,uBAAuB,CAAC,MAAM,CAAC;AAC1D,gBAAA,IAAI,CAAC,gBAAgB,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7E,aAAA;AACI,iBAAA;AACD,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAW,EAAE;AAC3B,oBAAA,cAAc,EAAE,uBAAuB;AACvC,oBAAA,WAAW,EAAE,sBAAsB;AACnC,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,WAAW,EAAE,EAAE;oBACf,KAAK,EAAE,CAAC,CAAC;AACZ,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,mBAAmB,GAAG,sBAAsB,CAAC,MAAM,CAAC;AACzD,gBAAA,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5E,aAAA;AACJ,SAAA;AACI,aAAA;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACnD,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC,iBAAiB,EAAE,EAAE;gBACjD,MAAM,uBAAuB,GAAc,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAClI,gBAAA,YAAa,CAAC,cAAc,GAAG,uBAAuB,CAAC;AACvD,gBAAA,YAAa,CAAC,WAAW,GAAG,uBAAuB,CAAC;AACvD,aAAA;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAW,EAAE,YAAa,CAAC,CAAC;YAC9C,IAAI,CAAC,mBAAmB,GAAG,YAAa,CAAC,WAAW,CAAC,MAAM,CAAC;AAC5D,YAAA,IAAI,CAAC,gBAAgB,GAAG,YAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/E,SAAA;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAGO,qBAAqB,GAAA;AACzB,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAC9B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5C,QAAA,QAAQ,CAAC,qBAAqB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,mBAAmB,EAAE,CAAC;QACzF,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;QAClE,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;QACtE,QAAQ,CAAC,WAAW,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;KACvD;IAEO,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AACf,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5C,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,MAAM,KAAI;YACnD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;AACrD,SAAC,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,EAAE,CAAC;KAC1B;IAEO,mBAAmB,GAAA;AACvB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACrD,QAAA,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC;AACpC,YAAA,UAAU,EAAE,gBAAgB,CAAC,aAAa,EAAE;AAC5C,YAAA,QAAQ,EAAE,gBAAgB,CAAC,WAAW,EAAE;AAC3C,SAAA,CAAC,CAAC;QACH,uBAAuB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9D,QAAA,QAAQ,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;QAC1E,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;QACnD,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;AACnD,QAAA,OAAO,QAAQ,CAAC;KACnB;AAEO,IAAA,mBAAmB,CAAC,QAAgB,EAAA;QACxC,MAAM,IAAI,GAAa,EAAE,CAAC;AAC1B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;AACvD,QAAA,IAAI,MAAM,GAAwB,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvD,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;AAClC,QAAA,OAAO,MAAM,EAAE;AACX,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;AACvC,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,MAAM;AAClC,YAAA,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC;AAC9C,YAAA,MAAM,QAAQ,GAAW,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;AACvE,YAAA,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEO,iBAAiB,GAAA;AACrB,QAAA,IAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC;YAAE,OAAO;AACvF,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5D,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AAElC,YAAA,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC;;AAElC,YAAA,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC;AACpC,SAAA;KACJ;IAEO,iBAAiB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,gBAAgB,EAAE,CAAC;KACzD;IAEO,oBAAoB,GAAA;AACxB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACxC,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAChE,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC;KACnB;AACJ;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patchDataBuilderPrepare.js","sources":["../../../../../../src/components/TaskGrid/providers/task/record-tree/patchDataBuilderPrepare.ts"],"sourcesContent":["import { IMemoryProvider, IRecord } from \"@talxis/client-libraries\";\nimport { DataBuilder } from \"@talxis/client-libraries/dist/utils/dataset/data-providers/memory-provider/DataBuilder\";\n\nexport const patchDataBuilderPrepare = (options: { provider: IMemoryProvider; records: IRecord[] }) => {\n const { provider, records } = options;\n //@ts-ignore - typings\n const dataBuilder: any = provider._dataBuilder;\n\n dataBuilder.prepare = function () {\n const topLevelDataProvider = this._dataProvider.getTopLevelDataProvider() as IMemoryProvider;\n topLevelDataProvider.setCustomProperty('blockInternalOnRecordLoaded', true);\n this._allRecords = records;\n this._finalRecords = this._allRecords;\n topLevelDataProvider.setCustomProperty('blockInternalOnRecordLoaded', false);\n return this;\n };\n\n}"],"names":[],"mappings":"AAGa,MAAA,uBAAuB,GAAG,CAAC,OAA0D,KAAI;AAClG,IAAA,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;;AAEtC,IAAA,MAAM,WAAW,GAAQ,QAAQ,CAAC,YAAY,CAAC;IAE/C,WAAW,CAAC,OAAO,GAAG,YAAA;QAClB,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAqB,CAAC;AAC7F,QAAA,oBAAoB,CAAC,iBAAiB,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;AACtC,QAAA,oBAAoB,CAAC,iBAAiB,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;AAC7E,QAAA,OAAO,IAAI,CAAC;AAChB,KAAC,CAAC;AAEN;;;;"}