@talxis/base-controls 1.2604.2 → 1.2605.2-alpha

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 (248) 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/Lookup/Lookup.js +4 -1
  4. package/dist/components/Lookup/Lookup.js.map +1 -1
  5. package/dist/components/Lookup/hooks/useLookup.d.ts +4 -0
  6. package/dist/components/Lookup/translations.d.ts +4 -0
  7. package/dist/components/Lookup/translations.js +4 -0
  8. package/dist/components/Lookup/translations.js.map +1 -1
  9. package/dist/components/TaskGrid/TaskGrid.js +3 -4
  10. package/dist/components/TaskGrid/TaskGrid.js.map +1 -1
  11. package/dist/components/TaskGrid/TaskGridDatasetControl.d.ts +16 -5
  12. package/dist/components/TaskGrid/TaskGridDatasetControl.js +32 -13
  13. package/dist/components/TaskGrid/TaskGridDatasetControl.js.map +1 -1
  14. package/dist/components/TaskGrid/TaskGridDatasetControlFactory.d.ts +3 -2
  15. package/dist/components/TaskGrid/TaskGridDatasetControlFactory.js +7 -5
  16. package/dist/components/TaskGrid/TaskGridDatasetControlFactory.js.map +1 -1
  17. package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/AddTaskButton.js +3 -8
  18. package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/AddTaskButton.js.map +1 -1
  19. package/dist/components/TaskGrid/components/grid/cell-renderers/lookup-many/LookupManyCellRenderer.d.ts +7 -0
  20. package/dist/components/TaskGrid/components/grid/cell-renderers/lookup-many/LookupManyCellRenderer.js +99 -0
  21. package/dist/components/TaskGrid/components/grid/cell-renderers/lookup-many/LookupManyCellRenderer.js.map +1 -0
  22. package/dist/components/TaskGrid/components/grid/cell-renderers/lookup-many/index.d.ts +1 -0
  23. package/dist/components/TaskGrid/components/grid/cell-renderers/lookup-many/index.js +2 -0
  24. package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.d.ts +1 -0
  25. package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.js +2 -1
  26. package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.js.map +1 -1
  27. package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/index.js +1 -1
  28. package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.d.ts +2 -7
  29. package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.js +44 -18
  30. package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.js.map +1 -1
  31. package/dist/components/TaskGrid/components/grid/grid-drag-handler/GridDragHandler.js.map +1 -1
  32. package/dist/components/TaskGrid/components/grid/lookup-many/LookupMany.d.ts +13 -0
  33. package/dist/components/TaskGrid/components/grid/lookup-many/LookupMany.js +82 -0
  34. package/dist/components/TaskGrid/components/grid/lookup-many/LookupMany.js.map +1 -0
  35. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/ColorfulLookupMany.d.ts +5 -0
  36. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/ColorfulLookupMany.js +12 -0
  37. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/ColorfulLookupMany.js.map +1 -0
  38. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/index.d.ts +2 -0
  39. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/index.js +13 -0
  40. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/index.js.map +1 -0
  41. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/multi-value-container/MultiValueContainer.d.ts +3 -0
  42. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/multi-value-container/MultiValueContainer.js +17 -0
  43. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/multi-value-container/MultiValueContainer.js.map +1 -0
  44. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/multi-value-container/index.d.ts +1 -0
  45. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/multi-value-container/index.js +2 -0
  46. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/Option.d.ts +3 -0
  47. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/Option.js +17 -0
  48. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/Option.js.map +1 -0
  49. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/index.d.ts +1 -0
  50. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/index.js +2 -0
  51. package/dist/components/TaskGrid/{data-providers/custom-columns-data-provider → components/grid/lookup-many/colorful-lookup-many/components/option}/index.js.map +1 -1
  52. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/styles.d.ts +14 -0
  53. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/styles.js +21 -0
  54. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/option/styles.js.map +1 -0
  55. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/context.d.ts +4 -0
  56. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/context.js +9 -0
  57. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/context.js.map +1 -0
  58. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/index.d.ts +1 -0
  59. package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/index.js +2 -0
  60. package/dist/components/TaskGrid/{data-providers/saved-query-data-provider → components/grid/lookup-many/colorful-lookup-many}/index.js.map +1 -1
  61. package/dist/components/TaskGrid/components/grid/lookup-many/components/index.d.ts +10 -0
  62. package/dist/components/TaskGrid/components/grid/lookup-many/components/index.js +15 -0
  63. package/dist/components/TaskGrid/components/grid/lookup-many/components/index.js.map +1 -0
  64. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/MultiValueContainer.d.ts +3 -0
  65. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/MultiValueContainer.js +15 -0
  66. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/MultiValueContainer.js.map +1 -0
  67. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/index.d.ts +1 -0
  68. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/index.js +2 -0
  69. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/index.js.map +1 -0
  70. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/styles.d.ts +18 -0
  71. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/styles.js +24 -0
  72. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/styles.js.map +1 -0
  73. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/MultiValueLabel.d.ts +3 -0
  74. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/MultiValueLabel.js +21 -0
  75. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/MultiValueLabel.js.map +1 -0
  76. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/index.d.ts +1 -0
  77. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/index.js +2 -0
  78. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/index.js.map +1 -0
  79. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/styles.d.ts +15 -0
  80. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/styles.js +22 -0
  81. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-label/styles.js.map +1 -0
  82. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-remove/MultiValueRemove.d.ts +3 -0
  83. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-remove/MultiValueRemove.js +18 -0
  84. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-remove/MultiValueRemove.js.map +1 -0
  85. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-remove/styles.d.ts +22 -0
  86. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-remove/styles.js +28 -0
  87. package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-remove/styles.js.map +1 -0
  88. package/dist/components/TaskGrid/components/grid/lookup-many/context.d.ts +4 -0
  89. package/dist/components/TaskGrid/components/grid/lookup-many/context.js +9 -0
  90. package/dist/components/TaskGrid/components/grid/lookup-many/context.js.map +1 -0
  91. package/dist/components/TaskGrid/components/grid/lookup-many/index.d.ts +4 -0
  92. package/dist/components/TaskGrid/components/grid/lookup-many/index.js +5 -0
  93. package/dist/components/TaskGrid/components/grid/lookup-many/index.js.map +1 -0
  94. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/PeopleLookupMany.d.ts +5 -0
  95. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/PeopleLookupMany.js +12 -0
  96. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/PeopleLookupMany.js.map +1 -0
  97. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/index.d.ts +2 -0
  98. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/index.js +13 -0
  99. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/index.js.map +1 -0
  100. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/MultiValueLabel.d.ts +3 -0
  101. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/MultiValueLabel.js +17 -0
  102. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/MultiValueLabel.js.map +1 -0
  103. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/index.d.ts +1 -0
  104. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/index.js +2 -0
  105. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/index.js.map +1 -0
  106. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/styles.d.ts +5 -0
  107. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/styles.js +6 -0
  108. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/styles.js.map +1 -0
  109. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/Option.d.ts +3 -0
  110. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/Option.js +16 -0
  111. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/Option.js.map +1 -0
  112. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/index.d.ts +1 -0
  113. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/index.js +2 -0
  114. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/index.js.map +1 -0
  115. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/styles.d.ts +10 -0
  116. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/styles.js +11 -0
  117. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/option/styles.js.map +1 -0
  118. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/context.d.ts +4 -0
  119. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/context.js +9 -0
  120. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/context.js.map +1 -0
  121. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/index.d.ts +1 -0
  122. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/index.js +2 -0
  123. package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/index.js.map +1 -0
  124. package/dist/components/TaskGrid/components/grid/multi-record-selector/MultiRecordSelector.d.ts +1 -0
  125. package/dist/components/TaskGrid/components/grid/multi-record-selector/MultiRecordSelector.js +27 -14
  126. package/dist/components/TaskGrid/components/grid/multi-record-selector/MultiRecordSelector.js.map +1 -1
  127. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-container/MultiValueContainer.d.ts +3 -0
  128. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-container/MultiValueContainer.js +13 -0
  129. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-container/MultiValueContainer.js.map +1 -0
  130. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-container/styles.d.ts +18 -0
  131. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-container/styles.js +24 -0
  132. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-container/styles.js.map +1 -0
  133. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/MultiValueLabel.d.ts +3 -0
  134. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/MultiValueLabel.js +19 -0
  135. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/MultiValueLabel.js.map +1 -0
  136. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/styles.d.ts +12 -0
  137. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/styles.js +19 -0
  138. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/styles.js.map +1 -0
  139. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-remove/MultiValueRemove.d.ts +3 -0
  140. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-remove/MultiValueRemove.js +16 -0
  141. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-remove/MultiValueRemove.js.map +1 -0
  142. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-remove/styles.d.ts +22 -0
  143. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-remove/styles.js +28 -0
  144. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-remove/styles.js.map +1 -0
  145. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/option/Option.d.ts +3 -0
  146. package/dist/components/TaskGrid/components/grid/multi-record-selector/components/option/styles.d.ts +16 -0
  147. package/dist/components/TaskGrid/components/grid/multi-record-selector/styles.d.ts +3 -0
  148. package/dist/components/TaskGrid/components/grid/multi-record-selector/styles.js +15 -0
  149. package/dist/components/TaskGrid/components/grid/multi-record-selector/styles.js.map +1 -0
  150. package/dist/components/TaskGrid/components/header/Header.js +5 -4
  151. package/dist/components/TaskGrid/components/header/Header.js.map +1 -1
  152. package/dist/components/TaskGrid/components/header/edit-columns/EditColumns.js.map +1 -1
  153. package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/CreateViewDialog.js.map +1 -1
  154. package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManager.js.map +1 -1
  155. package/dist/components/TaskGrid/context.d.ts +5 -4
  156. package/dist/components/TaskGrid/context.js.map +1 -1
  157. package/dist/components/TaskGrid/extensions/LexoRank.d.ts +7 -0
  158. package/dist/components/TaskGrid/extensions/dataverse/DataverseCustomColumnsStrategy.d.ts +69 -0
  159. package/dist/components/TaskGrid/{data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.js → extensions/dataverse/DataverseCustomColumnsStrategy.js} +35 -3
  160. package/dist/components/TaskGrid/extensions/dataverse/DataverseCustomColumnsStrategy.js.map +1 -0
  161. package/dist/components/TaskGrid/extensions/dataverse/DataverseGridCustomizerStrategy.d.ts +20 -0
  162. package/dist/components/TaskGrid/extensions/dataverse/DataverseGridCustomizerStrategy.js +42 -0
  163. package/dist/components/TaskGrid/extensions/dataverse/DataverseGridCustomizerStrategy.js.map +1 -0
  164. package/dist/components/TaskGrid/extensions/dataverse/DataverseSavedQueryStrategy.d.ts +49 -0
  165. package/dist/components/TaskGrid/{data-providers/saved-query-data-provider/TalxisSavedQueryDataProvider.js → extensions/dataverse/DataverseSavedQueryStrategy.js} +37 -15
  166. package/dist/components/TaskGrid/extensions/dataverse/DataverseSavedQueryStrategy.js.map +1 -0
  167. package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskGridDescriptor.d.ts +100 -0
  168. package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskGridDescriptor.js +145 -0
  169. package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskGridDescriptor.js.map +1 -0
  170. package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskStrategy.d.ts +122 -0
  171. package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskStrategy.js +453 -0
  172. package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskStrategy.js.map +1 -0
  173. package/dist/components/TaskGrid/extensions/dataverse/index.d.ts +5 -0
  174. package/dist/components/TaskGrid/extensions/dataverse/index.js +6 -0
  175. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/LookupManyHandler.d.ts +49 -0
  176. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/LookupManyHandler.js +145 -0
  177. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/LookupManyHandler.js.map +1 -0
  178. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlDataProviderFactory.d.ts +11 -0
  179. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlDataProviderFactory.js +16 -0
  180. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlDataProviderFactory.js.map +1 -0
  181. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlLookupManyCellRenderer.d.ts +2 -0
  182. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlLookupManyCellRenderer.js +29 -0
  183. package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlLookupManyCellRenderer.js.map +1 -0
  184. package/dist/components/TaskGrid/interfaces.d.ts +30 -12
  185. package/dist/components/TaskGrid/labels.d.ts +1 -15
  186. package/dist/components/TaskGrid/labels.js +2 -16
  187. package/dist/components/TaskGrid/labels.js.map +1 -1
  188. package/dist/components/TaskGrid/{data-providers/custom-columns-data-provider → providers/custom-columns}/CustomColumnsDataProvider.d.ts +5 -1
  189. package/dist/components/TaskGrid/providers/custom-columns/CustomColumnsDataProvider.js.map +1 -0
  190. package/dist/components/TaskGrid/providers/custom-columns/index.d.ts +1 -0
  191. package/dist/components/TaskGrid/providers/custom-columns/index.js +2 -0
  192. package/dist/components/TaskGrid/providers/custom-columns/index.js.map +1 -0
  193. package/dist/components/TaskGrid/providers/index.d.ts +3 -0
  194. package/dist/components/TaskGrid/providers/index.js +4 -0
  195. package/dist/components/TaskGrid/providers/index.js.map +1 -0
  196. package/dist/components/TaskGrid/{data-providers/saved-query-data-provider → providers/saved-query}/SavedQueryDataProvider.d.ts +13 -8
  197. package/dist/components/TaskGrid/{data-providers/saved-query-data-provider → providers/saved-query}/SavedQueryDataProvider.js +87 -50
  198. package/dist/components/TaskGrid/providers/saved-query/SavedQueryDataProvider.js.map +1 -0
  199. package/dist/components/TaskGrid/providers/saved-query/index.d.ts +1 -0
  200. package/dist/components/TaskGrid/providers/saved-query/index.js +2 -0
  201. package/dist/components/TaskGrid/providers/saved-query/index.js.map +1 -0
  202. package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/TaskDataProvider.d.ts +15 -22
  203. package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/TaskDataProvider.js +35 -26
  204. package/dist/components/TaskGrid/providers/task/TaskDataProvider.js.map +1 -0
  205. package/dist/components/TaskGrid/providers/task/index.js.map +1 -0
  206. package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/record-tree/RecordTree.js +2 -0
  207. package/dist/components/TaskGrid/providers/task/record-tree/RecordTree.js.map +1 -0
  208. package/dist/components/TaskGrid/providers/task/record-tree/index.js.map +1 -0
  209. package/dist/components/TaskGrid/providers/task/record-tree/patchDataBuilderPrepare.js.map +1 -0
  210. package/dist/index.d.ts +177 -165
  211. package/dist/index.js +1 -0
  212. package/dist/index.js.map +1 -1
  213. package/dist/utils/index.d.ts +1 -0
  214. package/dist/utils/index.js +1 -0
  215. package/dist/utils/index.js.map +1 -1
  216. package/dist/utils/localization/LocalizationService.d.ts +15 -0
  217. package/dist/utils/localization/LocalizationService.js +17 -0
  218. package/dist/utils/localization/LocalizationService.js.map +1 -0
  219. package/dist/utils/localization/index.d.ts +1 -0
  220. package/dist/utils/localization/index.js +2 -0
  221. package/dist/utils/localization/index.js.map +1 -0
  222. package/package.json +5 -4
  223. package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/CustomColumnsDataProvider.js.map +0 -1
  224. package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.d.ts +0 -33
  225. package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.js.map +0 -1
  226. package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/index.d.ts +0 -2
  227. package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/index.js +0 -3
  228. package/dist/components/TaskGrid/data-providers/index.d.ts +0 -3
  229. package/dist/components/TaskGrid/data-providers/index.js +0 -6
  230. package/dist/components/TaskGrid/data-providers/saved-query-data-provider/SavedQueryDataProvider.js.map +0 -1
  231. package/dist/components/TaskGrid/data-providers/saved-query-data-provider/TalxisSavedQueryDataProvider.d.ts +0 -21
  232. package/dist/components/TaskGrid/data-providers/saved-query-data-provider/TalxisSavedQueryDataProvider.js.map +0 -1
  233. package/dist/components/TaskGrid/data-providers/saved-query-data-provider/index.d.ts +0 -2
  234. package/dist/components/TaskGrid/data-providers/saved-query-data-provider/index.js +0 -3
  235. package/dist/components/TaskGrid/data-providers/task-data-provider/TaskDataProvider.js.map +0 -1
  236. package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/RecordTree.js.map +0 -1
  237. package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/patchDataBuilderPrepare.js.map +0 -1
  238. /package/dist/components/TaskGrid/{data-providers/task-data-provider → components/grid/cell-renderers/lookup-many}/index.js.map +0 -0
  239. /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
  240. /package/dist/components/TaskGrid/{data-providers → extensions/dataverse}/index.js.map +0 -0
  241. /package/dist/components/TaskGrid/{data-providers/custom-columns-data-provider → providers/custom-columns}/CustomColumnsDataProvider.js +0 -0
  242. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/index.d.ts +0 -0
  243. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/index.js +0 -0
  244. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/record-tree/RecordTree.d.ts +0 -0
  245. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/record-tree/index.d.ts +0 -0
  246. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/record-tree/index.js +0 -0
  247. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/record-tree/patchDataBuilderPrepare.d.ts +0 -0
  248. /package/dist/components/TaskGrid/{data-providers/task-data-provider → providers/task}/record-tree/patchDataBuilderPrepare.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"TaskGridDatasetControlFactory.js","sources":["../../../src/components/TaskGrid/TaskGridDatasetControlFactory.ts"],"sourcesContent":["import { Dataset } from \"@talxis/client-libraries\";\nimport { ITaskDataProvider, TaskDataProvider } from \"./data-providers/task-data-provider\";\nimport { ILocalizationService, ITaskGridLabels } from \"./labels\";\nimport { ISavedQuery, ISavedQueryDataProvider, SavedQueryDataProvider } from \"./data-providers/saved-query-data-provider\";\nimport { RecordTree } from \"./data-providers/task-data-provider/record-tree\";\nimport { CustomColumnsDataProvider } from \"./data-providers/custom-columns-data-provider/CustomColumnsDataProvider\";\nimport { ITaskGridDatasetControl, ITaskGridDescriptor } from \"./interfaces\";\nimport { TaskGridDatasetControl } from \"./TaskGridDatasetControl\";\n\nexport interface ITaskGridState {\n savedQuery?: Partial<ISavedQuery> & { id: string; linking?: ComponentFramework.PropertyHelper.DataSetApi.LinkEntityExposedExpression[] };\n}\n\ninterface ITaskGridDatasetControlFactoryParameters {\n state: ITaskGridState;\n taskGridDescriptor: ITaskGridDescriptor;\n localizationService: ILocalizationService<ITaskGridLabels>;\n onGetPcfContext: () => ComponentFramework.Context<any>;\n}\n\nexport class TaskGridDatasetControlFactory {\n //makes sure the instance is created after the dependencies are loaded, and handles creation of data providers and dataset\n public static async createInstance(parameters: ITaskGridDatasetControlFactoryParameters): Promise<ITaskGridDatasetControl> {\n let taskDataProvider: ITaskDataProvider;\n await parameters.taskGridDescriptor.onLoadDependencies?.();\n\n const customColumnsStrategy = parameters.taskGridDescriptor.onCreateCustomColumnsStrategy?.();\n let customColumnsDataProvider: CustomColumnsDataProvider | undefined;\n if (customColumnsStrategy) {\n customColumnsDataProvider = new CustomColumnsDataProvider(customColumnsStrategy);\n }\n await customColumnsDataProvider?.refresh();\n\n const savedQueryStrategy = parameters.taskGridDescriptor.onCreateSavedQueryStrategy();\n const savedQueryDataProvider = new SavedQueryDataProvider(savedQueryStrategy, {\n nativeColumns: parameters.taskGridDescriptor.onGetNativeColumns(),\n customColumnsDataProvider: customColumnsDataProvider,\n preferredQuery: parameters.state.savedQuery,\n })\n const templateDataProvider = parameters.taskGridDescriptor.onCreateTemplateDataProvider?.();\n await savedQueryDataProvider.refresh();\n\n const taskStrategy = parameters.taskGridDescriptor.onCreateTaskStrategy({\n templateDataProvider: templateDataProvider,\n customColumnsDataProvider: customColumnsDataProvider,\n })\n\n taskDataProvider = new TaskDataProvider({\n localizationService: parameters.localizationService,\n nativeColumns: parameters.taskGridDescriptor.onGetNativeColumns(),\n strategy: taskStrategy,\n onIsFlatListEnabled: () => TaskGridDatasetControlFactory._getIsFlatlistEnabled(parameters, savedQueryDataProvider)\n });\n\n const dataset = new Dataset(taskDataProvider);\n\n return new TaskGridDatasetControl({\n dataset,\n state: parameters.state,\n taskGridDescriptor: parameters.taskGridDescriptor,\n templateDataProvider: templateDataProvider,\n localizationService: parameters.localizationService,\n savedQueryDataProvider: savedQueryDataProvider,\n customColumnsDataProvider: customColumnsDataProvider,\n onGetPcfContext: () => parameters.onGetPcfContext(),\n });\n }\n\n private static _getIsFlatlistEnabled(parameters: ITaskGridDatasetControlFactoryParameters, savedQueryDataProvider: ISavedQueryDataProvider): boolean {\n const currentQueryId = savedQueryDataProvider.getCurrentQuery().id;\n return parameters.state.savedQuery?.isFlatListEnabled ?? savedQueryDataProvider.getSavedQuery(currentQueryId).isFlatListEnabled ?? false;\n }\n\n}"],"names":[],"mappings":";;;;;;MAoBa,6BAA6B,CAAA;;AAE/B,IAAA,aAAa,cAAc,CAAC,UAAoD,EAAA;AACnF,QAAA,IAAI,gBAAmC,CAAC;AACxC,QAAA,MAAM,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,IAAI,CAAC;QAE3D,MAAM,qBAAqB,GAAG,UAAU,CAAC,kBAAkB,CAAC,6BAA6B,IAAI,CAAC;AAC9F,QAAA,IAAI,yBAAgE,CAAC;AACrE,QAAA,IAAI,qBAAqB,EAAE;AACvB,YAAA,yBAAyB,GAAG,IAAI,yBAAyB,CAAC,qBAAqB,CAAC,CAAC;AACpF,SAAA;AACD,QAAA,MAAM,yBAAyB,EAAE,OAAO,EAAE,CAAC;QAE3C,MAAM,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,CAAC;AACtF,QAAA,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,CAAC,kBAAkB,EAAE;AAC1E,YAAA,aAAa,EAAE,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,EAAE;AACjE,YAAA,yBAAyB,EAAE,yBAAyB;AACpD,YAAA,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU;AAC9C,SAAA,CAAC,CAAA;QACF,MAAM,oBAAoB,GAAG,UAAU,CAAC,kBAAkB,CAAC,4BAA4B,IAAI,CAAC;AAC5F,QAAA,MAAM,sBAAsB,CAAC,OAAO,EAAE,CAAC;AAEvC,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;AACpE,YAAA,oBAAoB,EAAE,oBAAoB;AAC1C,YAAA,yBAAyB,EAAE,yBAAyB;AACvD,SAAA,CAAC,CAAA;QAEF,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;YACpC,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;AACnD,YAAA,aAAa,EAAE,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,EAAE;AACjE,YAAA,QAAQ,EAAE,YAAY;YACtB,mBAAmB,EAAE,MAAM,6BAA6B,CAAC,qBAAqB,CAAC,UAAU,EAAE,sBAAsB,CAAC;AACrH,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAE9C,OAAO,IAAI,sBAAsB,CAAC;YAC9B,OAAO;YACP,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;AACjD,YAAA,oBAAoB,EAAE,oBAAoB;YAC1C,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;AACnD,YAAA,sBAAsB,EAAE,sBAAsB;AAC9C,YAAA,yBAAyB,EAAE,yBAAyB;AACpD,YAAA,eAAe,EAAE,MAAM,UAAU,CAAC,eAAe,EAAE;AACtD,SAAA,CAAC,CAAC;KACN;AAEO,IAAA,OAAO,qBAAqB,CAAC,UAAoD,EAAE,sBAA+C,EAAA;QACtI,MAAM,cAAc,GAAG,sBAAsB,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;AACnE,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,iBAAiB,IAAI,sBAAsB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,iBAAiB,IAAI,KAAK,CAAC;KAC5I;AAEJ;;;;"}
1
+ {"version":3,"file":"TaskGridDatasetControlFactory.js","sources":["../../../src/components/TaskGrid/TaskGridDatasetControlFactory.ts"],"sourcesContent":["import { Dataset } from \"@talxis/client-libraries\";\nimport { ITaskDataProvider, TaskDataProvider } from \"./providers/task\";\nimport { ILocalizationService } from \"../../utils\";\nimport { ITaskGridLabels } from \"./labels\";\nimport { ISavedQuery, ISavedQueryDataProvider, PATH_COLUMN_NAME, SavedQueryDataProvider } from \"./providers/saved-query\";\nimport { CustomColumnsDataProvider } from \"./providers/custom-columns/CustomColumnsDataProvider\";\nimport { ITaskGridDatasetControl, ITaskGridDescriptor } from \"./interfaces\";\nimport { TaskGridDatasetControl } from \"./TaskGridDatasetControl\";\n\nexport interface ITaskGridState {\n savedQuery?: Partial<ISavedQuery> & { id: string; linking?: ComponentFramework.PropertyHelper.DataSetApi.LinkEntityExposedExpression[] };\n}\n\ninterface ITaskGridDatasetControlFactoryParameters {\n state: ITaskGridState;\n taskGridDescriptor: ITaskGridDescriptor;\n localizationService: ILocalizationService<ITaskGridLabels>;\n onGetPcfContext: () => ComponentFramework.Context<any>;\n}\n\nexport class TaskGridDatasetControlFactory {\n //makes sure the instance is created after the dependencies are loaded, and handles creation of data providers and dataset\n public static async createInstance(parameters: ITaskGridDatasetControlFactoryParameters): Promise<ITaskGridDatasetControl> {\n let taskDataProvider: ITaskDataProvider;\n await parameters.taskGridDescriptor.onLoadDependencies?.();\n\n const customColumnsStrategy = parameters.taskGridDescriptor.onCreateCustomColumnsStrategy?.();\n let customColumnsDataProvider: CustomColumnsDataProvider | undefined;\n if (customColumnsStrategy) {\n customColumnsDataProvider = new CustomColumnsDataProvider(customColumnsStrategy);\n }\n await customColumnsDataProvider?.refresh();\n\n const savedQueryStrategy = parameters.taskGridDescriptor.onCreateSavedQueryStrategy();\n const savedQueryDataProvider = new SavedQueryDataProvider(savedQueryStrategy, {\n localizationService: parameters.localizationService,\n nativeColumns: { ...parameters.taskGridDescriptor.onGetFieldMapping(), path: PATH_COLUMN_NAME },\n customColumnsDataProvider: customColumnsDataProvider,\n preferredQuery: parameters.state.savedQuery,\n })\n const templateDataProvider = parameters.taskGridDescriptor.onCreateTemplateDataProvider?.();\n await savedQueryDataProvider.refresh();\n\n const taskStrategy = parameters.taskGridDescriptor.onCreateTaskStrategy({\n templateDataProvider: templateDataProvider,\n customColumnsDataProvider: customColumnsDataProvider,\n })\n\n taskDataProvider = new TaskDataProvider({\n localizationService: parameters.localizationService,\n nativeColumns: { ...parameters.taskGridDescriptor.onGetFieldMapping(), path: PATH_COLUMN_NAME },\n strategy: taskStrategy,\n savedQueryDataProvider: savedQueryDataProvider,\n onIsFlatListEnabled: () => TaskGridDatasetControlFactory._getIsFlatlistEnabled(parameters, savedQueryDataProvider)\n });\n\n const dataset = new Dataset(taskDataProvider);\n\n return new TaskGridDatasetControl({\n dataset,\n state: parameters.state,\n taskGridDescriptor: parameters.taskGridDescriptor,\n templateDataProvider: templateDataProvider,\n localizationService: parameters.localizationService,\n savedQueryDataProvider: savedQueryDataProvider,\n customColumnsDataProvider: customColumnsDataProvider,\n onGetPcfContext: () => parameters.onGetPcfContext(),\n });\n }\n\n private static _getIsFlatlistEnabled(parameters: ITaskGridDatasetControlFactoryParameters, savedQueryDataProvider: ISavedQueryDataProvider): boolean {\n const currentQueryId = savedQueryDataProvider.getCurrentQuery().id;\n return parameters.state.savedQuery?.isFlatListEnabled ?? savedQueryDataProvider.getSavedQuery(currentQueryId).isFlatListEnabled ?? false;\n }\n\n}"],"names":[],"mappings":";;;;;;MAoBa,6BAA6B,CAAA;;AAE/B,IAAA,aAAa,cAAc,CAAC,UAAoD,EAAA;AACnF,QAAA,IAAI,gBAAmC,CAAC;AACxC,QAAA,MAAM,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,IAAI,CAAC;QAE3D,MAAM,qBAAqB,GAAG,UAAU,CAAC,kBAAkB,CAAC,6BAA6B,IAAI,CAAC;AAC9F,QAAA,IAAI,yBAAgE,CAAC;AACrE,QAAA,IAAI,qBAAqB,EAAE;AACvB,YAAA,yBAAyB,GAAG,IAAI,yBAAyB,CAAC,qBAAqB,CAAC,CAAC;AACpF,SAAA;AACD,QAAA,MAAM,yBAAyB,EAAE,OAAO,EAAE,CAAC;QAE3C,MAAM,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,CAAC;AACtF,QAAA,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,CAAC,kBAAkB,EAAE;YAC1E,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;AACnD,YAAA,aAAa,EAAE,EAAE,GAAG,UAAU,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;AAC/F,YAAA,yBAAyB,EAAE,yBAAyB;AACpD,YAAA,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU;AAC9C,SAAA,CAAC,CAAA;QACF,MAAM,oBAAoB,GAAG,UAAU,CAAC,kBAAkB,CAAC,4BAA4B,IAAI,CAAC;AAC5F,QAAA,MAAM,sBAAsB,CAAC,OAAO,EAAE,CAAC;AAEvC,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;AACpE,YAAA,oBAAoB,EAAE,oBAAoB;AAC1C,YAAA,yBAAyB,EAAE,yBAAyB;AACvD,SAAA,CAAC,CAAA;QAEF,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;YACpC,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;AACnD,YAAA,aAAa,EAAE,EAAE,GAAG,UAAU,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;AAC/F,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,sBAAsB,EAAE,sBAAsB;YAC9C,mBAAmB,EAAE,MAAM,6BAA6B,CAAC,qBAAqB,CAAC,UAAU,EAAE,sBAAsB,CAAC;AACrH,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAE9C,OAAO,IAAI,sBAAsB,CAAC;YAC9B,OAAO;YACP,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;AACjD,YAAA,oBAAoB,EAAE,oBAAoB;YAC1C,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;AACnD,YAAA,sBAAsB,EAAE,sBAAsB;AAC9C,YAAA,yBAAyB,EAAE,yBAAyB;AACpD,YAAA,eAAe,EAAE,MAAM,UAAU,CAAC,eAAe,EAAE;AACtD,SAAA,CAAC,CAAC;KACN;AAEO,IAAA,OAAO,qBAAqB,CAAC,UAAoD,EAAE,sBAA+C,EAAA;QACtI,MAAM,cAAc,GAAG,sBAAsB,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;AACnE,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,iBAAiB,IAAI,sBAAsB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,iBAAiB,IAAI,KAAK,CAAC;KAC5I;AAEJ;;;;"}
@@ -12,7 +12,8 @@ const AddTaskButton = (props) => {
12
12
  const datasetControl = useDatasetControl();
13
13
  const localizationService = useLocalizationService();
14
14
  const [isButtonMounted, setIsButtonMounted] = React.useState(true);
15
- const isTaskAddingEnabled = taskDataProvider.isTaskAddingEnabled();
15
+ const isTaskAddingEnabled = datasetControl.isTaskCreatingEnabled();
16
+ const isTemplatingEnabled = datasetControl.isTemplatingEnabled();
16
17
  const addTaskFromTemplate = async (templateId) => {
17
18
  //this needs to be done so the button menu does not overlay the dialog
18
19
  setIsButtonMounted(false);
@@ -64,13 +65,7 @@ const AddTaskButton = (props) => {
64
65
  return jsx("div", { className: styles.uneditableIconContainer, title: localizationService.getLocalizedString('canNotEditCompletedTask'), children: jsx(Icon, { className: styles.uneditableIcon, iconName: 'Uneditable' }) });
65
66
  }
66
67
  else if (isButtonVisible()) {
67
- return jsx(IconButton, { className: `${styles.addTaskBtnRoot} talxis_task-grid_add-task-button`, iconProps: {
68
- iconName: 'Add'
69
- }, menuProps: {
70
- items: getMenuItems()
71
- }, styles: {
72
- menuIcon: styles.addTaskMenuIcon
73
- } });
68
+ return jsx(IconButton, { className: `${styles.addTaskBtnRoot} talxis_task-grid_add-task-button`, iconProps: { iconName: 'Add' }, onClick: !isTemplatingEnabled ? () => taskDataProvider.createTask(record.getRecordId()) : undefined, menuProps: isTemplatingEnabled ? { items: getMenuItems() } : undefined, styles: { menuIcon: styles.addTaskMenuIcon } });
74
69
  }
75
70
  else {
76
71
  return jsx(Fragment, {});
@@ -1 +1 @@
1
- {"version":3,"file":"AddTaskButton.js","sources":["../../../../../../../src/components/TaskGrid/components/grid/cell-renderers/add-task-button/AddTaskButton.tsx"],"sourcesContent":["import { ContextualMenuItemType, Icon, IconButton, IContextualMenuItem } from \"@fluentui/react\"\nimport { ICellProps } from \"../../../../../Grid/cells/cell/Cell\"\nimport * as React from \"react\"\nimport { getAddTaskButtonStyles } from \"./styles\";\nimport { IRecord } from \"@talxis/client-libraries\";\nimport { RecordSelector } from \"../../record-selector/RecordSelector\";\nimport { useDatasetControl, useLocalizationService, useTaskDataProvider, useTaskGridDescriptor } from \"../../../../context\";\n\nexport const AddTaskButton = (props: ICellProps) => {\n const styles = React.useMemo(() => getAddTaskButtonStyles(), []);\n const record: IRecord = props.data;\n const taskDataProvider = useTaskDataProvider();\n const datasetControl = useDatasetControl();\n const localizationService = useLocalizationService();\n const [isButtonMounted, setIsButtonMounted] = React.useState(true);\n const isTaskAddingEnabled = taskDataProvider.isTaskAddingEnabled();\n\n const addTaskFromTemplate = async (templateId: string) => {\n //this needs to be done so the button menu does not overlay the dialog\n setIsButtonMounted(false);\n await taskDataProvider.createTasksFromTemplate(templateId, record.getRecordId());\n setIsButtonMounted(true);\n }\n\n const isButtonVisible = (): boolean => {\n if (taskDataProvider.isFlatListEnabled() || !isTaskAddingEnabled) {\n return false;\n }\n return isButtonMounted;\n }\n\n const getMenuItems = (): IContextualMenuItem[] => {\n const isTemplatingEnabled = datasetControl.isTemplatingEnabled();\n return [{\n key: 'addChild',\n text: localizationService.getLocalizedString('addChild'),\n iconProps: {\n iconName: 'Add'\n },\n onClick: () => {taskDataProvider.createTask(record.getRecordId())}\n },\n {\n key: 'divider',\n itemType: ContextualMenuItemType.Divider\n },\n ...(!isTemplatingEnabled ? [] : [{\n key: 'taskFromTemplate',\n text: localizationService.getLocalizedString('taskFromTemplate'),\n iconProps: {\n iconName: 'PageList'\n },\n subMenuProps: {\n items: [{\n key: 'dummy'\n }],\n onRenderMenuList: () => <RecordSelector\n provider={datasetControl.getTemplateDataProvider()}\n onRenderRecord={(props, defautRender) => {\n return defautRender({\n ...props,\n iconProps: {\n iconName: 'AddToShoppingList'\n }\n })\n }}\n onRecordSelected={addTaskFromTemplate} />\n }\n }])];\n }\n\n if (!record.isActive()) {\n return <div className={styles.uneditableIconContainer} title={localizationService.getLocalizedString('canNotEditCompletedTask')}>\n <Icon\n className={styles.uneditableIcon}\n iconName='Uneditable'\n />\n </div>\n }\n else if (isButtonVisible()) {\n return <IconButton\n className={`${styles.addTaskBtnRoot} talxis_task-grid_add-task-button`}\n iconProps={{\n iconName: 'Add'\n }}\n menuProps={{\n items: getMenuItems()\n }}\n styles={{\n menuIcon: styles.addTaskMenuIcon\n }} />\n }\n else {\n return <></>\n }\n\n}"],"names":["_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"AddTaskButton.js","sources":["../../../../../../../src/components/TaskGrid/components/grid/cell-renderers/add-task-button/AddTaskButton.tsx"],"sourcesContent":["import { ContextualMenuItemType, Icon, IconButton, IContextualMenuItem } from \"@fluentui/react\"\nimport { ICellProps } from \"../../../../../Grid/cells/cell/Cell\"\nimport * as React from \"react\"\nimport { getAddTaskButtonStyles } from \"./styles\";\nimport { IRecord } from \"@talxis/client-libraries\";\nimport { RecordSelector } from \"../../record-selector/RecordSelector\";\nimport { useDatasetControl, useLocalizationService, useTaskDataProvider, useTaskGridDescriptor } from \"../../../../context\";\n\nexport const AddTaskButton = (props: ICellProps) => {\n const styles = React.useMemo(() => getAddTaskButtonStyles(), []);\n const record: IRecord = props.data;\n const taskDataProvider = useTaskDataProvider();\n const datasetControl = useDatasetControl();\n const localizationService = useLocalizationService();\n const [isButtonMounted, setIsButtonMounted] = React.useState(true);\n const isTaskAddingEnabled = datasetControl.isTaskCreatingEnabled();\n const isTemplatingEnabled = datasetControl.isTemplatingEnabled();\n\n const addTaskFromTemplate = async (templateId: string) => {\n //this needs to be done so the button menu does not overlay the dialog\n setIsButtonMounted(false);\n await taskDataProvider.createTasksFromTemplate(templateId, record.getRecordId());\n setIsButtonMounted(true);\n }\n\n const isButtonVisible = (): boolean => {\n if (taskDataProvider.isFlatListEnabled() || !isTaskAddingEnabled) {\n return false;\n }\n return isButtonMounted;\n }\n\n const getMenuItems = (): IContextualMenuItem[] => {\n const isTemplatingEnabled = datasetControl.isTemplatingEnabled();\n return [{\n key: 'addChild',\n text: localizationService.getLocalizedString('addChild'),\n iconProps: {\n iconName: 'Add'\n },\n onClick: () => { taskDataProvider.createTask(record.getRecordId()) }\n },\n {\n key: 'divider',\n itemType: ContextualMenuItemType.Divider\n },\n ...(!isTemplatingEnabled ? [] : [{\n key: 'taskFromTemplate',\n text: localizationService.getLocalizedString('taskFromTemplate'),\n iconProps: {\n iconName: 'PageList'\n },\n subMenuProps: {\n items: [{\n key: 'dummy'\n }],\n onRenderMenuList: () => <RecordSelector\n provider={datasetControl.getTemplateDataProvider()}\n onRenderRecord={(props, defautRender) => {\n return defautRender({\n ...props,\n iconProps: {\n iconName: 'AddToShoppingList'\n }\n })\n }}\n onRecordSelected={addTaskFromTemplate} />\n }\n }])];\n }\n\n if (!record.isActive()) {\n return <div className={styles.uneditableIconContainer} title={localizationService.getLocalizedString('canNotEditCompletedTask')}>\n <Icon\n className={styles.uneditableIcon}\n iconName='Uneditable'\n />\n </div>\n }\n else if (isButtonVisible()) {\n return <IconButton\n className={`${styles.addTaskBtnRoot} talxis_task-grid_add-task-button`}\n iconProps={{ iconName: 'Add' }}\n onClick={!isTemplatingEnabled ? () => taskDataProvider.createTask(record.getRecordId()) : undefined}\n menuProps={isTemplatingEnabled ? { items: getMenuItems() } : undefined}\n styles={{ menuIcon: styles.addTaskMenuIcon }} />\n }\n else {\n return <></>\n }\n\n}"],"names":["_jsx"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { IDataProvider } from "@talxis/client-libraries";
2
+ import { ICellProps } from "../../../../../Grid/cells/cell/Cell";
3
+ interface ICellRendererProps extends ICellProps {
4
+ dataProvider: IDataProvider;
5
+ }
6
+ export declare const LookupManyCellRenderer: (props: ICellRendererProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,99 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import React__default, { useCallback, useEffect } from 'react';
3
+ import AsyncSelect from 'react-select/async';
4
+ import { useTaskDataProvider } from '../../../../context.js';
5
+ import { LookupMany } from '../../lookup-many/LookupMany.js';
6
+ import { PeopleLookupMany } from '../../lookup-many/people-lookup-many/PeopleLookupMany.js';
7
+ import { ColorfulLookupMany } from '../../lookup-many/colorful-lookup-many/ColorfulLookupMany.js';
8
+
9
+ var ControlName;
10
+ (function (ControlName) {
11
+ ControlName["LookupMany"] = "LookupMany";
12
+ ControlName["PeopleLookupMany"] = "PeopleLookupMany";
13
+ ControlName["ColorfulLookupMany"] = "ColorfulLookupMany";
14
+ })(ControlName || (ControlName = {}));
15
+ const LookupManyCellRenderer = (props) => {
16
+ const { api, baseColumn, dataProvider } = props;
17
+ const record = props.data;
18
+ const [isDisabled, setIsDisabled] = React__default.useState(true);
19
+ const customControl = record.getColumnInfo(baseColumn.name).ui.getCustomControls([])?.[0];
20
+ const controlName = customControl.name ?? ControlName.LookupMany;
21
+ const bindings = customControl?.bindings;
22
+ const provider = useTaskDataProvider();
23
+ const value = record.getValue(props.colDef.colId);
24
+ const onSelectionChange = (selectedRecords) => {
25
+ record.setValue(props.colDef.colId, selectedRecords);
26
+ record.save();
27
+ api.refreshCells({
28
+ rowNodes: [props.node],
29
+ columns: [props.colDef.colId],
30
+ force: true
31
+ });
32
+ };
33
+ const onRecordOpen = (entityReference) => {
34
+ provider.openDatasetItem(entityReference, {
35
+ columnName: baseColumn.name
36
+ });
37
+ };
38
+ const onMenuClose = () => {
39
+ setIsDisabled(true);
40
+ };
41
+ const getComponentProps = () => {
42
+ return {
43
+ dataProvider,
44
+ selectedRecords: value,
45
+ isDisabled,
46
+ onRecordSelect: onSelectionChange,
47
+ onRecordOpen,
48
+ components: {
49
+ onRenderSelect: (selectProps) => jsx(AsyncSelect, { ...selectProps, autoFocus: true, openMenuOnFocus: true, openMenuOnClick: true, styles: {
50
+ ...selectProps.styles,
51
+ control: (base, props) => {
52
+ return {
53
+ ...selectProps.styles?.control?.(base, props),
54
+ maxHeight: 200,
55
+ overflow: 'auto',
56
+ border: 'none',
57
+ background: 'none',
58
+ boxShadow: 'none',
59
+ };
60
+ }
61
+ }, onMenuClose: () => {
62
+ selectProps.onMenuClose?.();
63
+ onMenuClose();
64
+ } })
65
+ }
66
+ };
67
+ };
68
+ const getComponent = () => {
69
+ switch (controlName) {
70
+ case ControlName.ColorfulLookupMany:
71
+ return jsx(ColorfulLookupMany, { colorPropertyName: bindings?.ColorPropertyName?.value, ...getComponentProps() });
72
+ case ControlName.PeopleLookupMany:
73
+ return jsx(PeopleLookupMany, { ...getComponentProps(), imageUrlPropertyName: bindings?.ImageUrlPropertyName?.value });
74
+ default: {
75
+ return jsx(LookupMany, { ...getComponentProps() });
76
+ }
77
+ }
78
+ };
79
+ const onSwitchToEditMode = useCallback(() => {
80
+ if (props.value.editable) {
81
+ setIsDisabled(false);
82
+ }
83
+ setTimeout(() => {
84
+ const element = props.eGridCell.querySelector('[data-value]');
85
+ element?.dispatchEvent(new MouseEvent('mousedown', { bubbles: true, button: 0 }));
86
+ element?.dispatchEvent(new MouseEvent('mouseup', { bubbles: true, button: 0 }));
87
+ });
88
+ }, [props.value.editable]);
89
+ useEffect(() => {
90
+ props.eGridCell.addEventListener('dblclick', onSwitchToEditMode);
91
+ return () => {
92
+ props.eGridCell.removeEventListener('dblclick', onSwitchToEditMode);
93
+ };
94
+ }, [onSwitchToEditMode]);
95
+ return jsx("div", { children: getComponent() });
96
+ };
97
+
98
+ export { LookupManyCellRenderer };
99
+ //# sourceMappingURL=LookupManyCellRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LookupManyCellRenderer.js","sources":["../../../../../../../src/components/TaskGrid/components/grid/cell-renderers/lookup-many/LookupManyCellRenderer.tsx"],"sourcesContent":["import { IDataProvider, IRecord } from \"@talxis/client-libraries\";\nimport { useTaskDataProvider } from \"../../../../..\";\nimport React, { useCallback, useEffect } from \"react\";\nimport AsyncSelect from \"react-select/async\";\nimport { ICellProps } from \"../../../../../Grid/cells/cell/Cell\";\nimport { ColorfulLookupMany, ILookupManyProps, LookupMany, PeopleLookupMany } from \"../../lookup-many\";\n\ninterface ICellRendererProps extends ICellProps {\n dataProvider: IDataProvider;\n}\n\nenum ControlName {\n LookupMany = 'LookupMany',\n PeopleLookupMany = 'PeopleLookupMany',\n ColorfulLookupMany = 'ColorfulLookupMany',\n}\n\nexport const LookupManyCellRenderer = (props: ICellRendererProps) => {\n const { api, baseColumn, dataProvider } = props;\n const record: IRecord = props.data;\n const [isDisabled, setIsDisabled] = React.useState(true);\n const customControl = record.getColumnInfo(baseColumn.name).ui.getCustomControls([])?.[0];\n const controlName = customControl.name ?? ControlName.LookupMany as ControlName;\n const bindings = customControl?.bindings;\n const provider = useTaskDataProvider();\n const value: ComponentFramework.EntityReference[] | undefined = record.getValue(props.colDef!.colId!) as ComponentFramework.EntityReference[] | undefined;\n\n const onSelectionChange = (selectedRecords: ComponentFramework.EntityReference[]) => {\n record.setValue(props.colDef!.colId!, selectedRecords);\n record.save();\n api.refreshCells({\n rowNodes: [props.node],\n columns: [props.colDef!.colId!],\n force: true\n });\n }\n\n const onRecordOpen = (entityReference: ComponentFramework.EntityReference) => {\n provider.openDatasetItem(entityReference, {\n columnName: baseColumn.name\n });\n }\n\n const onMenuClose = () => {\n setIsDisabled(true);\n }\n\n const getComponentProps = (): ILookupManyProps => {\n return {\n dataProvider,\n selectedRecords: value,\n isDisabled,\n onRecordSelect: onSelectionChange,\n onRecordOpen,\n components: {\n onRenderSelect: (selectProps) =>\n <AsyncSelect {...selectProps}\n autoFocus\n openMenuOnFocus\n openMenuOnClick\n styles={{\n ...selectProps.styles,\n control: (base, props) => {\n return {\n ...selectProps.styles?.control?.(base, props),\n maxHeight: 200,\n overflow: 'auto',\n border: 'none',\n background: 'none',\n boxShadow: 'none',\n }\n }\n }}\n onMenuClose={() => {\n selectProps.onMenuClose?.();\n onMenuClose();\n }} />\n }\n }\n }\n\n const getComponent = (): JSX.Element => {\n switch (controlName) {\n case ControlName.ColorfulLookupMany:\n return <ColorfulLookupMany\n colorPropertyName={bindings?.ColorPropertyName?.value}\n {...getComponentProps()}\n />\n case ControlName.PeopleLookupMany:\n return <PeopleLookupMany\n {...getComponentProps()}\n imageUrlPropertyName={bindings?.ImageUrlPropertyName?.value}\n />\n default: {\n return <LookupMany\n {...getComponentProps()}\n />\n }\n }\n }\n const onSwitchToEditMode = useCallback(() => {\n if (props.value.editable) {\n setIsDisabled(false);\n }\n setTimeout(() => {\n const element = props.eGridCell.querySelector('[data-value]');\n element?.dispatchEvent(new MouseEvent('mousedown', { bubbles: true, button: 0 }));\n element?.dispatchEvent(new MouseEvent('mouseup', { bubbles: true, button: 0 }));\n })\n }, [props.value.editable]);\n\n useEffect(() => {\n props.eGridCell.addEventListener('dblclick', onSwitchToEditMode);\n return () => {\n props.eGridCell.removeEventListener('dblclick', onSwitchToEditMode);\n }\n }, [onSwitchToEditMode]);\n\n return <div>\n {getComponent()}\n </div>\n}"],"names":["React","_jsx"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './LookupManyCellRenderer';
@@ -0,0 +1,2 @@
1
+ export { LookupManyCellRenderer } from './LookupManyCellRenderer.js';
2
+ //# sourceMappingURL=index.js.map
@@ -1,2 +1,3 @@
1
1
  import { ICellProps } from "../../../../../Grid/cells/cell/Cell";
2
+ export declare const PERCENT_COMPLETE_CONTROL_NAME = "PercentComplete";
2
3
  export declare const PercentComplete: (props: ICellProps) => import("react/jsx-runtime").JSX.Element;
@@ -4,6 +4,7 @@ import { Cell } from '../../../../../Grid/cells/cell/Cell.js';
4
4
  import * as React from 'react';
5
5
  import { getPercentCompleteStyles } from './styles.js';
6
6
 
7
+ const PERCENT_COMPLETE_CONTROL_NAME = "PercentComplete";
7
8
  const PercentComplete = (props) => {
8
9
  const value = props.value.value;
9
10
  const formattedValue = props.valueFormatted;
@@ -18,5 +19,5 @@ const PercentComplete = (props) => {
18
19
  }, description: formattedValue, percentComplete: value !== null ? value / 100 : 0 }) });
19
20
  };
20
21
 
21
- export { PercentComplete };
22
+ export { PERCENT_COMPLETE_CONTROL_NAME, PercentComplete };
22
23
  //# sourceMappingURL=PercentComplete.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PercentComplete.js","sources":["../../../../../../../src/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.tsx"],"sourcesContent":["import { ProgressIndicator } from \"@fluentui/react\";\nimport { Cell, ICellProps } from \"../../../../../Grid/cells/cell/Cell\";\nimport * as React from \"react\";\nimport { getPercentCompleteStyles } from \"./styles\";\n\nexport const PercentComplete = (props: ICellProps) => {\n const value = props.value.value;\n const formattedValue = props.valueFormatted;\n const styles = React.useMemo(() => getPercentCompleteStyles(), []);\n \n if(props.value.loading) {\n return <Cell {...props} />\n }\n return <div className={styles.root}>\n <ProgressIndicator\n barHeight={5}\n styles={{\n root: styles.progressIndicatorRoot,\n itemProgress: styles.itemProgress,\n itemDescription: styles.itemDescription\n }}\n description={formattedValue}\n percentComplete={value !== null ? value / 100 : 0}\n />\n </div>\n}"],"names":["_jsx"],"mappings":";;;;;;AAKa,MAAA,eAAe,GAAG,CAAC,KAAiB,KAAI;AACjD,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AAChC,IAAA,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;AAC5C,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,wBAAwB,EAAE,EAAE,EAAE,CAAC,CAAC;AAEnE,IAAA,IAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;AACpB,QAAA,OAAOA,GAAC,CAAA,IAAI,EAAK,EAAA,GAAA,KAAK,GAAI,CAAA;AAC7B,KAAA;AACD,IAAA,OAAOA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,IAAI,EAAA,QAAA,EAC9BA,GAAC,CAAA,iBAAiB,IACd,SAAS,EAAE,CAAC,EACZ,MAAM,EAAE;gBACJ,IAAI,EAAE,MAAM,CAAC,qBAAqB;gBAClC,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,eAAe,EAAE,MAAM,CAAC,eAAe;aAC1C,EACD,WAAW,EAAE,cAAc,EAC3B,eAAe,EAAE,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,EAClD,CAAA,EAAA,CACD,CAAA;AACV;;;;"}
1
+ {"version":3,"file":"PercentComplete.js","sources":["../../../../../../../src/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.tsx"],"sourcesContent":["import { ProgressIndicator } from \"@fluentui/react\";\nimport { Cell, ICellProps } from \"../../../../../Grid/cells/cell/Cell\";\nimport * as React from \"react\";\nimport { getPercentCompleteStyles } from \"./styles\";\n\nexport const PERCENT_COMPLETE_CONTROL_NAME = \"PercentComplete\";\n\nexport const PercentComplete = (props: ICellProps) => {\n const value = props.value.value;\n const formattedValue = props.valueFormatted;\n const styles = React.useMemo(() => getPercentCompleteStyles(), []);\n \n if(props.value.loading) {\n return <Cell {...props} />\n }\n return <div className={styles.root}>\n <ProgressIndicator\n barHeight={5}\n styles={{\n root: styles.progressIndicatorRoot,\n itemProgress: styles.itemProgress,\n itemDescription: styles.itemDescription\n }}\n description={formattedValue}\n percentComplete={value !== null ? value / 100 : 0}\n />\n </div>\n}"],"names":["_jsx"],"mappings":";;;;;;AAKO,MAAM,6BAA6B,GAAG,kBAAkB;AAElD,MAAA,eAAe,GAAG,CAAC,KAAiB,KAAI;AACjD,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AAChC,IAAA,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;AAC5C,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,wBAAwB,EAAE,EAAE,EAAE,CAAC,CAAC;AAEnE,IAAA,IAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;AACpB,QAAA,OAAOA,GAAC,CAAA,IAAI,EAAK,EAAA,GAAA,KAAK,GAAI,CAAA;AAC7B,KAAA;AACD,IAAA,OAAOA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,IAAI,EAAA,QAAA,EAC9BA,GAAC,CAAA,iBAAiB,IACd,SAAS,EAAE,CAAC,EACZ,MAAM,EAAE;gBACJ,IAAI,EAAE,MAAM,CAAC,qBAAqB;gBAClC,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,eAAe,EAAE,MAAM,CAAC,eAAe;aAC1C,EACD,WAAW,EAAE,cAAc,EAC3B,eAAe,EAAE,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,EAClD,CAAA,EAAA,CACD,CAAA;AACV;;;;"}
@@ -1,2 +1,2 @@
1
- export { PercentComplete } from './PercentComplete.js';
1
+ export { PERCENT_COMPLETE_CONTROL_NAME, PercentComplete } from './PercentComplete.js';
2
2
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  import { ColDef as ColDefBase, GridApi as GridApiBase, RowClassRules as RowClassRulesBase } from "@ag-grid-community/core";
2
- import { ITaskDataProvider } from "../../../data-providers/task-data-provider";
2
+ import { ITaskDataProvider } from "../../../providers/task";
3
3
  import { IRecord } from "@talxis/client-libraries";
4
4
  import { ITaskGridDatasetControl } from "../../../interfaces";
5
5
  export declare const ADD_TASK_COLUMN_NAME = "addTask";
@@ -14,12 +14,6 @@ export interface IGridCustomizerStrategy {
14
14
  onGetColumnDefinitions?: (columnDefs: ColDef[]) => ColDef[];
15
15
  /** Receives the default row class rules map and may return an extended or overridden version. */
16
16
  onGetRowClassRules?: (rules: RowClassRules) => RowClassRules;
17
- /** Return a custom cell renderer component for the given column definition, or `undefined` to use the default. */
18
- onGetCellRenderer?: (colDef: ColDef) => any;
19
- /** Return a custom cell editor component for the given column definition, or `undefined` to use the default. */
20
- onGetCellEditor?: (colDef: ColDef) => any;
21
- /** Receives the raw AG Grid `GridApi` instance, useful if the strategy needs to retain a reference. */
22
- onRetrieveGridApi?: (gridApi: GridApi) => void;
23
17
  }
24
18
  /** Provides access to the AG Grid instance and the TaskGrid control to code running inside `IGridCustomizerStrategy`. */
25
19
  export interface IGridCustomizer {
@@ -58,6 +52,7 @@ export declare class GridCustomizer implements IGridCustomizer {
58
52
  private _isServerSideGroupOpenByDefault;
59
53
  private _injectAddTaskColumn;
60
54
  private _getColumnDefinitions;
55
+ private _getCustomControlForColumn;
61
56
  private _getColumnPriority;
62
57
  private _getRowClassRules;
63
58
  private _getPathToParent;
@@ -2,8 +2,8 @@ import { DatasetConstants } from '@talxis/client-libraries';
2
2
  import { GridDragHandler } from '../grid-drag-handler/GridDragHandler.js';
3
3
  import { AddTaskButton } from '../cell-renderers/add-task-button/AddTaskButton.js';
4
4
  import { TreeExpandCollapseHeader } from '../cell-headers/tree-expand-collapse-header/TreeExpandCollapseHeader.js';
5
- import { PercentComplete } from '../cell-renderers/percent-complete/PercentComplete.js';
6
5
  import { GroupCell } from '../group-cell/GroupCell.js';
6
+ import { PERCENT_COMPLETE_CONTROL_NAME, PercentComplete } from '../cell-renderers/percent-complete/PercentComplete.js';
7
7
 
8
8
  const ADD_TASK_COLUMN_NAME = 'addTask';
9
9
  class GridCustomizer {
@@ -39,9 +39,24 @@ class GridCustomizer {
39
39
  parentNode.setExpanded(true);
40
40
  }
41
41
  }
42
- if (!parentId) {
43
- this._gridApi.ensureIndexVisible(0);
44
- }
42
+ setTimeout(() => {
43
+ const primaryIdAttribute = this._taskDataProvider.getMetadata().PrimaryIdAttribute;
44
+ const recordId = records[0][primaryIdAttribute];
45
+ const node = this._gridApi.getRowNode(recordId);
46
+ if (!node)
47
+ return;
48
+ if (records.length === 1 && this._datasetControl.isInlineCreateEnabled()) {
49
+ const rowIndex = node.rowIndex;
50
+ this._gridApi.startEditingCell({
51
+ rowIndex: rowIndex,
52
+ colKey: this._nativeColumns.subject
53
+ });
54
+ }
55
+ else {
56
+ this._gridApi.setFocusedCell(node.rowIndex, this._nativeColumns.subject);
57
+ this._gridApi.ensureNodeVisible(node);
58
+ }
59
+ }, 100);
45
60
  };
46
61
  this._onAfterTaskDataUpdated = (newData) => {
47
62
  const recordIdsSet = new Set(newData.map(item => item[this._taskDataProvider.getMetadata().PrimaryIdAttribute]));
@@ -92,7 +107,7 @@ class GridCustomizer {
92
107
  break;
93
108
  }
94
109
  case 'isServerSideGroupOpenByDefault': {
95
- originalSetGridOption(key, (params) => this._isServerSideGroupOpenByDefault(params));
110
+ originalSetGridOption(key, (params) => this._isServerSideGroupOpenByDefault(params, (params) => value(params)));
96
111
  break;
97
112
  }
98
113
  default: {
@@ -101,15 +116,19 @@ class GridCustomizer {
101
116
  }
102
117
  };
103
118
  }
104
- _isServerSideGroupOpenByDefault(params) {
105
- if (!params.data) {
119
+ _isServerSideGroupOpenByDefault(params, defaultAction) {
120
+ if (!params.data || this._taskDataProvider.isFlatListEnabled()) {
106
121
  return false;
107
122
  }
108
123
  const matchingRecords = this._taskDataProvider.getRecordTree().getMatchingRecords();
109
- return !matchingRecords[params.data.getRecordId()];
124
+ const result = !matchingRecords[params.data.getRecordId()];
125
+ if (result) {
126
+ return result;
127
+ }
128
+ return defaultAction(params);
110
129
  }
111
130
  _injectAddTaskColumn(columnDefs) {
112
- if (!columnDefs.find(colDef => colDef.colId === ADD_TASK_COLUMN_NAME)) {
131
+ if (!this._taskDataProvider.isFlatListEnabled() && !columnDefs.find(colDef => colDef.colId === ADD_TASK_COLUMN_NAME)) {
113
132
  columnDefs.push({
114
133
  colId: ADD_TASK_COLUMN_NAME,
115
134
  headerName: '',
@@ -130,6 +149,9 @@ class GridCustomizer {
130
149
  for (const colDef of columnDefs) {
131
150
  colDef.onCellDoubleClicked = () => { };
132
151
  const columnName = colDef.colId;
152
+ const column = this._taskDataProvider.getColumnsMap()[columnName];
153
+ const customCellRenderer = this._getCustomControlForColumn('renderer', column);
154
+ const customCellEditor = this._getCustomControlForColumn('editor', column);
133
155
  switch (columnName) {
134
156
  case this._nativeColumns.subject: {
135
157
  colDef.cellRenderer = GroupCell;
@@ -140,20 +162,22 @@ class GridCustomizer {
140
162
  colDef.lockPosition = true;
141
163
  break;
142
164
  }
143
- case this._nativeColumns.percentComplete: {
144
- colDef.cellRenderer = PercentComplete;
145
- break;
146
- }
165
+ }
166
+ if (customCellRenderer === PERCENT_COMPLETE_CONTROL_NAME) {
167
+ colDef.cellRenderer = PercentComplete;
168
+ }
169
+ if (customCellEditor === PERCENT_COMPLETE_CONTROL_NAME) {
170
+ colDef.cellEditor = PercentComplete;
147
171
  }
148
172
  }
149
173
  columnDefs.sort((a, b) => this._getColumnPriority(a) - this._getColumnPriority(b));
150
174
  columnDefs = this._strategy?.onGetColumnDefinitions?.(columnDefs) ?? columnDefs;
151
- for (const colDef of columnDefs) {
152
- colDef.cellRenderer = this._strategy?.onGetCellRenderer?.(colDef) ?? colDef.cellRenderer;
153
- colDef.cellEditor = this._strategy?.onGetCellEditor?.(colDef) ?? colDef.cellEditor;
154
- }
155
175
  return columnDefs;
156
176
  }
177
+ _getCustomControlForColumn(role, column) {
178
+ const control = column?.controls?.find(c => c.appliesTo === role || c.appliesTo === 'both');
179
+ return control?.name ?? null;
180
+ }
157
181
  _getColumnPriority(col) {
158
182
  if (col.colId === DatasetConstants.CHECKBOX_COLUMN_KEY)
159
183
  return 0;
@@ -287,7 +311,9 @@ class GridCustomizer {
287
311
  addIndex: addIndex !== null ? addIndex : undefined,
288
312
  });
289
313
  if (position === 'child') {
290
- overNode.setExpanded(true);
314
+ setTimeout(() => {
315
+ overNode.setExpanded(true);
316
+ }, 0);
291
317
  }
292
318
  this._gridApi.refreshCells({
293
319
  columns: [this._nativeColumns.subject],
@@ -1 +1 @@
1
- {"version":3,"file":"GridCustomizer.js","sources":["../../../../../../src/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.ts"],"sourcesContent":["import { ColDef as ColDefBase, GridApi as GridApiBase, IRowNode, IsServerSideGroupOpenByDefaultParams, RowClassRules as RowClassRulesBase } from \"@ag-grid-community/core\";\nimport { ITaskDataProvider } from \"../../../data-providers/task-data-provider\";\nimport { DatasetConstants, IRawRecord, IRecord } from \"@talxis/client-libraries\";\nimport { GridDragHandler, IDragOperation } from \"../grid-drag-handler\";\nimport { GroupCell } from \"../group-cell\";\nimport { TreeExpandCollapseHeader } from \"../cell-headers/tree-expand-collapse-header\";\nimport { AddTaskButton } from \"../cell-renderers/add-task-button\";\nimport { ILocalizationService, ITaskGridLabels } from \"../../../labels\";\nimport { PercentComplete } from \"../cell-renderers/percent-complete\";\nimport { INativeColumns, ITaskGridDatasetControl } from \"../../../interfaces\";\n\nexport const ADD_TASK_COLUMN_NAME = 'addTask';\n\nexport type ColDef = ColDefBase<IRecord>;\nexport type GridApi = GridApiBase<IRecord>;\nexport type RowClassRules = RowClassRulesBase<IRecord>;\n\n\n/** Strategy interface for deep customization of the AG Grid instance inside TaskGrid. */\nexport interface IGridCustomizerStrategy {\n /** Called once after the grid is ready. Use to call `customizer.registerExpressionDecorator` or perform other one-time setup. */\n onInitialize: (customizer: IGridCustomizer) => void;\n /** Receives the computed column definitions and may return a modified array. */\n onGetColumnDefinitions?: (columnDefs: ColDef[]) => ColDef[];\n /** Receives the default row class rules map and may return an extended or overridden version. */\n onGetRowClassRules?: (rules: RowClassRules) => RowClassRules;\n /** Return a custom cell renderer component for the given column definition, or `undefined` to use the default. */\n onGetCellRenderer?: (colDef: ColDef) => any;\n /** Return a custom cell editor component for the given column definition, or `undefined` to use the default. */\n onGetCellEditor?: (colDef: ColDef) => any;\n /** Receives the raw AG Grid `GridApi` instance, useful if the strategy needs to retain a reference. */\n onRetrieveGridApi?: (gridApi: GridApi) => void;\n}\n\n/** Provides access to the AG Grid instance and the TaskGrid control to code running inside `IGridCustomizerStrategy`. */\nexport interface IGridCustomizer {\n /** Returns the underlying AG Grid `GridApi`. */\n getGridApi(): GridApi;\n /** Returns the `ITaskDataProvider` that backs the grid data layer. */\n getTaskDataProvider(): ITaskDataProvider;\n /** Returns the `ITaskGridDatasetControl` runtime control interface. */\n getDatasetControl(): ITaskGridDatasetControl;\n /**\n * Registers a column-expression decorator only when the given column exists in the current columns map.\n * Prevents errors when registering decorators for columns that may not be present in all views.\n */\n registerExpressionDecorator(columnName: string, registrator: () => void): void;\n}\n\nexport interface IGridCustomizerParameters {\n gridApi: GridApi;\n datasetControl: ITaskGridDatasetControl;\n strategy?: IGridCustomizerStrategy;\n}\n\nexport class GridCustomizer implements IGridCustomizer {\n private _taskDataProvider: ITaskDataProvider;\n private _gridApi: GridApi;\n private _gridDragHandler: GridDragHandler;\n private _localizationService: ILocalizationService<ITaskGridLabels>;\n private _nativeColumns: INativeColumns;\n private _pcfContext: ComponentFramework.Context<any>;\n private _datasetControl: ITaskGridDatasetControl;\n private _strategy?: IGridCustomizerStrategy;\n\n constructor(parameters: IGridCustomizerParameters) {\n this._datasetControl = parameters.datasetControl;\n this._taskDataProvider = this._datasetControl.getDataProvider();\n this._gridApi = parameters.gridApi;\n this._localizationService = this._datasetControl.getLocalizationService();\n this._nativeColumns = this._datasetControl.getNativeColumns();\n this._strategy = parameters.strategy;\n this._pcfContext = this._datasetControl.getPcfContext();\n\n this._gridDragHandler = new GridDragHandler({\n gridApi: this._gridApi,\n datasetControl: this._datasetControl\n });\n this._patchGridApi();\n this._registerEventListeners();\n this._gridApi.setGridOption('rowClassRules', this._getRowClassRules());\n this._strategy?.onInitialize?.(this);\n }\n\n public getDatasetControl(): ITaskGridDatasetControl {\n return this._datasetControl;\n }\n\n public getGridApi(): GridApi {\n return this._gridApi;\n }\n\n public getTaskDataProvider(): ITaskDataProvider {\n return this._taskDataProvider;\n }\n\n //makes sure we do not try to register an expression for a column that does not exist\n public registerExpressionDecorator(columnName: string, registrator: () => void) {\n if (columnName && this._taskDataProvider.getColumnsMap()[columnName]) {\n registrator();\n }\n }\n\n private _patchGridApi() {\n const originalSetGridOption = this._gridApi.setGridOption.bind(this._gridApi);\n this._gridApi.setGridOption = (key: any, value: any): void => {\n switch (key) {\n case 'columnDefs': {\n const columnDefs = this._getColumnDefinitions(value);\n originalSetGridOption(key, columnDefs);\n break;\n }\n case 'isServerSideGroupOpenByDefault': {\n originalSetGridOption(key, (params: IsServerSideGroupOpenByDefaultParams) => this._isServerSideGroupOpenByDefault(params));\n break;\n }\n default: {\n originalSetGridOption(key, value);\n }\n }\n }\n }\n\n private _isServerSideGroupOpenByDefault(params: IsServerSideGroupOpenByDefaultParams) {\n if (!params.data) {\n return false;\n }\n const matchingRecords = this._taskDataProvider.getRecordTree().getMatchingRecords();\n return !matchingRecords[params.data.getRecordId()];\n }\n\n private _injectAddTaskColumn(columnDefs: ColDef[]) {\n if (!columnDefs.find(colDef => colDef.colId === ADD_TASK_COLUMN_NAME)) {\n columnDefs.push({\n colId: ADD_TASK_COLUMN_NAME,\n headerName: '',\n pinned: 'left',\n width: 50,\n resizable: false,\n lockPinned: true,\n lockPosition: true,\n suppressMovable: true,\n suppressSizeToFit: true,\n cellRenderer: AddTaskButton,\n headerComponent: TreeExpandCollapseHeader\n })\n }\n }\n\n private _getColumnDefinitions(columnDefs: ColDef[]) {\n this._injectAddTaskColumn(columnDefs);\n for (const colDef of columnDefs) {\n colDef.onCellDoubleClicked = () => { }\n const columnName = colDef.colId as string;\n switch (columnName) {\n case this._nativeColumns.subject: {\n colDef.cellRenderer = GroupCell;\n colDef.pinned = 'left';\n break;\n }\n case DatasetConstants.CHECKBOX_COLUMN_KEY: {\n colDef.lockPosition = true;\n break;\n }\n case this._nativeColumns.percentComplete: {\n colDef.cellRenderer = PercentComplete;\n break\n }\n }\n }\n\n columnDefs.sort((a, b) => this._getColumnPriority(a) - this._getColumnPriority(b));\n columnDefs = this._strategy?.onGetColumnDefinitions?.(columnDefs) ?? columnDefs;\n for (const colDef of columnDefs) {\n colDef.cellRenderer = this._strategy?.onGetCellRenderer?.(colDef) ?? colDef.cellRenderer;\n colDef.cellEditor = this._strategy?.onGetCellEditor?.(colDef) ?? colDef.cellEditor;\n }\n return columnDefs;\n\n }\n\n private _getColumnPriority(col: ColDef): number {\n if (col.colId === DatasetConstants.CHECKBOX_COLUMN_KEY) return 0;\n if (col.colId === ADD_TASK_COLUMN_NAME) return 1;\n if (col.field === this._nativeColumns.subject) return 2;\n return 3;\n }\n\n private _getRowClassRules(): RowClassRules {\n const rules: RowClassRules = {\n 'talxis_task-grid_row--drag-over-middle': (params) => {\n return !!params.data?.isActive() && this._getNodeDragOverSection(params.node) === 'middle'\n },\n 'talxis_task-grid_row--drag-over-top': (params) => {\n return this._getNodeDragOverSection(params.node) === 'top'\n },\n 'talxis_task-grid_row--drag-over-bottom': (params) => {\n return this._getNodeDragOverSection(params.node) === 'bottom'\n },\n 'talxis_task-grid_row--inactive': (params) => {\n return !params.data?.isActive()\n },\n 'talxis_task-grid_row--unmatched-parent': (params) => {\n if (params.data) {\n const matchingRecordsMap = this._taskDataProvider.getRecordTree().getMatchingRecords();\n return !matchingRecordsMap[params.data!.getRecordId()]\n }\n else {\n return false;\n }\n }\n }\n return this._strategy?.onGetRowClassRules?.(rules) ?? rules;\n }\n\n private _getPathToParent(node: IRowNode<IRecord> | null): string[] {\n const path: string[] = [];\n let parent = node?.parent;\n while (parent) {\n path.push(parent.id!);\n parent = parent.parent;\n }\n return path.filter(id => id).reverse();\n }\n\n //undefined means we should target top level\n private _onRecordTreeUpdated = (affectedIds: (string | undefined)[]) => {\n for (const id of affectedIds) {\n if (!id) {\n this._gridApi.refreshServerSide();\n }\n else {\n const node = this._gridApi.getRowNode(id)!;\n this._gridApi.refreshServerSide({\n route: this._getPathToParent(node)\n });\n this._gridApi.refreshServerSide({\n route: [...this._getPathToParent(node), id]\n })\n }\n }\n this._gridApi.refreshCells({\n columns: [this._nativeColumns.subject],\n force: true\n });\n this._taskDataProvider.requestRender();\n }\n\n private _getNodeDragOverSection(node: IRowNode<IRecord>): IDragOperation['dragOverSection'] | null {\n const pendingDragOperation = this._gridDragHandler.getPendingDragOperation();\n if (!pendingDragOperation) {\n return null;\n }\n else {\n const isCurrentNode = pendingDragOperation.overNode === node;\n const isDraggedNode = pendingDragOperation.draggedNode === pendingDragOperation.overNode;\n if (isCurrentNode && !isDraggedNode) {\n return pendingDragOperation.dragOverSection;\n }\n else {\n return null;\n }\n }\n }\n\n private async _onDragEnd(dragOperation: IDragOperation) {\n if (this._isDragOperationAllowed(dragOperation)) {\n this._moveTask(dragOperation);\n }\n }\n\n private _isDragOperationAllowed(dragOperation: IDragOperation): boolean {\n const { draggedNode, overNode } = dragOperation;\n // Check if either node is null/undefined\n if (!draggedNode || !overNode) {\n return false;\n }\n if (draggedNode === overNode) {\n return false;\n }\n if (!overNode.data?.isActive() && dragOperation.dragOverSection === 'middle') {\n return false;\n }\n\n let parent = overNode.parent;\n while (parent) {\n if (parent === draggedNode) {\n return false;\n }\n parent = parent.parent;\n }\n return true;\n }\n\n private _getPositionFromDragOverSection(dragOverSection: IDragOperation['dragOverSection']): 'above' | 'below' | 'child' {\n switch (dragOverSection) {\n case 'top': {\n return 'above';\n }\n case 'bottom': {\n return 'below';\n }\n case 'middle': {\n return 'child';\n }\n }\n }\n\n private async _moveTask(dragOperation: IDragOperation) {\n const { draggedNode, overNode, dragOverSection } = dragOperation;\n const position = this._getPositionFromDragOverSection(dragOverSection);\n this._taskDataProvider.moveTask(draggedNode.id!, overNode.id!, position);\n }\n\n private _moveInto(movingFromRecordId: string, movingToRecordId: string, position: 'child' | 'above' | 'below') {\n const draggedRecordNode = this._taskDataProvider.getRecordTree().getNode(movingFromRecordId);\n const draggedRecord = this._taskDataProvider.getRecordsMap()[movingFromRecordId];\n const draggedNode = this._gridApi.getRowNode(movingFromRecordId)!;\n const overNode = this._gridApi.getRowNode(movingToRecordId)!;\n\n let addIndex: number | null = draggedRecordNode.index;\n\n //first remove from old location\n this._gridApi.applyServerSideTransaction({\n route: this._getPathToParent(draggedNode),\n remove: [draggedRecord],\n });\n\n //update the store where dragged parent node is (so the arrow can disappear if needed)\n this._gridApi.applyServerSideTransaction({\n route: this._getPathToParent(draggedNode.parent),\n update: [draggedNode.data],\n });\n\n //update the store where over node is (so the arrow can appear if needed)\n this._gridApi.applyServerSideTransaction({\n route: this._getPathToParent(overNode),\n update: [overNode.data],\n });\n //then add to new location\n this._gridApi.applyServerSideTransaction({\n // i need to set route to parent of over node\n route: [...this._getPathToParent(overNode), ...(position === 'child' ? [overNode.id!] : [])],\n add: [draggedRecord],\n addIndex: addIndex !== null ? addIndex : undefined,\n });\n\n if (position === 'child') {\n overNode.setExpanded(true);\n }\n this._gridApi.refreshCells({\n columns: [this._nativeColumns.subject],\n force: true\n });\n this._taskDataProvider.clearSelectedRecordIds();\n }\n\n\n private _onAfterTasksCreated = (records: IRawRecord[] | null, parentId?: string) => {\n if (!records || records.length === 0) return;\n if (parentId) {\n const parentNode = this._gridApi.getRowNode(parentId);\n if (parentNode && !parentNode.expanded) {\n parentNode.setExpanded(true);\n }\n }\n if (!parentId) {\n this._gridApi.ensureIndexVisible(0);\n }\n }\n\n private _onAfterTaskDataUpdated = (newData: IRawRecord[]) => {\n const recordIdsSet = new Set(newData.map(item => item[this._taskDataProvider.getMetadata().PrimaryIdAttribute]));\n const nodes = this._gridApi.getRenderedNodes().filter(node => recordIdsSet.has(node.id!));\n this._gridApi.refreshCells({\n rowNodes: nodes,\n force: true\n })\n }\n\n private _registerEventListeners() {\n this._taskDataProvider.taskEvents.addEventListener('onAfterTaskMoved', (movingFromTaskId, movingToTaskId, position) => this._moveInto(movingFromTaskId, movingToTaskId, position));\n this._taskDataProvider.taskEvents.addEventListener('onAfterTasksCreated', (records, parentId) => this._onAfterTasksCreated(records, parentId));\n this._taskDataProvider.taskEvents.addEventListener('onRecordTreeUpdated', (updatedParentIds) => this._onRecordTreeUpdated(updatedParentIds));\n this._taskDataProvider.taskEvents.addEventListener('onTaskDataUpdated', (newData) => this._onAfterTaskDataUpdated(newData));\n this._gridDragHandler.addEventListener('onDragEnd', (dragOperation) => this._onDragEnd(dragOperation));\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GridCustomizer.js","sources":["../../../../../../src/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.ts"],"sourcesContent":["import { ColDef as ColDefBase, GridApi as GridApiBase, IRowNode, IsServerSideGroupOpenByDefaultParams, RowClassRules as RowClassRulesBase } from \"@ag-grid-community/core\";\nimport { ITaskDataProvider } from \"../../../providers/task\";\nimport { DatasetConstants, IColumn, IRawRecord, IRecord } from \"@talxis/client-libraries\";\nimport { GridDragHandler, IDragOperation } from \"../grid-drag-handler\";\nimport { GroupCell } from \"../group-cell\";\nimport { TreeExpandCollapseHeader } from \"../cell-headers/tree-expand-collapse-header\";\nimport { AddTaskButton } from \"../cell-renderers/add-task-button\";\nimport { ILocalizationService } from \"../../../../../utils\";\nimport { ITaskGridLabels } from \"../../../labels\";\nimport { PERCENT_COMPLETE_CONTROL_NAME, PercentComplete } from \"../cell-renderers/percent-complete\";\nimport { INativeColumns, ITaskGridDatasetControl } from \"../../../interfaces\";\n\nexport const ADD_TASK_COLUMN_NAME = 'addTask';\n\nexport type ColDef = ColDefBase<IRecord>;\nexport type GridApi = GridApiBase<IRecord>;\nexport type RowClassRules = RowClassRulesBase<IRecord>;\n\n\n/** Strategy interface for deep customization of the AG Grid instance inside TaskGrid. */\nexport interface IGridCustomizerStrategy {\n /** Called once after the grid is ready. Use to call `customizer.registerExpressionDecorator` or perform other one-time setup. */\n onInitialize: (customizer: IGridCustomizer) => void;\n /** Receives the computed column definitions and may return a modified array. */\n onGetColumnDefinitions?: (columnDefs: ColDef[]) => ColDef[];\n /** Receives the default row class rules map and may return an extended or overridden version. */\n onGetRowClassRules?: (rules: RowClassRules) => RowClassRules;\n}\n\n/** Provides access to the AG Grid instance and the TaskGrid control to code running inside `IGridCustomizerStrategy`. */\nexport interface IGridCustomizer {\n /** Returns the underlying AG Grid `GridApi`. */\n getGridApi(): GridApi;\n /** Returns the `ITaskDataProvider` that backs the grid data layer. */\n getTaskDataProvider(): ITaskDataProvider;\n /** Returns the `ITaskGridDatasetControl` runtime control interface. */\n getDatasetControl(): ITaskGridDatasetControl;\n /**\n * Registers a column-expression decorator only when the given column exists in the current columns map.\n * Prevents errors when registering decorators for columns that may not be present in all views.\n */\n registerExpressionDecorator(columnName: string, registrator: () => void): void;\n}\n\nexport interface IGridCustomizerParameters {\n gridApi: GridApi;\n datasetControl: ITaskGridDatasetControl;\n strategy?: IGridCustomizerStrategy;\n}\n\nexport class GridCustomizer implements IGridCustomizer {\n private _taskDataProvider: ITaskDataProvider;\n private _gridApi: GridApi;\n private _gridDragHandler: GridDragHandler;\n private _localizationService: ILocalizationService<ITaskGridLabels>;\n private _nativeColumns: INativeColumns;\n private _pcfContext: ComponentFramework.Context<any>;\n private _datasetControl: ITaskGridDatasetControl;\n private _strategy?: IGridCustomizerStrategy;\n\n constructor(parameters: IGridCustomizerParameters) {\n this._datasetControl = parameters.datasetControl;\n this._taskDataProvider = this._datasetControl.getDataProvider();\n this._gridApi = parameters.gridApi;\n this._localizationService = this._datasetControl.getLocalizationService();\n this._nativeColumns = this._datasetControl.getNativeColumns();\n this._strategy = parameters.strategy;\n this._pcfContext = this._datasetControl.getPcfContext();\n\n this._gridDragHandler = new GridDragHandler({\n gridApi: this._gridApi,\n datasetControl: this._datasetControl\n });\n this._patchGridApi();\n this._registerEventListeners();\n this._gridApi.setGridOption('rowClassRules', this._getRowClassRules());\n this._strategy?.onInitialize?.(this);\n }\n\n public getDatasetControl(): ITaskGridDatasetControl {\n return this._datasetControl;\n }\n\n public getGridApi(): GridApi {\n return this._gridApi;\n }\n\n public getTaskDataProvider(): ITaskDataProvider {\n return this._taskDataProvider;\n }\n\n //makes sure we do not try to register an expression for a column that does not exist\n public registerExpressionDecorator(columnName: string, registrator: () => void) {\n if (columnName && this._taskDataProvider.getColumnsMap()[columnName]) {\n registrator();\n }\n }\n\n private _patchGridApi() {\n const originalSetGridOption = this._gridApi.setGridOption.bind(this._gridApi);\n this._gridApi.setGridOption = (key: any, value: any): void => {\n switch (key) {\n case 'columnDefs': {\n const columnDefs = this._getColumnDefinitions(value);\n originalSetGridOption(key, columnDefs);\n break;\n }\n case 'isServerSideGroupOpenByDefault': {\n originalSetGridOption(key, (params: IsServerSideGroupOpenByDefaultParams) => this._isServerSideGroupOpenByDefault(params, (params) => value(params)));\n break;\n }\n default: {\n originalSetGridOption(key, value);\n }\n }\n }\n }\n\n private _isServerSideGroupOpenByDefault(params: IsServerSideGroupOpenByDefaultParams, defaultAction: (params: IsServerSideGroupOpenByDefaultParams) => boolean): boolean {\n if (!params.data || this._taskDataProvider.isFlatListEnabled()) {\n return false\n }\n const matchingRecords = this._taskDataProvider.getRecordTree().getMatchingRecords();\n const result = !matchingRecords[params.data.getRecordId()];\n if(result) {\n return result;\n }\n return defaultAction(params);\n }\n\n private _injectAddTaskColumn(columnDefs: ColDef[]) {\n if (!this._taskDataProvider.isFlatListEnabled() && !columnDefs.find(colDef => colDef.colId === ADD_TASK_COLUMN_NAME)) {\n columnDefs.push({\n colId: ADD_TASK_COLUMN_NAME,\n headerName: '',\n pinned: 'left',\n width: 50,\n resizable: false,\n lockPinned: true,\n lockPosition: true,\n suppressMovable: true,\n suppressSizeToFit: true,\n cellRenderer: AddTaskButton,\n headerComponent: TreeExpandCollapseHeader\n })\n }\n }\n\n private _getColumnDefinitions(columnDefs: ColDef[]) {\n this._injectAddTaskColumn(columnDefs);\n for (const colDef of columnDefs) {\n colDef.onCellDoubleClicked = () => { }\n const columnName = colDef.colId as string;\n const column = this._taskDataProvider.getColumnsMap()[columnName];\n const customCellRenderer = this._getCustomControlForColumn('renderer', column);\n const customCellEditor = this._getCustomControlForColumn('editor', column);\n switch (columnName) {\n case this._nativeColumns.subject: {\n colDef.cellRenderer = GroupCell;\n colDef.pinned = 'left';\n break;\n }\n case DatasetConstants.CHECKBOX_COLUMN_KEY: {\n colDef.lockPosition = true;\n break;\n }\n }\n if(customCellRenderer === PERCENT_COMPLETE_CONTROL_NAME) {\n colDef.cellRenderer = PercentComplete;\n }\n if(customCellEditor === PERCENT_COMPLETE_CONTROL_NAME) {\n colDef.cellEditor = PercentComplete;\n }\n }\n\n columnDefs.sort((a, b) => this._getColumnPriority(a) - this._getColumnPriority(b));\n columnDefs = this._strategy?.onGetColumnDefinitions?.(columnDefs) ?? columnDefs;\n return columnDefs;\n\n }\n\n private _getCustomControlForColumn(role: 'editor' | 'renderer', column?: IColumn): string | null {\n const control = column?.controls?.find(c => c.appliesTo === role || c.appliesTo === 'both');\n return control?.name ?? null;\n }\n\n private _getColumnPriority(col: ColDef): number {\n if (col.colId === DatasetConstants.CHECKBOX_COLUMN_KEY) return 0;\n if (col.colId === ADD_TASK_COLUMN_NAME) return 1;\n if (col.field === this._nativeColumns.subject) return 2;\n return 3;\n }\n\n private _getRowClassRules(): RowClassRules {\n const rules: RowClassRules = {\n 'talxis_task-grid_row--drag-over-middle': (params) => {\n return !!params.data?.isActive() && this._getNodeDragOverSection(params.node) === 'middle'\n },\n 'talxis_task-grid_row--drag-over-top': (params) => {\n return this._getNodeDragOverSection(params.node) === 'top'\n },\n 'talxis_task-grid_row--drag-over-bottom': (params) => {\n return this._getNodeDragOverSection(params.node) === 'bottom'\n },\n 'talxis_task-grid_row--inactive': (params) => {\n return !params.data?.isActive()\n },\n 'talxis_task-grid_row--unmatched-parent': (params) => {\n if (params.data) {\n const matchingRecordsMap = this._taskDataProvider.getRecordTree().getMatchingRecords();\n return !matchingRecordsMap[params.data!.getRecordId()]\n }\n else {\n return false;\n }\n }\n }\n return this._strategy?.onGetRowClassRules?.(rules) ?? rules;\n }\n\n private _getPathToParent(node: IRowNode<IRecord> | null): string[] {\n const path: string[] = [];\n let parent = node?.parent;\n while (parent) {\n path.push(parent.id!);\n parent = parent.parent;\n }\n return path.filter(id => id).reverse();\n }\n\n //undefined means we should target top level\n private _onRecordTreeUpdated = (affectedIds: (string | undefined)[]) => {\n for (const id of affectedIds) {\n if (!id) {\n this._gridApi.refreshServerSide();\n }\n else {\n const node = this._gridApi.getRowNode(id)!;\n this._gridApi.refreshServerSide({\n route: this._getPathToParent(node)\n });\n this._gridApi.refreshServerSide({\n route: [...this._getPathToParent(node), id]\n })\n }\n }\n this._gridApi.refreshCells({\n columns: [this._nativeColumns.subject],\n force: true\n });\n this._taskDataProvider.requestRender();\n }\n\n private _getNodeDragOverSection(node: IRowNode<IRecord>): IDragOperation['dragOverSection'] | null {\n const pendingDragOperation = this._gridDragHandler.getPendingDragOperation();\n if (!pendingDragOperation) {\n return null;\n }\n else {\n const isCurrentNode = pendingDragOperation.overNode === node;\n const isDraggedNode = pendingDragOperation.draggedNode === pendingDragOperation.overNode;\n if (isCurrentNode && !isDraggedNode) {\n return pendingDragOperation.dragOverSection;\n }\n else {\n return null;\n }\n }\n }\n\n private async _onDragEnd(dragOperation: IDragOperation) {\n if (this._isDragOperationAllowed(dragOperation)) {\n this._moveTask(dragOperation);\n }\n }\n\n private _isDragOperationAllowed(dragOperation: IDragOperation): boolean {\n const { draggedNode, overNode } = dragOperation;\n // Check if either node is null/undefined\n if (!draggedNode || !overNode) {\n return false;\n }\n if (draggedNode === overNode) {\n return false;\n }\n if (!overNode.data?.isActive() && dragOperation.dragOverSection === 'middle') {\n return false;\n }\n\n let parent = overNode.parent;\n while (parent) {\n if (parent === draggedNode) {\n return false;\n }\n parent = parent.parent;\n }\n return true;\n }\n\n private _getPositionFromDragOverSection(dragOverSection: IDragOperation['dragOverSection']): 'above' | 'below' | 'child' {\n switch (dragOverSection) {\n case 'top': {\n return 'above';\n }\n case 'bottom': {\n return 'below';\n }\n case 'middle': {\n return 'child';\n }\n }\n }\n\n private async _moveTask(dragOperation: IDragOperation) {\n const { draggedNode, overNode, dragOverSection } = dragOperation;\n const position = this._getPositionFromDragOverSection(dragOverSection);\n this._taskDataProvider.moveTask(draggedNode.id!, overNode.id!, position);\n }\n\n private _moveInto(movingFromRecordId: string, movingToRecordId: string, position: 'child' | 'above' | 'below') {\n const draggedRecordNode = this._taskDataProvider.getRecordTree().getNode(movingFromRecordId);\n const draggedRecord = this._taskDataProvider.getRecordsMap()[movingFromRecordId];\n const draggedNode = this._gridApi.getRowNode(movingFromRecordId)!;\n const overNode = this._gridApi.getRowNode(movingToRecordId)!;\n\n let addIndex: number | null = draggedRecordNode.index;\n\n //first remove from old location\n this._gridApi.applyServerSideTransaction({\n route: this._getPathToParent(draggedNode),\n remove: [draggedRecord],\n });\n\n //update the store where dragged parent node is (so the arrow can disappear if needed)\n this._gridApi.applyServerSideTransaction({\n route: this._getPathToParent(draggedNode.parent),\n update: [draggedNode.data],\n });\n\n //update the store where over node is (so the arrow can appear if needed)\n this._gridApi.applyServerSideTransaction({\n route: this._getPathToParent(overNode),\n update: [overNode.data],\n });\n //then add to new location\n this._gridApi.applyServerSideTransaction({\n // i need to set route to parent of over node\n route: [...this._getPathToParent(overNode), ...(position === 'child' ? [overNode.id!] : [])],\n add: [draggedRecord],\n addIndex: addIndex !== null ? addIndex : undefined,\n });\n\n if (position === 'child') {\n setTimeout(() => {\n overNode.setExpanded(true);\n }, 0);\n }\n this._gridApi.refreshCells({\n columns: [this._nativeColumns.subject],\n force: true\n });\n this._taskDataProvider.clearSelectedRecordIds();\n }\n\n\n private _onAfterTasksCreated = (records: IRawRecord[] | null, parentId?: string) => {\n if (!records || records.length === 0) return;\n if (parentId) {\n const parentNode = this._gridApi.getRowNode(parentId);\n if (parentNode && !parentNode.expanded) {\n parentNode.setExpanded(true);\n }\n }\n setTimeout(() => {\n const primaryIdAttribute = this._taskDataProvider.getMetadata().PrimaryIdAttribute;\n const recordId = records[0][primaryIdAttribute] as string;\n const node = this._gridApi.getRowNode(recordId);\n if (!node) return;\n if (records.length === 1 && this._datasetControl.isInlineCreateEnabled()) {\n const rowIndex = node.rowIndex!;\n this._gridApi.startEditingCell({\n rowIndex: rowIndex,\n colKey: this._nativeColumns.subject\n });\n }\n else {\n this._gridApi.setFocusedCell(node!.rowIndex!, this._nativeColumns.subject);\n this._gridApi.ensureNodeVisible(node!);\n }\n }, 100);\n }\n\n\n private _onAfterTaskDataUpdated = (newData: IRawRecord[]) => {\n const recordIdsSet = new Set(newData.map(item => item[this._taskDataProvider.getMetadata().PrimaryIdAttribute]));\n const nodes = this._gridApi.getRenderedNodes().filter(node => recordIdsSet.has(node.id!));\n this._gridApi.refreshCells({\n rowNodes: nodes,\n force: true\n })\n }\n\n private _registerEventListeners() {\n this._taskDataProvider.taskEvents.addEventListener('onAfterTaskMoved', (movingFromTaskId, movingToTaskId, position) => this._moveInto(movingFromTaskId, movingToTaskId, position));\n this._taskDataProvider.taskEvents.addEventListener('onAfterTasksCreated', (records, parentId) => this._onAfterTasksCreated(records, parentId));\n this._taskDataProvider.taskEvents.addEventListener('onRecordTreeUpdated', (updatedParentIds) => this._onRecordTreeUpdated(updatedParentIds));\n this._taskDataProvider.taskEvents.addEventListener('onTaskDataUpdated', (newData) => this._onAfterTaskDataUpdated(newData));\n this._gridDragHandler.addEventListener('onDragEnd', (dragOperation) => this._onDragEnd(dragOperation));\n }\n}"],"names":[],"mappings":";;;;;;;AAYO,MAAM,oBAAoB,GAAG,UAAU;MAsCjC,cAAc,CAAA;AAUvB,IAAA,WAAA,CAAY,UAAqC,EAAA;;AA2KzC,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,WAAmC,KAAI;AACnE,YAAA,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE;gBAC1B,IAAI,CAAC,EAAE,EAAE;AACL,oBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;AACrC,iBAAA;AACI,qBAAA;oBACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAE,CAAC;AAC3C,oBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC5B,wBAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACrC,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;wBAC5B,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AAC9C,qBAAA,CAAC,CAAA;AACL,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;AACvB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AACtC,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAC3C,SAAC,CAAA;AAkHO,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,OAA4B,EAAE,QAAiB,KAAI;AAC/E,YAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;AAC7C,YAAA,IAAI,QAAQ,EAAE;gBACV,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtD,gBAAA,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AACpC,oBAAA,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAChC,iBAAA;AACJ,aAAA;YACD,UAAU,CAAC,MAAK;gBACZ,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,kBAAkB,CAAC;gBACnF,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAW,CAAC;gBAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,IAAI;oBAAE,OAAO;AAClB,gBAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,EAAE;AACtE,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAS,CAAC;AAChC,oBAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AAC3B,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO;AACtC,qBAAA,CAAC,CAAC;AACN,iBAAA;AACI,qBAAA;AACD,oBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAK,CAAC,QAAS,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC3E,oBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAK,CAAC,CAAC;AAC1C,iBAAA;aACJ,EAAE,GAAG,CAAC,CAAC;AACZ,SAAC,CAAA;AAGO,QAAA,IAAA,CAAA,uBAAuB,GAAG,CAAC,OAAqB,KAAI;YACxD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACjH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;AACvB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA,CAAC,CAAA;AACN,SAAC,CAAA;AAnVG,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;QAC1E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;AAExD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,CAAC;YACxC,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,cAAc,EAAE,IAAI,CAAC,eAAe;AACvC,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;KACxC;IAEM,iBAAiB,GAAA;QACpB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAEM,UAAU,GAAA;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAEM,mBAAmB,GAAA;QACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;;IAGM,2BAA2B,CAAC,UAAkB,EAAE,WAAuB,EAAA;QAC1E,IAAI,UAAU,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,EAAE;AAClE,YAAA,WAAW,EAAE,CAAC;AACjB,SAAA;KACJ;IAEO,aAAa,GAAA;AACjB,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,CAAC,GAAQ,EAAE,KAAU,KAAU;AACzD,YAAA,QAAQ,GAAG;gBACP,KAAK,YAAY,EAAE;oBACf,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACrD,oBAAA,qBAAqB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;oBACvC,MAAM;AACT,iBAAA;gBACD,KAAK,gCAAgC,EAAE;oBACnC,qBAAqB,CAAC,GAAG,EAAE,CAAC,MAA4C,KAAK,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACtJ,MAAM;AACT,iBAAA;AACD,gBAAA,SAAS;AACL,oBAAA,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrC,iBAAA;AACJ,aAAA;AACL,SAAC,CAAA;KACJ;IAEO,+BAA+B,CAAC,MAA4C,EAAE,aAAwE,EAAA;QAC1J,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,EAAE;AAC5D,YAAA,OAAO,KAAK,CAAA;AACf,SAAA;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,kBAAkB,EAAE,CAAC;AACpF,QAAA,MAAM,MAAM,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3D,QAAA,IAAG,MAAM,EAAE;AACP,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;AACD,QAAA,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;KAChC;AAEO,IAAA,oBAAoB,CAAC,UAAoB,EAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,oBAAoB,CAAC,EAAE;YAClH,UAAU,CAAC,IAAI,CAAC;AACZ,gBAAA,KAAK,EAAE,oBAAoB;AAC3B,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,eAAe,EAAE,IAAI;AACrB,gBAAA,iBAAiB,EAAE,IAAI;AACvB,gBAAA,YAAY,EAAE,aAAa;AAC3B,gBAAA,eAAe,EAAE,wBAAwB;AAC5C,aAAA,CAAC,CAAA;AACL,SAAA;KACJ;AAEO,IAAA,qBAAqB,CAAC,UAAoB,EAAA;AAC9C,QAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACtC,QAAA,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;AAC7B,YAAA,MAAM,CAAC,mBAAmB,GAAG,MAAK,GAAI,CAAA;AACtC,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAe,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,CAAC;YAClE,MAAM,kBAAkB,GAAG,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC/E,MAAM,gBAAgB,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3E,YAAA,QAAQ,UAAU;AACd,gBAAA,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAC9B,oBAAA,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;AAChC,oBAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;oBACvB,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,gBAAgB,CAAC,mBAAmB,EAAE;AACvC,oBAAA,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;oBAC3B,MAAM;AACT,iBAAA;AACJ,aAAA;YACD,IAAG,kBAAkB,KAAK,6BAA6B,EAAE;AACrD,gBAAA,MAAM,CAAC,YAAY,GAAG,eAAe,CAAC;AACzC,aAAA;YACD,IAAG,gBAAgB,KAAK,6BAA6B,EAAE;AACnD,gBAAA,MAAM,CAAC,UAAU,GAAG,eAAe,CAAC;AACvC,aAAA;AACJ,SAAA;QAED,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,QAAA,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,sBAAsB,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC;AAChF,QAAA,OAAO,UAAU,CAAC;KAErB;IAEO,0BAA0B,CAAC,IAA2B,EAAE,MAAgB,EAAA;QAC5E,MAAM,OAAO,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC;AAC5F,QAAA,OAAO,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;KAChC;AAEO,IAAA,kBAAkB,CAAC,GAAW,EAAA;AAClC,QAAA,IAAI,GAAG,CAAC,KAAK,KAAK,gBAAgB,CAAC,mBAAmB;AAAE,YAAA,OAAO,CAAC,CAAC;AACjE,QAAA,IAAI,GAAG,CAAC,KAAK,KAAK,oBAAoB;AAAE,YAAA,OAAO,CAAC,CAAC;QACjD,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO;AAAE,YAAA,OAAO,CAAC,CAAC;AACxD,QAAA,OAAO,CAAC,CAAC;KACZ;IAEO,iBAAiB,GAAA;AACrB,QAAA,MAAM,KAAK,GAAkB;AACzB,YAAA,wCAAwC,EAAE,CAAC,MAAM,KAAI;AACjD,gBAAA,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAA;aAC7F;AACD,YAAA,qCAAqC,EAAE,CAAC,MAAM,KAAI;gBAC9C,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,CAAA;aAC7D;AACD,YAAA,wCAAwC,EAAE,CAAC,MAAM,KAAI;gBACjD,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAA;aAChE;AACD,YAAA,gCAAgC,EAAE,CAAC,MAAM,KAAI;AACzC,gBAAA,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAA;aAClC;AACD,YAAA,wCAAwC,EAAE,CAAC,MAAM,KAAI;gBACjD,IAAI,MAAM,CAAC,IAAI,EAAE;oBACb,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,kBAAkB,EAAE,CAAC;oBACvF,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAK,CAAC,WAAW,EAAE,CAAC,CAAA;AACzD,iBAAA;AACI,qBAAA;AACD,oBAAA,OAAO,KAAK,CAAC;AAChB,iBAAA;aACJ;SACJ,CAAA;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,kBAAkB,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC;KAC/D;AAEO,IAAA,gBAAgB,CAAC,IAA8B,EAAA;QACnD,MAAM,IAAI,GAAa,EAAE,CAAC;AAC1B,QAAA,IAAI,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC;AAC1B,QAAA,OAAO,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAG,CAAC,CAAC;AACtB,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC1B,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;KAC1C;AAyBO,IAAA,uBAAuB,CAAC,IAAuB,EAAA;QACnD,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,CAAC;QAC7E,IAAI,CAAC,oBAAoB,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACI,aAAA;AACD,YAAA,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,KAAK,IAAI,CAAC;YAC7D,MAAM,aAAa,GAAG,oBAAoB,CAAC,WAAW,KAAK,oBAAoB,CAAC,QAAQ,CAAC;AACzF,YAAA,IAAI,aAAa,IAAI,CAAC,aAAa,EAAE;gBACjC,OAAO,oBAAoB,CAAC,eAAe,CAAC;AAC/C,aAAA;AACI,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;KACJ;IAEO,MAAM,UAAU,CAAC,aAA6B,EAAA;AAClD,QAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AACjC,SAAA;KACJ;AAEO,IAAA,uBAAuB,CAAC,aAA6B,EAAA;AACzD,QAAA,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;;AAEhD,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QACD,IAAI,WAAW,KAAK,QAAQ,EAAE;AAC1B,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,aAAa,CAAC,eAAe,KAAK,QAAQ,EAAE;AAC1E,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC7B,QAAA,OAAO,MAAM,EAAE;YACX,IAAI,MAAM,KAAK,WAAW,EAAE;AACxB,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACD,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC1B,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEO,IAAA,+BAA+B,CAAC,eAAkD,EAAA;AACtF,QAAA,QAAQ,eAAe;YACnB,KAAK,KAAK,EAAE;AACR,gBAAA,OAAO,OAAO,CAAC;AAClB,aAAA;YACD,KAAK,QAAQ,EAAE;AACX,gBAAA,OAAO,OAAO,CAAC;AAClB,aAAA;YACD,KAAK,QAAQ,EAAE;AACX,gBAAA,OAAO,OAAO,CAAC;AAClB,aAAA;AACJ,SAAA;KACJ;IAEO,MAAM,SAAS,CAAC,aAA6B,EAAA;QACjD,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,+BAA+B,CAAC,eAAe,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAG,EAAE,QAAQ,CAAC,EAAG,EAAE,QAAQ,CAAC,CAAC;KAC5E;AAEO,IAAA,SAAS,CAAC,kBAA0B,EAAE,gBAAwB,EAAE,QAAqC,EAAA;AACzG,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC7F,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,kBAAkB,CAAC,CAAC;QACjF,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAE,CAAC;AAE7D,QAAA,IAAI,QAAQ,GAAkB,iBAAiB,CAAC,KAAK,CAAC;;AAGtD,QAAA,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC;AACrC,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;YACzC,MAAM,EAAE,CAAC,aAAa,CAAC;AAC1B,SAAA,CAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACrC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC;AAChD,YAAA,MAAM,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;AAC7B,SAAA,CAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC;AACrC,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AACtC,YAAA,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC1B,SAAA,CAAC,CAAC;;AAEH,QAAA,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC;;AAErC,YAAA,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,KAAK,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5F,GAAG,EAAE,CAAC,aAAa,CAAC;YACpB,QAAQ,EAAE,QAAQ,KAAK,IAAI,GAAG,QAAQ,GAAG,SAAS;AACrD,SAAA,CAAC,CAAC;QAEH,IAAI,QAAQ,KAAK,OAAO,EAAE;YACtB,UAAU,CAAC,MAAK;AACZ,gBAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAC9B,EAAE,CAAC,CAAC,CAAC;AACT,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;AACvB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AACtC,YAAA,KAAK,EAAE,IAAI;AACd,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;KACnD;IAwCO,uBAAuB,GAAA;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,gBAAgB,EAAE,cAAc,EAAE,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnL,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/I,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,gBAAgB,KAAK,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC7I,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5H,QAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;KAC1G;AACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"GridDragHandler.js","sources":["../../../../../../src/components/TaskGrid/components/grid/grid-drag-handler/GridDragHandler.ts"],"sourcesContent":["import { GridApi, IRowNode, RowDragEvent } from \"@ag-grid-community/core\";\nimport { EventEmitter, IRecord } from \"@talxis/client-libraries\";\nimport { ITaskDataProvider } from \"../../../data-providers/task-data-provider\";\nimport { INativeColumns, ITaskGridDatasetControl } from \"../../../interfaces\";\n\ninterface IGridDragHandlerParameters {\n datasetControl: ITaskGridDatasetControl;\n gridApi: GridApi<IRecord>;\n}\n\nexport interface IDragOperation {\n overNode: IRowNode<IRecord>;\n draggedNode: IRowNode<IRecord>;\n dragOverSection: 'top' | 'middle' | 'bottom';\n}\n\ninterface IGridDragHandlerEvents {\n onDragEnd: (dragOperation: IDragOperation) => void;\n}\n\nexport class GridDragHandler extends EventEmitter<IGridDragHandlerEvents> {\n private _gridApi: GridApi<IRecord>;\n private _dataProvider: ITaskDataProvider;\n private _dragOperation: IDragOperation | null = null;\n private _nativeColumns: INativeColumns;\n private _datasetControl: ITaskGridDatasetControl;\n \n constructor(parameters: IGridDragHandlerParameters) {\n super();\n this._gridApi = parameters.gridApi;\n this._dataProvider = parameters.datasetControl.getDataProvider();\n this._datasetControl = parameters.datasetControl;\n this._nativeColumns = parameters.datasetControl.getNativeColumns();\n this._gridApi.setGridOption('rowDragEntireRow', true);\n this._gridApi.setGridOption('onRowDragMove', (e) => this._onRowDragMove(e));\n this._gridApi.setGridOption('onRowDragEnd', (e) => this._onRowDragEnd(e));\n this._dataProvider.addEventListener('onBeforeNewDataLoaded', () => this._toggleRowDragging())\n }\n\n public getPendingDragOperation(): IDragOperation | null {\n return this._dragOperation;\n }\n\n private _determineDragOverSection(y: number, overNode?: IRowNode<IRecord>): IDragOperation['dragOverSection'] {\n const { rowHeight, rowTop } = overNode!;\n const rowY = y - rowTop!;\n const thirdHeight = rowHeight! / 3;\n\n if (rowY <= thirdHeight) {\n return 'top';\n } else if (rowY <= 2 * thirdHeight) {\n return 'middle'\n } else {\n return 'bottom';\n }\n }\n\n private _onRowDragEnd(e: RowDragEvent<IRecord, any>) {\n this.dispatchEvent('onDragEnd', this._dragOperation!);\n this._dragOperation = null;\n this._refreshRowClasses(e.overNode);\n }\n\n\n private _onRowDragMove(e: RowDragEvent<IRecord, any>) {\n const { overNode, node, y } = e;\n const dragOverSection = this._determineDragOverSection(y, overNode);\n setTimeout(() => {\n const currentOverNode = this._dragOperation?.overNode;\n if (currentOverNode === overNode && dragOverSection === 'middle' && !overNode?.expanded && this._dataProvider.getRecordTree().hasChildren(overNode!.data!.getRecordId())) {\n overNode?.setExpanded(true);\n }\n }, 1000);\n if (this._dragOperation && this._dragOperation.overNode !== overNode) {\n // Refresh previous over node to remove drag classes\n this._refreshRowClasses(this._dragOperation.overNode);\n }\n this._dragOperation = {\n overNode: overNode!,\n draggedNode: node,\n dragOverSection: dragOverSection\n };\n this._refreshRowClasses(overNode);\n }\n\n private _refreshRowClasses(node?: IRowNode<IRecord>) {\n if (!node) {\n return;\n }\n //@ts-ignore - typings - getGroupKeys missing in type\n const keys = [...node.getGroupKeys()].slice(0, -1);\n this._gridApi.applyServerSideTransactionAsync({\n route: keys,\n update: [node.data]\n })\n }\n\n private _toggleRowDragging() {\n const sorting = this._dataProvider.getSorting();\n const isFlatListEnabled = this._dataProvider.isFlatListEnabled();\n const isSortedByNonStackRank = sorting.length > 0 && sorting[0].name !== this._nativeColumns.stackRank;\n const isRowDraggingEnabled = this._datasetControl.isRowDraggingEnabled();\n\n const canDrag = isRowDraggingEnabled && !isFlatListEnabled && !isSortedByNonStackRank;\n this._gridApi.setGridOption('rowDragEntireRow', canDrag);\n }\n}"],"names":[],"mappings":";;AAoBM,MAAO,eAAgB,SAAQ,YAAoC,CAAA;AAOrE,IAAA,WAAA,CAAY,UAAsC,EAAA;AAC9C,QAAA,KAAK,EAAE,CAAC;QALJ,IAAc,CAAA,cAAA,GAA0B,IAAI,CAAC;AAMjD,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;AACjE,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAA;KAChG;IAEM,uBAAuB,GAAA;QAC1B,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAEO,yBAAyB,CAAC,CAAS,EAAE,QAA4B,EAAA;AACrE,QAAA,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,QAAS,CAAC;AACxC,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,MAAO,CAAC;AACzB,QAAA,MAAM,WAAW,GAAG,SAAU,GAAG,CAAC,CAAC;QAEnC,IAAI,IAAI,IAAI,WAAW,EAAE;AACrB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAAM,aAAA,IAAI,IAAI,IAAI,CAAC,GAAG,WAAW,EAAE;AAChC,YAAA,OAAO,QAAQ,CAAA;AAClB,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;KACJ;AAEO,IAAA,aAAa,CAAC,CAA6B,EAAA;QAC/C,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,cAAe,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;KACvC;AAGO,IAAA,cAAc,CAAC,CAA6B,EAAA;QAChD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAChC,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpE,UAAU,CAAC,MAAK;AACZ,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC;AACtD,YAAA,IAAI,eAAe,KAAK,QAAQ,IAAI,eAAe,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC,QAAS,CAAC,IAAK,CAAC,WAAW,EAAE,CAAC,EAAE;AACtK,gBAAA,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/B,aAAA;SACJ,EAAE,IAAI,CAAC,CAAC;QACT,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,KAAK,QAAQ,EAAE;;YAElE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACzD,SAAA;QACD,IAAI,CAAC,cAAc,GAAG;AAClB,YAAA,QAAQ,EAAE,QAAS;AACnB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,eAAe,EAAE,eAAe;SACnC,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;KACrC;AAEO,IAAA,kBAAkB,CAAC,IAAwB,EAAA;QAC/C,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;AACV,SAAA;;AAED,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC;AAC1C,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACtB,SAAA,CAAC,CAAA;KACL;IAEO,kBAAkB,GAAA;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;QACjE,MAAM,sBAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QACvG,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;QAEzE,MAAM,OAAO,GAAG,oBAAoB,IAAI,CAAC,iBAAiB,IAAI,CAAC,sBAAsB,CAAC;QACtF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;KAC5D;AACJ;;;;"}
1
+ {"version":3,"file":"GridDragHandler.js","sources":["../../../../../../src/components/TaskGrid/components/grid/grid-drag-handler/GridDragHandler.ts"],"sourcesContent":["import { GridApi, IRowNode, RowDragEvent } from \"@ag-grid-community/core\";\nimport { EventEmitter, IRecord } from \"@talxis/client-libraries\";\nimport { ITaskDataProvider } from \"../../../providers/task\";\nimport { INativeColumns, ITaskGridDatasetControl } from \"../../../interfaces\";\n\ninterface IGridDragHandlerParameters {\n datasetControl: ITaskGridDatasetControl;\n gridApi: GridApi<IRecord>;\n}\n\nexport interface IDragOperation {\n overNode: IRowNode<IRecord>;\n draggedNode: IRowNode<IRecord>;\n dragOverSection: 'top' | 'middle' | 'bottom';\n}\n\ninterface IGridDragHandlerEvents {\n onDragEnd: (dragOperation: IDragOperation) => void;\n}\n\nexport class GridDragHandler extends EventEmitter<IGridDragHandlerEvents> {\n private _gridApi: GridApi<IRecord>;\n private _dataProvider: ITaskDataProvider;\n private _dragOperation: IDragOperation | null = null;\n private _nativeColumns: INativeColumns;\n private _datasetControl: ITaskGridDatasetControl;\n \n constructor(parameters: IGridDragHandlerParameters) {\n super();\n this._gridApi = parameters.gridApi;\n this._dataProvider = parameters.datasetControl.getDataProvider();\n this._datasetControl = parameters.datasetControl;\n this._nativeColumns = parameters.datasetControl.getNativeColumns();\n this._gridApi.setGridOption('rowDragEntireRow', true);\n this._gridApi.setGridOption('onRowDragMove', (e) => this._onRowDragMove(e));\n this._gridApi.setGridOption('onRowDragEnd', (e) => this._onRowDragEnd(e));\n this._dataProvider.addEventListener('onBeforeNewDataLoaded', () => this._toggleRowDragging())\n }\n\n public getPendingDragOperation(): IDragOperation | null {\n return this._dragOperation;\n }\n\n private _determineDragOverSection(y: number, overNode?: IRowNode<IRecord>): IDragOperation['dragOverSection'] {\n const { rowHeight, rowTop } = overNode!;\n const rowY = y - rowTop!;\n const thirdHeight = rowHeight! / 3;\n\n if (rowY <= thirdHeight) {\n return 'top';\n } else if (rowY <= 2 * thirdHeight) {\n return 'middle'\n } else {\n return 'bottom';\n }\n }\n\n private _onRowDragEnd(e: RowDragEvent<IRecord, any>) {\n this.dispatchEvent('onDragEnd', this._dragOperation!);\n this._dragOperation = null;\n this._refreshRowClasses(e.overNode);\n }\n\n\n private _onRowDragMove(e: RowDragEvent<IRecord, any>) {\n const { overNode, node, y } = e;\n const dragOverSection = this._determineDragOverSection(y, overNode);\n setTimeout(() => {\n const currentOverNode = this._dragOperation?.overNode;\n if (currentOverNode === overNode && dragOverSection === 'middle' && !overNode?.expanded && this._dataProvider.getRecordTree().hasChildren(overNode!.data!.getRecordId())) {\n overNode?.setExpanded(true);\n }\n }, 1000);\n if (this._dragOperation && this._dragOperation.overNode !== overNode) {\n // Refresh previous over node to remove drag classes\n this._refreshRowClasses(this._dragOperation.overNode);\n }\n this._dragOperation = {\n overNode: overNode!,\n draggedNode: node,\n dragOverSection: dragOverSection\n };\n this._refreshRowClasses(overNode);\n }\n\n private _refreshRowClasses(node?: IRowNode<IRecord>) {\n if (!node) {\n return;\n }\n //@ts-ignore - typings - getGroupKeys missing in type\n const keys = [...node.getGroupKeys()].slice(0, -1);\n this._gridApi.applyServerSideTransactionAsync({\n route: keys,\n update: [node.data]\n })\n }\n\n private _toggleRowDragging() {\n const sorting = this._dataProvider.getSorting();\n const isFlatListEnabled = this._dataProvider.isFlatListEnabled();\n const isSortedByNonStackRank = sorting.length > 0 && sorting[0].name !== this._nativeColumns.stackRank;\n const isRowDraggingEnabled = this._datasetControl.isRowDraggingEnabled();\n\n const canDrag = isRowDraggingEnabled && !isFlatListEnabled && !isSortedByNonStackRank;\n this._gridApi.setGridOption('rowDragEntireRow', canDrag);\n }\n}"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /// <reference types="@types/powerapps-component-framework" />
2
+ import { IDataProvider } from '@talxis/client-libraries';
3
+ import { ILookupManyComponents } from './components';
4
+ export interface ILookupManyProps {
5
+ dataProvider: IDataProvider;
6
+ selectedRecordHeight?: number;
7
+ isDisabled?: boolean;
8
+ selectedRecords?: ComponentFramework.EntityReference[];
9
+ components?: Partial<ILookupManyComponents>;
10
+ onRecordSelect?: (selectedRecords: ComponentFramework.EntityReference[]) => void;
11
+ onRecordOpen?: (record: ComponentFramework.EntityReference) => void;
12
+ }
13
+ export declare const LookupMany: (props: ILookupManyProps) => import("react/jsx-runtime").JSX.Element;