@talxis/base-controls 1.2507.2 → 1.2509.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (477) hide show
  1. package/dist/components/DatasetControl/DatasetControl.js +59 -55
  2. package/dist/components/DatasetControl/DatasetControl.js.map +1 -1
  3. package/dist/components/DatasetControl/DatasetControlModel.d.ts +37 -0
  4. package/dist/components/DatasetControl/DatasetControlModel.js +110 -0
  5. package/dist/components/DatasetControl/DatasetControlModel.js.map +1 -0
  6. package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.d.ts +3 -0
  7. package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.js +166 -0
  8. package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.js.map +1 -0
  9. package/dist/components/DatasetControl/Filtering/DatasetColumnFilteringModel.d.ts +16 -0
  10. package/dist/components/DatasetControl/Filtering/DatasetColumnFilteringModel.js +59 -0
  11. package/dist/components/DatasetControl/Filtering/DatasetColumnFilteringModel.js.map +1 -0
  12. package/dist/components/DatasetControl/Filtering/interfaces.d.ts +32 -0
  13. package/dist/components/DatasetControl/Filtering/styles.d.ts +16 -0
  14. package/dist/components/DatasetControl/Filtering/styles.js +23 -0
  15. package/dist/components/DatasetControl/Filtering/styles.js.map +1 -0
  16. package/dist/components/DatasetControl/Filtering/translations.d.ts +154 -0
  17. package/dist/components/DatasetControl/Filtering/translations.js +43 -0
  18. package/dist/components/DatasetControl/Filtering/translations.js.map +1 -0
  19. package/dist/components/DatasetControl/Header/Header.d.ts +5 -0
  20. package/dist/components/DatasetControl/Header/Header.js +89 -0
  21. package/dist/components/DatasetControl/Header/Header.js.map +1 -0
  22. package/dist/components/DatasetControl/Header/styles.d.ts +22 -0
  23. package/dist/components/DatasetControl/Header/styles.js +29 -0
  24. package/dist/components/DatasetControl/Header/styles.js.map +1 -0
  25. package/dist/components/DatasetControl/Pagination/Pagination.d.ts +5 -0
  26. package/dist/components/DatasetControl/Pagination/Pagination.js +91 -0
  27. package/dist/components/DatasetControl/Pagination/Pagination.js.map +1 -0
  28. package/dist/components/DatasetControl/Pagination/PaginationModel.d.ts +10 -0
  29. package/dist/components/DatasetControl/Pagination/PaginationModel.js +42 -0
  30. package/dist/components/DatasetControl/Pagination/PaginationModel.js.map +1 -0
  31. package/dist/components/DatasetControl/Pagination/styles.d.ts +17 -0
  32. package/dist/components/DatasetControl/Pagination/styles.js +23 -0
  33. package/dist/components/DatasetControl/Pagination/styles.js.map +1 -0
  34. package/dist/components/DatasetControl/QuickFind/QuickFind.d.ts +4 -12
  35. package/dist/components/DatasetControl/QuickFind/QuickFind.js +36 -32
  36. package/dist/components/DatasetControl/QuickFind/QuickFind.js.map +1 -1
  37. package/dist/components/DatasetControl/QuickFind/styles.d.ts +1 -1
  38. package/dist/components/DatasetControl/QuickFind/styles.js +2 -2
  39. package/dist/components/DatasetControl/QuickFind/styles.js.map +1 -1
  40. package/dist/components/DatasetControl/index.d.ts +0 -1
  41. package/dist/components/DatasetControl/index.js +0 -2
  42. package/dist/components/DatasetControl/index.js.map +1 -1
  43. package/dist/components/DatasetControl/interfaces.d.ts +54 -20
  44. package/dist/components/DatasetControl/styles.d.ts +4 -11
  45. package/dist/components/DatasetControl/styles.js +5 -11
  46. package/dist/components/DatasetControl/styles.js.map +1 -1
  47. package/dist/components/DatasetControl/translations.d.ts +44 -0
  48. package/dist/components/DatasetControl/translations.js +15 -1
  49. package/dist/components/DatasetControl/translations.js.map +1 -1
  50. package/dist/components/DatasetControl/useModel.d.ts +4 -0
  51. package/dist/components/DatasetControl/useModel.js +9 -0
  52. package/dist/components/DatasetControl/useModel.js.map +1 -0
  53. package/dist/components/DateTime/translations.d.ts +1 -0
  54. package/dist/components/Duration/durationOptions.d.ts +1 -0
  55. package/dist/components/Grid/{core/components/Cell → cells/cell}/Cell.d.ts +3 -3
  56. package/dist/components/Grid/cells/cell/Cell.js +302 -0
  57. package/dist/components/Grid/cells/cell/Cell.js.map +1 -0
  58. package/dist/components/Grid/{core/components/Cell/CellContent → cells/cell/content}/CellContent.d.ts +2 -2
  59. package/dist/components/Grid/{core/components/Cell/CellContent → cells/cell/content}/CellContent.js +41 -32
  60. package/dist/components/Grid/cells/cell/content/CellContent.js.map +1 -0
  61. package/dist/components/Grid/cells/cell/content/styles.js.map +1 -0
  62. package/dist/components/Grid/{core/components/Cell/Notifications → cells/cell/notifications}/Notifications.d.ts +1 -1
  63. package/dist/components/Grid/{core/components/Cell/Notifications → cells/cell/notifications}/Notifications.js +5 -5
  64. package/dist/components/Grid/cells/cell/notifications/Notifications.js.map +1 -0
  65. package/dist/components/Grid/{core/components/Cell/Notifications → cells/cell/notifications}/styles.js +1 -1
  66. package/dist/components/Grid/cells/cell/notifications/styles.js.map +1 -0
  67. package/dist/components/Grid/{core/components/Cell → cells/cell}/styles.d.ts +34 -3
  68. package/dist/components/Grid/cells/cell/styles.js +78 -0
  69. package/dist/components/Grid/cells/cell/styles.js.map +1 -0
  70. package/dist/components/Grid/{core/components/ColumnHeader → column-headers/column-header}/ColumnHeader.d.ts +1 -1
  71. package/dist/components/Grid/column-headers/column-header/ColumnHeader.js +82 -0
  72. package/dist/components/Grid/column-headers/column-header/ColumnHeader.js.map +1 -0
  73. package/dist/components/Grid/{sorting/components/SortingContextualMenu/SortingContextualMenu.d.ts → column-headers/column-header/ColumnHeaderContextualMenu.d.ts} +3 -3
  74. package/dist/components/Grid/column-headers/column-header/ColumnHeaderContextualMenu.js +115 -0
  75. package/dist/components/Grid/column-headers/column-header/ColumnHeaderContextualMenu.js.map +1 -0
  76. package/dist/components/Grid/{filtering/components/FilterCallout → column-headers/column-header}/FilterCallout.d.ts +1 -1
  77. package/dist/components/Grid/column-headers/column-header/FilterCallout.js +103 -0
  78. package/dist/components/Grid/column-headers/column-header/FilterCallout.js.map +1 -0
  79. package/dist/components/Grid/column-headers/column-header/styles.d.ts +84 -0
  80. package/dist/components/Grid/{filtering/components/FilterCallout → column-headers/column-header}/styles.js +20 -11
  81. package/dist/components/Grid/column-headers/column-header/styles.js.map +1 -0
  82. package/dist/components/Grid/column-headers/record-selection-checkbox/RecordSelectionCheckbox.d.ts +2 -0
  83. package/dist/components/Grid/column-headers/record-selection-checkbox/RecordSelectionCheckbox.js +50 -0
  84. package/dist/components/Grid/column-headers/record-selection-checkbox/RecordSelectionCheckbox.js.map +1 -0
  85. package/dist/components/Grid/column-headers/record-selection-checkbox/styles.js.map +1 -0
  86. package/dist/components/Grid/errors/FullWidthCellRendererError/FullWidthCellRendererError.d.ts +6 -0
  87. package/dist/components/Grid/errors/FullWidthCellRendererError/FullWidthCellRendererError.js +15 -0
  88. package/dist/components/Grid/errors/FullWidthCellRendererError/FullWidthCellRendererError.js.map +1 -0
  89. package/dist/components/Grid/errors/FullWidthCellRendererError/styles.d.ts +6 -0
  90. package/dist/components/Grid/errors/FullWidthCellRendererError/styles.js +13 -0
  91. package/dist/components/Grid/errors/FullWidthCellRendererError/styles.js.map +1 -0
  92. package/dist/components/Grid/{core/components/AgGrid/AgGrid.d.ts → grid/Grid.d.ts} +2 -2
  93. package/dist/components/Grid/grid/Grid.js +64 -0
  94. package/dist/components/Grid/grid/Grid.js.map +1 -0
  95. package/dist/components/Grid/grid/GridContext.d.ts +3 -0
  96. package/dist/components/Grid/grid/GridContext.js.map +1 -0
  97. package/dist/components/Grid/grid/GridModel.d.ts +118 -0
  98. package/dist/components/Grid/grid/GridModel.js +787 -0
  99. package/dist/components/Grid/grid/GridModel.js.map +1 -0
  100. package/dist/components/Grid/{core/components/AgGrid/model/Comparator.d.ts → grid/ValueComparator.d.ts} +1 -1
  101. package/dist/components/Grid/{core/components/AgGrid/model/Comparator.js → grid/ValueComparator.js} +7 -1
  102. package/dist/components/Grid/grid/ValueComparator.js.map +1 -0
  103. package/dist/components/Grid/{core/components/AgGrid/context.d.ts → grid/ag-grid/AgGridContext.d.ts} +2 -2
  104. package/dist/components/Grid/{core/components/AgGrid/context.js → grid/ag-grid/AgGridContext.js} +1 -1
  105. package/dist/components/Grid/grid/ag-grid/AgGridContext.js.map +1 -0
  106. package/dist/components/Grid/grid/ag-grid/AgGridModel.d.ts +87 -0
  107. package/dist/components/Grid/grid/ag-grid/AgGridModel.js +554 -0
  108. package/dist/components/Grid/grid/ag-grid/AgGridModel.js.map +1 -0
  109. package/dist/components/Grid/grid/ag-grid/ServerSideDatasource.d.ts +7 -0
  110. package/dist/components/Grid/grid/ag-grid/ServerSideDatasource.js +38 -0
  111. package/dist/components/Grid/grid/ag-grid/ServerSideDatasource.js.map +1 -0
  112. package/dist/components/Grid/grid/ag-grid/useAgGridInstance.d.ts +2 -0
  113. package/dist/components/Grid/grid/ag-grid/useAgGridInstance.js +9 -0
  114. package/dist/components/Grid/grid/ag-grid/useAgGridInstance.js.map +1 -0
  115. package/dist/components/Grid/{core/components/AgGrid → grid}/styles.d.ts +24 -4
  116. package/dist/components/Grid/{core/components/AgGrid → grid}/styles.js +37 -6
  117. package/dist/components/Grid/grid/styles.js.map +1 -0
  118. package/dist/components/Grid/grid/useGridInstance.d.ts +2 -0
  119. package/dist/components/Grid/{core/hooks → grid}/useGridInstance.js +2 -2
  120. package/dist/components/Grid/grid/useGridInstance.js.map +1 -0
  121. package/dist/components/Grid/index.d.ts +1 -1
  122. package/dist/components/Grid/index.js +1 -1
  123. package/dist/components/Grid/interfaces.d.ts +10 -0
  124. package/dist/components/Grid/loading/full-row/FullRowLoading.d.ts +3 -0
  125. package/dist/components/Grid/loading/full-row/FullRowLoading.js +33 -0
  126. package/dist/components/Grid/loading/full-row/FullRowLoading.js.map +1 -0
  127. package/dist/components/Grid/loading/full-row/styles.d.ts +9 -0
  128. package/dist/components/Grid/loading/full-row/styles.js +16 -0
  129. package/dist/components/Grid/loading/full-row/styles.js.map +1 -0
  130. package/dist/components/Grid/overlays/empty-records/EmptyRecordsOverlay.js +13 -0
  131. package/dist/components/Grid/overlays/empty-records/EmptyRecordsOverlay.js.map +1 -0
  132. package/dist/components/Grid/{core/components/AgGrid/components/EmptyRecordsOverlay → overlays/empty-records}/styles.d.ts +1 -1
  133. package/dist/components/Grid/{core/components/AgGrid/components/EmptyRecordsOverlay → overlays/empty-records}/styles.js +1 -1
  134. package/dist/components/Grid/overlays/empty-records/styles.js.map +1 -0
  135. package/dist/components/Grid/overlays/loading/LoadingOverlay.js.map +1 -0
  136. package/dist/components/Grid/translations.d.ts +20 -180
  137. package/dist/components/Grid/translations.js +5 -48
  138. package/dist/components/Grid/translations.js.map +1 -1
  139. package/dist/components/GridCellRenderer/GridCellRenderer.js +99 -282
  140. package/dist/components/GridCellRenderer/GridCellRenderer.js.map +1 -1
  141. package/dist/components/GridCellRenderer/GridCellRendererModel.d.ts +52 -0
  142. package/dist/components/GridCellRenderer/GridCellRendererModel.js +211 -0
  143. package/dist/components/GridCellRenderer/GridCellRendererModel.js.map +1 -0
  144. package/dist/components/GridCellRenderer/ValueRenderer/ColorfulOptionSetValueRenderer/ColorfulOptionSetValueRenderer.d.ts +10 -0
  145. package/dist/components/GridCellRenderer/ValueRenderer/ColorfulOptionSetValueRenderer/ColorfulOptionSetValueRenderer.js +53 -0
  146. package/dist/components/GridCellRenderer/ValueRenderer/ColorfulOptionSetValueRenderer/ColorfulOptionSetValueRenderer.js.map +1 -0
  147. package/dist/components/GridCellRenderer/ValueRenderer/ColorfulOptionSetValueRenderer/styles.d.ts +20 -0
  148. package/dist/components/GridCellRenderer/ValueRenderer/ColorfulOptionSetValueRenderer/styles.js +29 -0
  149. package/dist/components/GridCellRenderer/ValueRenderer/ColorfulOptionSetValueRenderer/styles.js.map +1 -0
  150. package/dist/components/GridCellRenderer/ValueRenderer/FileRenderer/FileRenderer.d.ts +7 -0
  151. package/dist/components/GridCellRenderer/ValueRenderer/FileRenderer/FileRenderer.js +76 -0
  152. package/dist/components/GridCellRenderer/ValueRenderer/FileRenderer/FileRenderer.js.map +1 -0
  153. package/dist/components/GridCellRenderer/ValueRenderer/FileRenderer/styles.d.ts +18 -0
  154. package/dist/components/GridCellRenderer/ValueRenderer/FileRenderer/styles.js +25 -0
  155. package/dist/components/GridCellRenderer/ValueRenderer/FileRenderer/styles.js.map +1 -0
  156. package/dist/components/GridCellRenderer/ValueRenderer/ValueRenderer.d.ts +3 -0
  157. package/dist/components/GridCellRenderer/ValueRenderer/ValueRenderer.js +52 -0
  158. package/dist/components/GridCellRenderer/ValueRenderer/ValueRenderer.js.map +1 -0
  159. package/dist/components/GridCellRenderer/ValueRenderer/styles.d.ts +1666 -0
  160. package/dist/components/GridCellRenderer/ValueRenderer/styles.js +31 -0
  161. package/dist/components/GridCellRenderer/ValueRenderer/styles.js.map +1 -0
  162. package/dist/components/GridCellRenderer/interfaces.d.ts +54 -42
  163. package/dist/components/GridCellRenderer/properties/Email.d.ts +5 -0
  164. package/dist/components/GridCellRenderer/properties/Email.js +15 -0
  165. package/dist/components/GridCellRenderer/properties/Email.js.map +1 -0
  166. package/dist/components/GridCellRenderer/properties/File.d.ts +20 -0
  167. package/dist/components/GridCellRenderer/properties/File.js +99 -0
  168. package/dist/components/GridCellRenderer/properties/File.js.map +1 -0
  169. package/dist/components/GridCellRenderer/properties/Image.d.ts +4 -0
  170. package/dist/components/GridCellRenderer/properties/Image.js +15 -0
  171. package/dist/components/GridCellRenderer/properties/Image.js.map +1 -0
  172. package/dist/components/GridCellRenderer/properties/Lookup.d.ts +6 -0
  173. package/dist/components/GridCellRenderer/properties/Lookup.js +19 -0
  174. package/dist/components/GridCellRenderer/properties/Lookup.js.map +1 -0
  175. package/dist/components/GridCellRenderer/properties/MultiSelectOptionSet.d.ts +6 -0
  176. package/dist/components/GridCellRenderer/properties/MultiSelectOptionSet.js +11 -0
  177. package/dist/components/GridCellRenderer/properties/MultiSelectOptionSet.js.map +1 -0
  178. package/dist/components/GridCellRenderer/properties/MultilineText.d.ts +4 -0
  179. package/dist/components/GridCellRenderer/properties/MultilineText.js +10 -0
  180. package/dist/components/GridCellRenderer/properties/MultilineText.js.map +1 -0
  181. package/dist/components/GridCellRenderer/properties/OptionSet.d.ts +6 -0
  182. package/dist/components/GridCellRenderer/properties/OptionSet.js +11 -0
  183. package/dist/components/GridCellRenderer/properties/OptionSet.js.map +1 -0
  184. package/dist/components/GridCellRenderer/properties/OptionSetBase.d.ts +8 -0
  185. package/dist/components/GridCellRenderer/properties/OptionSetBase.js +19 -0
  186. package/dist/components/GridCellRenderer/properties/OptionSetBase.js.map +1 -0
  187. package/dist/components/GridCellRenderer/properties/Phone.d.ts +9 -0
  188. package/dist/components/GridCellRenderer/properties/Phone.js +15 -0
  189. package/dist/components/GridCellRenderer/properties/Phone.js.map +1 -0
  190. package/dist/components/GridCellRenderer/properties/Property.d.ts +20 -0
  191. package/dist/components/GridCellRenderer/properties/Property.js +54 -0
  192. package/dist/components/GridCellRenderer/properties/Property.js.map +1 -0
  193. package/dist/components/GridCellRenderer/properties/TwoOptions.d.ts +6 -0
  194. package/dist/components/GridCellRenderer/properties/TwoOptions.js +11 -0
  195. package/dist/components/GridCellRenderer/properties/TwoOptions.js.map +1 -0
  196. package/dist/components/GridCellRenderer/properties/Url.d.ts +5 -0
  197. package/dist/components/GridCellRenderer/properties/Url.js +15 -0
  198. package/dist/components/GridCellRenderer/properties/Url.js.map +1 -0
  199. package/dist/components/GridCellRenderer/styles.d.ts +32 -60
  200. package/dist/components/GridCellRenderer/styles.js +67 -77
  201. package/dist/components/GridCellRenderer/styles.js.map +1 -1
  202. package/dist/components/GridCellRenderer/translations.d.ts +1 -1
  203. package/dist/components/GridCellRenderer/translations.js +30 -32
  204. package/dist/components/GridCellRenderer/translations.js.map +1 -1
  205. package/dist/components/GridCellRenderer/useModel.d.ts +4 -0
  206. package/dist/components/GridCellRenderer/useModel.js +9 -0
  207. package/dist/components/GridCellRenderer/useModel.js.map +1 -0
  208. package/dist/components/GridColumnHeader/GridColumnHeader.d.ts +3 -0
  209. package/dist/components/GridColumnHeader/GridColumnHeader.js +133 -0
  210. package/dist/components/GridColumnHeader/GridColumnHeader.js.map +1 -0
  211. package/dist/components/GridColumnHeader/GridColumnHeaderModel.d.ts +26 -0
  212. package/dist/components/GridColumnHeader/GridColumnHeaderModel.js +87 -0
  213. package/dist/components/GridColumnHeader/GridColumnHeaderModel.js.map +1 -0
  214. package/dist/components/GridColumnHeader/interfaces.d.ts +45 -0
  215. package/dist/components/GridColumnHeader/styles.d.ts +34 -0
  216. package/dist/components/GridColumnHeader/styles.js +52 -0
  217. package/dist/components/GridColumnHeader/styles.js.map +1 -0
  218. package/dist/components/GridColumnHeader/translations.d.ts +26 -0
  219. package/dist/components/GridColumnHeader/translations.js +29 -0
  220. package/dist/components/GridColumnHeader/translations.js.map +1 -0
  221. package/dist/components/Lookup/Lookup.js +39 -14
  222. package/dist/components/Lookup/Lookup.js.map +1 -1
  223. package/dist/components/Lookup/hooks/useFetchXml.d.ts +1 -0
  224. package/dist/components/Lookup/hooks/useLookup.d.ts +1 -0
  225. package/dist/components/Lookup/hooks/useLookup.js +68 -2
  226. package/dist/components/Lookup/hooks/useLookup.js.map +1 -1
  227. package/dist/components/Lookup/interfaces.d.ts +1 -0
  228. package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.js +2 -2
  229. package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.js.map +1 -1
  230. package/dist/components/NestedControlRenderer/NestedControl.d.ts +3 -0
  231. package/dist/components/NestedControlRenderer/NestedControl.js +5 -2
  232. package/dist/components/NestedControlRenderer/NestedControl.js.map +1 -1
  233. package/dist/components/NestedControlRenderer/NestedControlRenderer.js +11 -6
  234. package/dist/components/NestedControlRenderer/NestedControlRenderer.js.map +1 -1
  235. package/dist/components/NestedControlRenderer/interfaces.d.ts +4 -0
  236. package/dist/components/NestedControlRenderer/properties/FileProperty.js +1 -1
  237. package/dist/components/NestedControlRenderer/properties/FileProperty.js.map +1 -1
  238. package/dist/components/NestedControlRenderer/properties/Property.d.ts +1 -0
  239. package/dist/components/OptionSet/OptionSet.js +5 -4
  240. package/dist/components/OptionSet/OptionSet.js.map +1 -1
  241. package/dist/components/OptionSet/shared.d.ts +1 -0
  242. package/dist/components/Ribbon/Ribbon.d.ts +3 -0
  243. package/dist/components/Ribbon/Ribbon.js +97 -0
  244. package/dist/components/Ribbon/Ribbon.js.map +1 -0
  245. package/dist/components/Ribbon/RibbonModel.d.ts +4 -0
  246. package/dist/components/Ribbon/interfaces.d.ts +19 -0
  247. package/dist/components/Ribbon/styles.d.ts +11 -0
  248. package/dist/components/Ribbon/styles.js +18 -0
  249. package/dist/components/Ribbon/styles.js.map +1 -0
  250. package/dist/components/TextField/TextField.js +1 -1
  251. package/dist/components/TextField/TextField.js.map +1 -1
  252. package/dist/components/index.js +1 -3
  253. package/dist/components/index.js.map +1 -1
  254. package/dist/hooks/useControl.d.ts +1 -0
  255. package/dist/hooks/useControl.js +1 -0
  256. package/dist/hooks/useControl.js.map +1 -1
  257. package/dist/hooks/useControlSizing.d.ts +1 -0
  258. package/dist/hooks/useEventEmitter.d.ts +2 -0
  259. package/dist/hooks/useEventEmitter.js +18 -0
  260. package/dist/hooks/useEventEmitter.js.map +1 -0
  261. package/dist/hooks/useInputBasedControl.js +2 -1
  262. package/dist/hooks/useInputBasedControl.js.map +1 -1
  263. package/dist/index.d.ts +153 -288
  264. package/dist/index.js +1 -3
  265. package/dist/index.js.map +1 -1
  266. package/dist/interfaces/context.d.ts +1 -0
  267. package/dist/interfaces/property.d.ts +2 -1
  268. package/dist/utils/BaseControls.d.ts +2 -1
  269. package/dist/utils/BaseControls.js +5 -1
  270. package/dist/utils/BaseControls.js.map +1 -1
  271. package/dist/utils/dataset/adapters/DatasetAdapter.d.ts +1 -0
  272. package/dist/utils/dataset/adapters/VirtualDatasetAdapter.d.ts +1 -5
  273. package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js +4 -49
  274. package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js.map +1 -1
  275. package/dist/utils/theme/ControlTheme.d.ts +1 -0
  276. package/dist/utils/theme/components/ThemeWrapper.d.ts +1 -0
  277. package/dist/utils/theme/hooks/useControlTheme.js +2 -1
  278. package/dist/utils/theme/hooks/useControlTheme.js.map +1 -1
  279. package/package.json +9 -5
  280. package/dist/components/DatasetControl/Paging/DatasetPaging.d.ts +0 -3
  281. package/dist/components/DatasetControl/Paging/DatasetPaging.js +0 -69
  282. package/dist/components/DatasetControl/Paging/DatasetPaging.js.map +0 -1
  283. package/dist/components/DatasetControl/Paging/Paging.d.ts +0 -26
  284. package/dist/components/DatasetControl/Paging/Paging.js +0 -80
  285. package/dist/components/DatasetControl/Paging/Paging.js.map +0 -1
  286. package/dist/components/DatasetControl/Paging/index.d.ts +0 -3
  287. package/dist/components/DatasetControl/Paging/index.js +0 -3
  288. package/dist/components/DatasetControl/Paging/index.js.map +0 -1
  289. package/dist/components/DatasetControl/Paging/interfaces.d.ts +0 -16
  290. package/dist/components/DatasetControl/Paging/styles.d.ts +0 -35
  291. package/dist/components/DatasetControl/Paging/styles.js +0 -41
  292. package/dist/components/DatasetControl/Paging/styles.js.map +0 -1
  293. package/dist/components/DatasetControl/Paging/translations.d.ts +0 -38
  294. package/dist/components/DatasetControl/Paging/translations.js +0 -14
  295. package/dist/components/DatasetControl/Paging/translations.js.map +0 -1
  296. package/dist/components/Grid/Grid.d.ts +0 -3
  297. package/dist/components/Grid/Grid.js +0 -37
  298. package/dist/components/Grid/Grid.js.map +0 -1
  299. package/dist/components/Grid/GridContext.d.ts +0 -3
  300. package/dist/components/Grid/GridContext.js.map +0 -1
  301. package/dist/components/Grid/aggregation/Aggregation.d.ts +0 -18
  302. package/dist/components/Grid/aggregation/Aggregation.js +0 -129
  303. package/dist/components/Grid/aggregation/Aggregation.js.map +0 -1
  304. package/dist/components/Grid/core/components/AgGrid/AgGrid.js +0 -203
  305. package/dist/components/Grid/core/components/AgGrid/AgGrid.js.map +0 -1
  306. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/EmptyRecords.js +0 -12
  307. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/EmptyRecords.js.map +0 -1
  308. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/styles.js.map +0 -1
  309. package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/LoadingOverlay.js.map +0 -1
  310. package/dist/components/Grid/core/components/AgGrid/context.js.map +0 -1
  311. package/dist/components/Grid/core/components/AgGrid/model/AgGrid.d.ts +0 -52
  312. package/dist/components/Grid/core/components/AgGrid/model/AgGrid.js +0 -343
  313. package/dist/components/Grid/core/components/AgGrid/model/AgGrid.js.map +0 -1
  314. package/dist/components/Grid/core/components/AgGrid/model/Comparator.js.map +0 -1
  315. package/dist/components/Grid/core/components/AgGrid/styles.js.map +0 -1
  316. package/dist/components/Grid/core/components/Cell/Cell.js +0 -158
  317. package/dist/components/Grid/core/components/Cell/Cell.js.map +0 -1
  318. package/dist/components/Grid/core/components/Cell/CellContent/CellContent.js.map +0 -1
  319. package/dist/components/Grid/core/components/Cell/CellContent/styles.js.map +0 -1
  320. package/dist/components/Grid/core/components/Cell/Notifications/Notifications.js.map +0 -1
  321. package/dist/components/Grid/core/components/Cell/Notifications/styles.js.map +0 -1
  322. package/dist/components/Grid/core/components/Cell/styles.js +0 -59
  323. package/dist/components/Grid/core/components/Cell/styles.js.map +0 -1
  324. package/dist/components/Grid/core/components/ColumnHeader/ColumnHeader.js +0 -61
  325. package/dist/components/Grid/core/components/ColumnHeader/ColumnHeader.js.map +0 -1
  326. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/GlobalCheckbox.d.ts +0 -2
  327. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/GlobalCheckbox.js +0 -50
  328. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/GlobalCheckbox.js.map +0 -1
  329. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/styles.js.map +0 -1
  330. package/dist/components/Grid/core/components/ColumnHeader/styles.d.ts +0 -42
  331. package/dist/components/Grid/core/components/ColumnHeader/styles.js +0 -48
  332. package/dist/components/Grid/core/components/ColumnHeader/styles.js.map +0 -1
  333. package/dist/components/Grid/core/components/Dialog/Constants.d.ts +0 -2
  334. package/dist/components/Grid/core/components/Dialog/Constants.js +0 -9
  335. package/dist/components/Grid/core/components/Dialog/Constants.js.map +0 -1
  336. package/dist/components/Grid/core/components/Dialog/Styles.d.ts +0 -2
  337. package/dist/components/Grid/core/components/Dialog/Styles.js +0 -61
  338. package/dist/components/Grid/core/components/Dialog/Styles.js.map +0 -1
  339. package/dist/components/Grid/core/components/Dialog/index.d.ts +0 -4
  340. package/dist/components/Grid/core/components/Dialog/index.js +0 -16
  341. package/dist/components/Grid/core/components/Dialog/index.js.map +0 -1
  342. package/dist/components/Grid/core/components/Dialog/interfaces/index.d.ts +0 -6
  343. package/dist/components/Grid/core/components/Dialog/interfaces/index.js +0 -2
  344. package/dist/components/Grid/core/components/Dialog/interfaces/index.js.map +0 -1
  345. package/dist/components/Grid/core/components/Save/Save.d.ts +0 -2
  346. package/dist/components/Grid/core/components/Save/Save.js +0 -59
  347. package/dist/components/Grid/core/components/Save/Save.js.map +0 -1
  348. package/dist/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.d.ts +0 -7
  349. package/dist/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.js +0 -73
  350. package/dist/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.js.map +0 -1
  351. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.d.ts +0 -11
  352. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.js +0 -231
  353. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.js.map +0 -1
  354. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/styles.d.ts +0 -39
  355. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/styles.js +0 -45
  356. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/styles.js.map +0 -1
  357. package/dist/components/Grid/core/components/Save/components/ChangeEditor/styles.d.ts +0 -31
  358. package/dist/components/Grid/core/components/Save/components/ChangeEditor/styles.js +0 -37
  359. package/dist/components/Grid/core/components/Save/components/ChangeEditor/styles.js.map +0 -1
  360. package/dist/components/Grid/core/components/Save/styles.d.ts +0 -35
  361. package/dist/components/Grid/core/components/Save/styles.js +0 -42
  362. package/dist/components/Grid/core/components/Save/styles.js.map +0 -1
  363. package/dist/components/Grid/core/controllers/useGridController.d.ts +0 -7
  364. package/dist/components/Grid/core/controllers/useGridController.js +0 -29
  365. package/dist/components/Grid/core/controllers/useGridController.js.map +0 -1
  366. package/dist/components/Grid/core/enums/ConditionOperator.d.ts +0 -48
  367. package/dist/components/Grid/core/enums/ConditionOperator.js +0 -52
  368. package/dist/components/Grid/core/enums/ConditionOperator.js.map +0 -1
  369. package/dist/components/Grid/core/enums/DataType.d.ts +0 -25
  370. package/dist/components/Grid/core/enums/DataType.js +0 -30
  371. package/dist/components/Grid/core/enums/DataType.js.map +0 -1
  372. package/dist/components/Grid/core/hooks/useGridInstance.d.ts +0 -2
  373. package/dist/components/Grid/core/hooks/useGridInstance.js.map +0 -1
  374. package/dist/components/Grid/core/hooks/useRefreshCallback.d.ts +0 -2
  375. package/dist/components/Grid/core/hooks/useRefreshCallback.js +0 -20
  376. package/dist/components/Grid/core/hooks/useRefreshCallback.js.map +0 -1
  377. package/dist/components/Grid/core/interfaces/IGridColumn.d.ts +0 -13
  378. package/dist/components/Grid/core/interfaces/IGridContext.d.ts +0 -4
  379. package/dist/components/Grid/core/model/Grid.d.ts +0 -81
  380. package/dist/components/Grid/core/model/Grid.js +0 -513
  381. package/dist/components/Grid/core/model/Grid.js.map +0 -1
  382. package/dist/components/Grid/core/model/GridDependency.d.ts +0 -13
  383. package/dist/components/Grid/core/model/GridDependency.js +0 -28
  384. package/dist/components/Grid/core/model/GridDependency.js.map +0 -1
  385. package/dist/components/Grid/core/services/KeyListener.d.ts +0 -12
  386. package/dist/components/Grid/core/services/KeyListener.js +0 -31
  387. package/dist/components/Grid/core/services/KeyListener.js.map +0 -1
  388. package/dist/components/Grid/filtering/components/FilterCallout/FilterCallout.js +0 -59
  389. package/dist/components/Grid/filtering/components/FilterCallout/FilterCallout.js.map +0 -1
  390. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionOperator/ConditionOperator.d.ts +0 -7
  391. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionOperator/ConditionOperator.js +0 -56
  392. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionOperator/ConditionOperator.js.map +0 -1
  393. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValue.d.ts +0 -7
  394. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValue.js +0 -73
  395. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValue.js.map +0 -1
  396. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValueBetween.d.ts +0 -7
  397. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValueBetween.js +0 -90
  398. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValueBetween.js.map +0 -1
  399. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.d.ts +0 -48
  400. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.js +0 -146
  401. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.js.map +0 -1
  402. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/Component.d.ts +0 -11
  403. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/Component.js +0 -53
  404. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/Component.js.map +0 -1
  405. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/controller/useComponentController.d.ts +0 -9
  406. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/controller/useComponentController.js +0 -31
  407. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/controller/useComponentController.js.map +0 -1
  408. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/model/Component.d.ts +0 -10
  409. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/model/Component.js +0 -294
  410. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/model/Component.js.map +0 -1
  411. package/dist/components/Grid/filtering/components/FilterCallout/styles.d.ts +0 -35
  412. package/dist/components/Grid/filtering/components/FilterCallout/styles.js.map +0 -1
  413. package/dist/components/Grid/filtering/constants.d.ts +0 -5
  414. package/dist/components/Grid/filtering/constants.js +0 -53
  415. package/dist/components/Grid/filtering/constants.js.map +0 -1
  416. package/dist/components/Grid/filtering/controller/useColumnFilterConditionController.d.ts +0 -21
  417. package/dist/components/Grid/filtering/controller/useColumnFilterConditionController.js +0 -44
  418. package/dist/components/Grid/filtering/controller/useColumnFilterConditionController.js.map +0 -1
  419. package/dist/components/Grid/filtering/model/Condition.d.ts +0 -49
  420. package/dist/components/Grid/filtering/model/Condition.js +0 -347
  421. package/dist/components/Grid/filtering/model/Condition.js.map +0 -1
  422. package/dist/components/Grid/filtering/model/Filtering.d.ts +0 -11
  423. package/dist/components/Grid/filtering/model/Filtering.js +0 -78
  424. package/dist/components/Grid/filtering/model/Filtering.js.map +0 -1
  425. package/dist/components/Grid/filtering/utils/FilteringUtilts.d.ts +0 -34
  426. package/dist/components/Grid/filtering/utils/FilteringUtilts.js +0 -195
  427. package/dist/components/Grid/filtering/utils/FilteringUtilts.js.map +0 -1
  428. package/dist/components/Grid/selection/model/Selection.d.ts +0 -12
  429. package/dist/components/Grid/selection/model/Selection.js +0 -54
  430. package/dist/components/Grid/selection/model/Selection.js.map +0 -1
  431. package/dist/components/Grid/sorting/Sorting.d.ts +0 -10
  432. package/dist/components/Grid/sorting/Sorting.js +0 -31
  433. package/dist/components/Grid/sorting/Sorting.js.map +0 -1
  434. package/dist/components/Grid/sorting/components/SortingContextualMenu/SortingContextualMenu.js +0 -157
  435. package/dist/components/Grid/sorting/components/SortingContextualMenu/SortingContextualMenu.js.map +0 -1
  436. package/dist/components/Grid/sorting/components/SortingContextualMenu/styles.d.ts +0 -9
  437. package/dist/components/Grid/sorting/components/SortingContextualMenu/styles.js +0 -15
  438. package/dist/components/Grid/sorting/components/SortingContextualMenu/styles.js.map +0 -1
  439. package/dist/components/Grid/sorting/controllers/useColumnSortingController.d.ts +0 -9
  440. package/dist/components/Grid/sorting/controllers/useColumnSortingController.js +0 -22
  441. package/dist/components/Grid/sorting/controllers/useColumnSortingController.js.map +0 -1
  442. package/dist/components/GridCellRenderer/DefaultContentRenderer/DefaultContentRenderer.d.ts +0 -2
  443. package/dist/components/GridCellRenderer/DefaultContentRenderer/DefaultContentRenderer.js +0 -11
  444. package/dist/components/GridCellRenderer/DefaultContentRenderer/DefaultContentRenderer.js.map +0 -1
  445. package/dist/components/GridCellRenderer/DefaultContentRenderer/index.d.ts +0 -1
  446. package/dist/components/GridCellRenderer/DefaultContentRenderer/index.js +0 -2
  447. package/dist/components/GridCellRenderer/DefaultContentRenderer/index.js.map +0 -1
  448. package/dist/components/GridCellRenderer/OptionSet/OptionSet.d.ts +0 -5
  449. package/dist/components/GridCellRenderer/OptionSet/OptionSet.js +0 -75
  450. package/dist/components/GridCellRenderer/OptionSet/OptionSet.js.map +0 -1
  451. package/dist/components/GridCellRenderer/OptionSet/index.d.ts +0 -1
  452. package/dist/components/GridCellRenderer/OptionSet/index.js +0 -2
  453. package/dist/components/GridCellRenderer/OptionSet/index.js.map +0 -1
  454. package/dist/components/GridCellRenderer/OptionSet/styles.d.ts +0 -20
  455. package/dist/components/GridCellRenderer/OptionSet/styles.js +0 -29
  456. package/dist/components/GridCellRenderer/OptionSet/styles.js.map +0 -1
  457. package/dist/components/GridCellRenderer/RecordCommands/Icon.d.ts +0 -7
  458. package/dist/components/GridCellRenderer/RecordCommands/Icon.js +0 -32
  459. package/dist/components/GridCellRenderer/RecordCommands/Icon.js.map +0 -1
  460. package/dist/components/GridCellRenderer/RecordCommands/RecordCommands.d.ts +0 -13
  461. package/dist/components/GridCellRenderer/RecordCommands/RecordCommands.js +0 -103
  462. package/dist/components/GridCellRenderer/RecordCommands/RecordCommands.js.map +0 -1
  463. package/dist/components/GridCellRenderer/RecordCommands/styles.d.ts +0 -13
  464. package/dist/components/GridCellRenderer/RecordCommands/styles.js +0 -32
  465. package/dist/components/GridCellRenderer/RecordCommands/styles.js.map +0 -1
  466. package/dist/components/GridCellRenderer/useComponentProps.d.ts +0 -6
  467. package/dist/components/GridCellRenderer/useComponentProps.js +0 -10
  468. package/dist/components/GridCellRenderer/useComponentProps.js.map +0 -1
  469. /package/dist/components/Grid/{core/components/Cell/CellContent → cells/cell/content}/styles.d.ts +0 -0
  470. /package/dist/components/Grid/{core/components/Cell/CellContent → cells/cell/content}/styles.js +0 -0
  471. /package/dist/components/Grid/{core/components/Cell/Notifications → cells/cell/notifications}/styles.d.ts +0 -0
  472. /package/dist/components/Grid/{core/components/ColumnHeader/components/GlobalCheckbox → column-headers/record-selection-checkbox}/styles.d.ts +0 -0
  473. /package/dist/components/Grid/{core/components/ColumnHeader/components/GlobalCheckbox → column-headers/record-selection-checkbox}/styles.js +0 -0
  474. /package/dist/components/Grid/{GridContext.js → grid/GridContext.js} +0 -0
  475. /package/dist/components/Grid/{core/components/AgGrid/components/EmptyRecordsOverlay/EmptyRecords.d.ts → overlays/empty-records/EmptyRecordsOverlay.d.ts} +0 -0
  476. /package/dist/components/Grid/{core/components/AgGrid/components/LoadingOverlay → overlays/loading}/LoadingOverlay.d.ts +0 -0
  477. /package/dist/components/Grid/{core/components/AgGrid/components/LoadingOverlay → overlays/loading}/LoadingOverlay.js +0 -0
@@ -1,6 +1,7 @@
1
1
  import { useState } from 'react';
2
2
  import { lookupTranslations } from '../translations.js';
3
3
  import { useFetchXml } from './useFetchXml.js';
4
+ import dayjs from 'dayjs';
4
5
  import { useControl } from '../../../hooks/useControl.js';
5
6
 
6
7
  const useLookup = (props) => {
@@ -61,19 +62,44 @@ const useLookup = (props) => {
61
62
  }
62
63
  await Promise.all(fetchXmlMap.values());
63
64
  const responsePromiseMap = new Map();
65
+ const aliasEntityMap = [];
66
+ const domParser = new DOMParser();
64
67
  for (const [entityName, fetchXml] of fetchXmlMap) {
65
- responsePromiseMap.set(entityName, context.webAPI.retrieveMultipleRecords(entityName, `?$top=25&fetchXml=${encodeURIComponent((await fetchXml))}`));
68
+ const fetchXMLresult = await fetchXml;
69
+ responsePromiseMap.set(entityName, context.webAPI.retrieveMultipleRecords(entityName, `?$top=25&fetchXml=${encodeURIComponent((fetchXMLresult))}`));
70
+ //parsing of link entities from fetchXML
71
+ const xml = domParser.parseFromString(fetchXMLresult, "application/xml");
72
+ const linkEntities = xml.querySelectorAll(`link-entity`);
73
+ for (const linkEntity of linkEntities) {
74
+ const aliasAttribute = linkEntity.getAttribute('alias');
75
+ const entityAttribute = linkEntity.getAttribute('name');
76
+ if (entityAttribute) {
77
+ aliasEntityMap.push({ aliasAttribute: aliasAttribute ?? entityAttribute, entityAttribute: entityAttribute });
78
+ }
79
+ else {
80
+ throw Error("Link-entity without name property is not supported. Offedning query: " + fetchXMLresult);
81
+ }
82
+ }
66
83
  }
67
84
  await Promise.all(responsePromiseMap.values());
68
85
  const result = [];
69
86
  for (const [entityName, response] of responsePromiseMap) {
70
87
  const layout = JSON.parse((await getFetchXml(entityViewIdMap.get(entityName))).layoutjson ?? "{}");
88
+ //Mapping link-entities' logical names to layout's Cell
89
+ if (layout.Rows.some(x => x.Cells.some(x => x.Name.includes(".")))) {
90
+ const cellsToModify = layout.Rows.flatMap(row => row.Cells)
91
+ .filter(cell => cell.Name.includes("."));
92
+ cellsToModify.forEach(cell => {
93
+ const alias = cell.Name.split(".")[0];
94
+ cell.RelatedEntityName = aliasEntityMap.find(x => x.aliasAttribute === alias)?.entityAttribute ?? "";
95
+ });
96
+ }
71
97
  for (const entity of (await response).entities) {
72
98
  const entityMetadata = await entities.find(x => x.entityName === entityName).metadata;
73
99
  result.push({
74
100
  entityType: entityName,
75
101
  id: entity[entityMetadata.PrimaryIdAttribute],
76
- name: entity[layout.Rows?.[0]?.Cells?.[0]?.Name] ?? entity[entityMetadata.PrimaryNameAttribute] ?? labels.noName(),
102
+ name: await getPrimaryName(entity, entityName, layout.Rows?.[0]?.Cells?.[0]?.Name, layout),
77
103
  entityData: entity,
78
104
  layout: layout
79
105
  });
@@ -81,6 +107,46 @@ const useLookup = (props) => {
81
107
  }
82
108
  return result;
83
109
  };
110
+ const getPrimaryName = async (entity, entityName, attribute, layout) => {
111
+ let targetEntityName = entityName;
112
+ let targetAttribute = attribute;
113
+ //checking for attributes pointing to related entity attribute, given by convention of using dot as separator
114
+ if (attribute.includes(".")) {
115
+ targetEntityName = layout.Rows.find(x => x.Cells)?.Cells?.find(y => y.Name === attribute)?.RelatedEntityName || entityName;
116
+ targetAttribute = attribute.split(".")[1];
117
+ }
118
+ const entityMetadata = await props.context.utils.getEntityMetadata(targetEntityName, [targetAttribute]);
119
+ const attributetype = entityMetadata.Attributes.get(targetAttribute).AttributeTypeName;
120
+ let primaryName;
121
+ switch (attributetype.toLowerCase()) {
122
+ case "lookup":
123
+ case "partylist":
124
+ case "owner":
125
+ case "customer":
126
+ primaryName = entity[`_${targetAttribute}_value@OData.Community.Display.V1.FormattedValue`];
127
+ break;
128
+ case "optionset":
129
+ case "picklist":
130
+ case "state":
131
+ case "status":
132
+ case "boolean":
133
+ case "integer":
134
+ case "bigint":
135
+ case "decimal":
136
+ case "money":
137
+ //TODO: Introduce user formatting, this approach takes format from application user setting
138
+ primaryName = entity[`${targetAttribute}@OData.Community.Display.V1.FormattedValue`];
139
+ break;
140
+ case "datetime":
141
+ primaryName = props.context.formatting.formatTime(dayjs(entity[targetAttribute]).toDate(), 1);
142
+ break;
143
+ default:
144
+ primaryName = entity[targetAttribute];
145
+ }
146
+ return (primaryName ??
147
+ entity[entityMetadata.PrimaryNameAttribute] ??
148
+ labels.noName());
149
+ };
84
150
  const createRecord = async (entityName) => {
85
151
  const formParameters = props.onGetOnCreateFormParameters?.(entityName);
86
152
  const result = await context.navigation.openForm({
@@ -1 +1 @@
1
- {"version":3,"file":"useLookup.js","sources":["../../../../src/components/Lookup/hooks/useLookup.ts"],"sourcesContent":["import { useState } from \"react\";\nimport { ITranslation, useControl } from \"../../../hooks\";\nimport { IEntity, ILayout, ILookup } from \"../interfaces\";\nimport { lookupTranslations } from \"../translations\";\nimport { useFetchXml } from \"./useFetchXml\";\nimport { ITheme } from \"@talxis/react-components\";\n\nexport const useLookup = (props: ILookup): [\n ComponentFramework.LookupValue[],\n IEntity[],\n ITranslation<Required<ILookup>['translations']>,\n {\n create: (entityName: string) => void,\n select: (record: ComponentFramework.LookupValue[] | undefined) => void,\n deselect: (record: ComponentFramework.LookupValue) => void,\n },\n (entityName: string | null) => void,\n (query: string) => Promise<(ComponentFramework.LookupValue & { entityData: { [key: string]: any }, layout: ILayout })[]>,\n ITheme\n] => {\n\n const targets = props.parameters.value.attributes.Targets;\n const boundValue = props.parameters.value.raw;\n const context = props.context;\n const { labels, theme, onNotifyOutputChanged } = useControl('Lookup', props, lookupTranslations);\n const [getFetchXml, applyLookupQuery] = useFetchXml(context);\n\n const [entities, setEntities] = useState<IEntity[]>(() => {\n return targets.map(target => {\n return {\n entityName: target,\n selected: targets.length === 1 ? true : false,\n metadata: props.context.utils.getEntityMetadata(target, []) as any,\n }\n })\n });\n\n const selectedEntity = entities.find(x => x.selected);\n\n const selectEntity = (entityName: string | null) => {\n setEntities([...entities as IEntity[]].map(entity => {\n return {\n entityName: entity.entityName,\n metadata: entity.metadata,\n selected: entity.entityName === entityName\n }\n }))\n }\n\n const selectRecords = (records: ComponentFramework.LookupValue[] | undefined) => {\n onNotifyOutputChanged({\n value: records\n })\n }\n const getSearchFetchXml = async (entityName: string, query: string, viewIdCallBack: (id: string) => void): Promise<string> => {\n const response = (await props.parameters.value.getAllViews(entityName)).find(x => x.isDefault);\n if (!response?.viewId) {\n throw new Error(`Entity ${entityName} does not have a default view id!`);\n }\n viewIdCallBack(response.viewId);\n let fetchXml = response?.fetchXml\n if (!fetchXml) {\n fetchXml = (await getFetchXml(response.viewId)).fetchxml;\n }\n return applyLookupQuery(entities.find(x => x.entityName === entityName)!, fetchXml, query);\n\n }\n const getSearchResults = async (query: string): Promise<(ComponentFramework.LookupValue & { entityData: { [key: string]: any }, layout: ILayout })[]> => {\n if (props.onSearch) {\n return props.onSearch(selectedEntity ? [selectedEntity?.entityName] : targets, query) as any;\n }\n const fetchXmlMap = new Map<string, Promise<string>>();\n const entityViewIdMap = new Map<string, string>();\n if (selectedEntity) {\n fetchXmlMap.set(selectedEntity.entityName, getSearchFetchXml(selectedEntity.entityName, query, (viewId) => entityViewIdMap.set(selectedEntity.entityName, viewId)))\n }\n else {\n for (const entity of targets) {\n fetchXmlMap.set(entity, getSearchFetchXml(entity, query, (viewId) => entityViewIdMap.set(entity, viewId)))\n }\n }\n await Promise.all(fetchXmlMap.values());\n const responsePromiseMap = new Map<string, Promise<ComponentFramework.WebApi.RetrieveMultipleResponse>>()\n for (const [entityName, fetchXml] of fetchXmlMap) {\n responsePromiseMap.set(entityName, context.webAPI.retrieveMultipleRecords(entityName, `?$top=25&fetchXml=${encodeURIComponent((await fetchXml))}`))\n }\n await Promise.all(responsePromiseMap.values());\n const result: (ComponentFramework.LookupValue & { entityData: { [key: string]: any }, layout: ILayout })[] = [];\n for (const [entityName, response] of responsePromiseMap) {\n const layout: ILayout = JSON.parse((await getFetchXml(entityViewIdMap.get(entityName)!)).layoutjson ?? \"{}\");\n for (const entity of (await response).entities) {\n const entityMetadata = await entities.find(x => x.entityName === entityName)!.metadata;\n result.push({\n entityType: entityName,\n id: entity[entityMetadata.PrimaryIdAttribute],\n name: entity[layout.Rows?.[0]?.Cells?.[0]?.Name] ?? entity[entityMetadata.PrimaryNameAttribute] ?? labels.noName(),\n entityData: entity,\n layout: layout\n });\n }\n }\n return result;\n }\n\n const createRecord = async (entityName: string) => {\n const formParameters = props.onGetOnCreateFormParameters?.(entityName)\n const result = await context.navigation.openForm({\n entityName: entityName,\n useQuickCreateForm: true\n }, formParameters);\n if (!result.savedEntityReference) {\n return;\n }\n onNotifyOutputChanged({\n value: [\n ...boundValue,\n ...result.savedEntityReference\n ]\n });\n }\n\n const deselectRecord = (record: ComponentFramework.LookupValue) => {\n const map = new Map<string, ComponentFramework.LookupValue>(boundValue.map(value => [value.id, value]));\n map.delete(record.id);\n onNotifyOutputChanged({\n value: [...map.values()]\n })\n }\n\n return [\n boundValue, entities, labels, {\n create: createRecord,\n deselect: deselectRecord,\n select: selectRecords\n },\n selectEntity,\n getSearchResults,\n theme\n ];\n};"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLookup.js","sources":["../../../../src/components/Lookup/hooks/useLookup.ts"],"sourcesContent":["import { useState } from \"react\";\nimport { ITranslation, useControl } from \"../../../hooks\";\nimport { IEntity, ILayout, ILookup, IMetadata } from \"../interfaces\";\nimport { lookupTranslations } from \"../translations\";\nimport { useFetchXml } from \"./useFetchXml\";\nimport { ITheme } from \"@talxis/react-components\";\nimport dayjs from \"dayjs\";\n\nexport const useLookup = (props: ILookup): [\n ComponentFramework.LookupValue[],\n IEntity[],\n ITranslation<Required<ILookup>['translations']>,\n {\n create: (entityName: string) => void,\n select: (record: ComponentFramework.LookupValue[] | undefined) => void,\n deselect: (record: ComponentFramework.LookupValue) => void,\n },\n (entityName: string | null) => void,\n (query: string) => Promise<(ComponentFramework.LookupValue & { entityData: { [key: string]: any }, layout: ILayout })[]>,\n ITheme\n] => {\n\n const targets = props.parameters.value.attributes.Targets;\n const boundValue = props.parameters.value.raw;\n const context = props.context;\n const { labels, theme, onNotifyOutputChanged } = useControl('Lookup', props, lookupTranslations);\n const [getFetchXml, applyLookupQuery] = useFetchXml(context);\n\n const [entities, setEntities] = useState<IEntity[]>(() => {\n return targets.map(target => {\n return {\n entityName: target,\n selected: targets.length === 1 ? true : false,\n metadata: props.context.utils.getEntityMetadata(target, []) as any,\n }\n })\n });\n\n const selectedEntity = entities.find(x => x.selected);\n\n const selectEntity = (entityName: string | null) => {\n setEntities([...entities as IEntity[]].map(entity => {\n return {\n entityName: entity.entityName,\n metadata: entity.metadata,\n selected: entity.entityName === entityName\n }\n }))\n }\n\n const selectRecords = (records: ComponentFramework.LookupValue[] | undefined) => {\n onNotifyOutputChanged({\n value: records\n })\n }\n const getSearchFetchXml = async (entityName: string, query: string, viewIdCallBack: (id: string) => void): Promise<string> => {\n const response = (await props.parameters.value.getAllViews(entityName)).find(x => x.isDefault);\n if (!response?.viewId) {\n throw new Error(`Entity ${entityName} does not have a default view id!`);\n }\n viewIdCallBack(response.viewId);\n let fetchXml = response?.fetchXml\n if (!fetchXml) {\n fetchXml = (await getFetchXml(response.viewId)).fetchxml;\n }\n return applyLookupQuery(entities.find(x => x.entityName === entityName)!, fetchXml, query);\n\n }\n const getSearchResults = async (query: string): Promise<(ComponentFramework.LookupValue & { entityData: { [key: string]: any }, layout: ILayout })[]> => {\n if (props.onSearch) {\n return props.onSearch(selectedEntity ? [selectedEntity?.entityName] : targets, query) as any;\n }\n const fetchXmlMap = new Map<string, Promise<string>>();\n const entityViewIdMap = new Map<string, string>();\n if (selectedEntity) {\n fetchXmlMap.set(selectedEntity.entityName, getSearchFetchXml(selectedEntity.entityName, query, (viewId) => entityViewIdMap.set(selectedEntity.entityName, viewId)))\n }\n else {\n for (const entity of targets) {\n fetchXmlMap.set(entity, getSearchFetchXml(entity, query, (viewId) => entityViewIdMap.set(entity, viewId)))\n }\n }\n await Promise.all(fetchXmlMap.values());\n const responsePromiseMap = new Map<string, Promise<ComponentFramework.WebApi.RetrieveMultipleResponse>>()\n const aliasEntityMap: { aliasAttribute: string, entityAttribute: string }[] = [];\n const domParser = new DOMParser();\n for (const [entityName, fetchXml] of fetchXmlMap) {\n const fetchXMLresult = await fetchXml;\n responsePromiseMap.set(entityName, context.webAPI.retrieveMultipleRecords(entityName, `?$top=25&fetchXml=${encodeURIComponent((fetchXMLresult))}`))\n //parsing of link entities from fetchXML\n const xml = domParser.parseFromString(fetchXMLresult, \"application/xml\");\n const linkEntities = xml.querySelectorAll(`link-entity`);\n for (const linkEntity of linkEntities) {\n const aliasAttribute = linkEntity.getAttribute('alias');\n const entityAttribute = linkEntity.getAttribute('name');\n if (entityAttribute) {\n aliasEntityMap.push({ aliasAttribute: aliasAttribute ?? entityAttribute, entityAttribute: entityAttribute })\n }\n else {\n throw Error(\"Link-entity without name property is not supported. Offedning query: \" + fetchXMLresult);\n }\n }\n }\n await Promise.all(responsePromiseMap.values());\n const result: (ComponentFramework.LookupValue & { entityData: { [key: string]: any }, layout: ILayout })[] = [];\n for (const [entityName, response] of responsePromiseMap) {\n const layout: ILayout = JSON.parse((await getFetchXml(entityViewIdMap.get(entityName)!)).layoutjson ?? \"{}\");\n //Mapping link-entities' logical names to layout's Cell \n if (layout.Rows.some(x => x.Cells.some(x => x.Name.includes(\".\")))) {\n const cellsToModify = layout.Rows.flatMap(row => row.Cells)\n .filter(cell => cell.Name.includes(\".\"));\n\n cellsToModify.forEach(cell => {\n const alias = cell.Name.split(\".\")[0]\n cell.RelatedEntityName = aliasEntityMap.find(x => x.aliasAttribute === alias)?.entityAttribute ?? \"\";\n });\n }\n for (const entity of (await response).entities) {\n const entityMetadata = await entities.find(x => x.entityName === entityName)!.metadata;\n result.push({\n entityType: entityName,\n id: entity[entityMetadata.PrimaryIdAttribute],\n name: await getPrimaryName(entity, entityName, layout.Rows?.[0]?.Cells?.[0]?.Name, layout),\n entityData: entity,\n layout: layout\n });\n }\n }\n return result;\n }\n\n const getPrimaryName = async (\n entity: ComponentFramework.WebApi.Entity,\n entityName: string,\n attribute: string,\n layout: ILayout\n ): Promise<string> => {\n let targetEntityName = entityName;\n let targetAttribute = attribute;\n //checking for attributes pointing to related entity attribute, given by convention of using dot as separator\n if (attribute.includes(\".\")) {\n targetEntityName = layout.Rows.find(x => x.Cells)?.Cells?.find(y => y.Name === attribute)?.RelatedEntityName || entityName;\n targetAttribute = attribute.split(\".\")[1]\n }\n const entityMetadata: ComponentFramework.PropertyHelper.EntityMetadata = await props.context.utils.getEntityMetadata(targetEntityName, [targetAttribute]);\n const attributetype: string = entityMetadata.Attributes.get(targetAttribute).AttributeTypeName;\n let primaryName: string;\n switch (attributetype.toLowerCase()) {\n case \"lookup\":\n case \"partylist\":\n case \"owner\":\n case \"customer\":\n primaryName = entity[`_${targetAttribute}_value@OData.Community.Display.V1.FormattedValue`];\n break;\n case \"optionset\":\n case \"picklist\":\n case \"state\":\n case \"status\":\n case \"boolean\":\n case \"integer\":\n case \"bigint\":\n case \"decimal\":\n case \"money\":\n //TODO: Introduce user formatting, this approach takes format from application user setting\n primaryName = entity[`${targetAttribute}@OData.Community.Display.V1.FormattedValue`];\n break;\n case \"datetime\":\n primaryName = props.context.formatting.formatTime(dayjs(entity[targetAttribute]).toDate(), 1);\n break\n default:\n primaryName = entity[targetAttribute];\n };\n return (\n primaryName ??\n entity[entityMetadata.PrimaryNameAttribute] ??\n labels.noName()\n );\n };\n\n const createRecord = async (entityName: string) => {\n const formParameters = props.onGetOnCreateFormParameters?.(entityName)\n const result = await context.navigation.openForm({\n entityName: entityName,\n useQuickCreateForm: true\n }, formParameters);\n if (!result.savedEntityReference) {\n return;\n }\n onNotifyOutputChanged({\n value: [\n ...boundValue,\n ...result.savedEntityReference\n ]\n });\n }\n\n const deselectRecord = (record: ComponentFramework.LookupValue) => {\n const map = new Map<string, ComponentFramework.LookupValue>(boundValue.map(value => [value.id, value]));\n map.delete(record.id);\n onNotifyOutputChanged({\n value: [...map.values()]\n })\n }\n\n return [\n boundValue, entities, labels, {\n create: createRecord,\n deselect: deselectRecord,\n select: selectRecords\n },\n selectEntity,\n getSearchResults,\n theme\n ];\n};"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="@types/powerapps-component-framework" />
2
+ /// <reference types="powerapps-component-framework" />
2
3
  import { ITagPickerProps } from "@talxis/react-components";
3
4
  import { ILookupProperty, ITwoOptionsProperty } from "../../interfaces";
4
5
  import { IControl, IOutputs, ITranslations } from "../../interfaces/context";
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { ComboBox } from '@talxis/react-components';
3
3
  import { ThemeProvider } from '@fluentui/react';
4
- import React__default, { useRef, useMemo, useEffect } from 'react';
4
+ import React, { useRef, useMemo, useEffect } from 'react';
5
5
  import ReactDOM from 'react-dom';
6
6
  import { ColorfulOptions } from './ColofulOptions/ColorfulOptions.js';
7
7
  import { getIsColorFeatureEnabled, onRenderColorfulOption } from '../OptionSet/shared.js';
@@ -58,7 +58,7 @@ const MultiSelectOptionSet = (props) => {
58
58
  const container = document.createElement('div');
59
59
  container.setAttribute('class', `${className} ${styles.colorfulOptionsWrapper}`);
60
60
  container.onclick = () => componentRef.current?.focus(true);
61
- ReactDOM.render(React__default.createElement(ColorfulOptions, {
61
+ ReactDOM.render(React.createElement(ColorfulOptions, {
62
62
  value: boundValue,
63
63
  context: props.context
64
64
  }), container);
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelectOptionSet.js","sources":["../../../src/components/MultiSelectOptionSet/MultiSelectOptionSet.tsx"],"sourcesContent":["\nimport { IMultiSelectOptionSet } from './interfaces';\nimport { useControl } from '../../hooks';\nimport { ComboBox } from \"@talxis/react-components\";\nimport { IComboBox, IComboBoxOption, ThemeProvider } from '@fluentui/react';\nimport { useEffect, useMemo, useRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport React from 'react';\nimport { ColorfulOptions } from './ColofulOptions/ColorfulOptions';\nimport { getIsColorFeatureEnabled, onRenderColorfulOption } from '../OptionSet/shared';\nimport { getComboBoxStyles } from './styles';\n\nexport const MultiSelectOptionSet = (props: IMultiSelectOptionSet) => {\n const { sizing, onNotifyOutputChanged, theme } = useControl('MultiSelectOptionSet', props);\n const ref = useRef<HTMLDivElement>(null);\n const parameters = props.parameters;\n const boundValue = parameters.value;\n const componentRef = useRef<IComboBox>(null);\n const { Options } = parameters.value.attributes;\n const context = props.context;\n const applicationTheme = props.context.fluentDesignLanguage?.applicationTheme;\n const isColorFeatureEnabled = useMemo(() => getIsColorFeatureEnabled(props.parameters.EnableOptionSetColors?.raw, Options), [props.parameters.EnableOptionSetColors?.raw, Options]);\n const comboBoxOptions: IComboBoxOption[] = Options.map(option => ({\n key: option.Value.toString(),\n text: option.Label,\n }));\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n\n const handleChange = (option?: IComboBoxOption | null): void => {\n if (!option) {\n onNotifyOutputChanged({\n value: undefined\n });\n return;\n }\n const optionKey = option.key.toString();\n const updatedSelectedKeys = new Set(boundValue.raw || []);\n if (option.selected) {\n updatedSelectedKeys.add(+optionKey);\n } else {\n updatedSelectedKeys.delete(+optionKey);\n }\n const updatedSelectedKeysArray = Array.from(updatedSelectedKeys);\n\n onNotifyOutputChanged({\n value: updatedSelectedKeysArray.map(key => +key)\n });\n };\n\n const isEmptyValue = () => {\n if (!boundValue.raw) {\n return true;\n }\n if (boundValue.raw.length === 0) {\n return true;\n }\n return false;\n }\n\n const renderColorfulOptions = () => {\n const className = 'talxis__multiSelectOptionSet__colorfulOptions';\n const parent: HTMLDivElement = ref.current?.querySelector('.ms-ComboBox')!;\n const container = document.createElement('div');\n container.setAttribute('class', `${className} ${styles.colorfulOptionsWrapper}`);\n container.onclick = () => componentRef.current?.focus(true);\n\n ReactDOM.render(React.createElement(ColorfulOptions, {\n value: boundValue,\n context: props.context\n }), container);\n\n const existingContainer = parent.querySelector(`:scope>.${className}`);\n if (existingContainer && isEmptyValue()) {\n //clear the container if no values are selected\n parent.removeChild(existingContainer);\n }\n if (!existingContainer) {\n parent.prepend(container);\n }\n else {\n existingContainer.replaceWith(container);\n }\n }\n\n\n useEffect(() => {\n if (parameters.AutoFocus?.raw) {\n componentRef.current?.focus(true);\n }\n }, []);\n\n useEffect(() => {\n if (isColorFeatureEnabled) {\n renderColorfulOptions();\n }\n }, [boundValue.raw]);\n\n const styles = getComboBoxStyles(isColorFeatureEnabled, isEmptyValue(), sizing.width, sizing.height)\n\n const componentProps = onOverrideComponentProps({\n componentRef: componentRef,\n ref: ref,\n options: comboBoxOptions,\n allowFreeInput: true,\n multiSelect: true,\n autoComplete: \"on\",\n autofill: parameters.AutoFocus?.raw === true ? {\n autoFocus: true,\n } : undefined,\n onRenderContainer: (containerProps, defaultRender) => <ThemeProvider theme={props.context.fluentDesignLanguage?.applicationTheme}>{defaultRender?.(containerProps)}</ThemeProvider>,\n onRenderOption: isColorFeatureEnabled ? (option) => onRenderColorfulOption(Options, option, theme) : undefined,\n calloutProps: applicationTheme ? {\n theme: applicationTheme\n } : undefined,\n readOnly: context.mode.isControlDisabled,\n errorMessage: boundValue.errorMessage,\n selectedKey: boundValue.raw ? boundValue.raw.map(key => key.toString()) : null,\n useComboBoxAsMenuWidth: true,\n hideErrorMessage: !parameters.ShowErrorMessage?.raw,\n styles: { root: styles.root, callout: styles.callout },\n clickToCopyProps: parameters.EnableCopyButton?.raw === true ? {\n key: 'copy',\n showOnlyOnHover: true,\n iconProps: {\n iconName: 'Copy'\n }\n } : undefined,\n deleteButtonProps: parameters.EnableDeleteButton?.raw === true ? {\n key: 'delete',\n showOnlyOnHover: true,\n iconProps: {\n iconName: 'Cancel'\n },\n onClick: (e, value) => {\n handleChange(null);\n }\n } : undefined,\n onChange: (e, option) => handleChange(option),\n });\n\n return (\n <ThemeProvider theme={theme} applyTo=\"none\">\n <ComboBox {...componentProps} />\n </ThemeProvider>\n );\n};\n"],"names":["React","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"MultiSelectOptionSet.js","sources":["../../../src/components/MultiSelectOptionSet/MultiSelectOptionSet.tsx"],"sourcesContent":["\nimport { IMultiSelectOptionSet } from './interfaces';\nimport { useControl } from '../../hooks';\nimport { ComboBox } from \"@talxis/react-components\";\nimport { IComboBox, IComboBoxOption, ThemeProvider } from '@fluentui/react';\nimport { useEffect, useMemo, useRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport React from 'react';\nimport { ColorfulOptions } from './ColofulOptions/ColorfulOptions';\nimport { getIsColorFeatureEnabled, onRenderColorfulOption } from '../OptionSet/shared';\nimport { getComboBoxStyles } from './styles';\n\nexport const MultiSelectOptionSet = (props: IMultiSelectOptionSet) => {\n const { sizing, onNotifyOutputChanged, theme } = useControl('MultiSelectOptionSet', props);\n const ref = useRef<HTMLDivElement>(null);\n const parameters = props.parameters;\n const boundValue = parameters.value;\n const componentRef = useRef<IComboBox>(null);\n const { Options } = parameters.value.attributes;\n const context = props.context;\n const applicationTheme = props.context.fluentDesignLanguage?.applicationTheme;\n const isColorFeatureEnabled = useMemo(() => getIsColorFeatureEnabled(props.parameters.EnableOptionSetColors?.raw, Options), [props.parameters.EnableOptionSetColors?.raw, Options]);\n const comboBoxOptions: IComboBoxOption[] = Options.map(option => ({\n key: option.Value.toString(),\n text: option.Label,\n }));\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n\n const handleChange = (option?: IComboBoxOption | null): void => {\n if (!option) {\n onNotifyOutputChanged({\n value: undefined\n });\n return;\n }\n const optionKey = option.key.toString();\n const updatedSelectedKeys = new Set(boundValue.raw || []);\n if (option.selected) {\n updatedSelectedKeys.add(+optionKey);\n } else {\n updatedSelectedKeys.delete(+optionKey);\n }\n const updatedSelectedKeysArray = Array.from(updatedSelectedKeys);\n\n onNotifyOutputChanged({\n value: updatedSelectedKeysArray.map(key => +key)\n });\n };\n\n const isEmptyValue = () => {\n if (!boundValue.raw) {\n return true;\n }\n if (boundValue.raw.length === 0) {\n return true;\n }\n return false;\n }\n\n const renderColorfulOptions = () => {\n const className = 'talxis__multiSelectOptionSet__colorfulOptions';\n const parent: HTMLDivElement = ref.current?.querySelector('.ms-ComboBox')!;\n const container = document.createElement('div');\n container.setAttribute('class', `${className} ${styles.colorfulOptionsWrapper}`);\n container.onclick = () => componentRef.current?.focus(true);\n\n ReactDOM.render(React.createElement(ColorfulOptions, {\n value: boundValue,\n context: props.context\n }), container);\n\n const existingContainer = parent.querySelector(`:scope>.${className}`);\n if (existingContainer && isEmptyValue()) {\n //clear the container if no values are selected\n parent.removeChild(existingContainer);\n }\n if (!existingContainer) {\n parent.prepend(container);\n }\n else {\n existingContainer.replaceWith(container);\n }\n }\n\n\n useEffect(() => {\n if (parameters.AutoFocus?.raw) {\n componentRef.current?.focus(true);\n }\n }, []);\n\n useEffect(() => {\n if (isColorFeatureEnabled) {\n renderColorfulOptions();\n }\n }, [boundValue.raw]);\n\n const styles = getComboBoxStyles(isColorFeatureEnabled, isEmptyValue(), sizing.width, sizing.height)\n\n const componentProps = onOverrideComponentProps({\n componentRef: componentRef,\n ref: ref,\n options: comboBoxOptions,\n allowFreeInput: true,\n multiSelect: true,\n autoComplete: \"on\",\n autofill: parameters.AutoFocus?.raw === true ? {\n autoFocus: true,\n } : undefined,\n onRenderContainer: (containerProps, defaultRender) => <ThemeProvider theme={props.context.fluentDesignLanguage?.applicationTheme}>{defaultRender?.(containerProps)}</ThemeProvider>,\n onRenderOption: isColorFeatureEnabled ? (option) => onRenderColorfulOption(Options, option, theme) : undefined,\n calloutProps: applicationTheme ? {\n theme: applicationTheme\n } : undefined,\n readOnly: context.mode.isControlDisabled,\n errorMessage: boundValue.errorMessage,\n selectedKey: boundValue.raw ? boundValue.raw.map(key => key.toString()) : null,\n useComboBoxAsMenuWidth: true,\n hideErrorMessage: !parameters.ShowErrorMessage?.raw,\n styles: { root: styles.root, callout: styles.callout },\n clickToCopyProps: parameters.EnableCopyButton?.raw === true ? {\n key: 'copy',\n showOnlyOnHover: true,\n iconProps: {\n iconName: 'Copy'\n }\n } : undefined,\n deleteButtonProps: parameters.EnableDeleteButton?.raw === true ? {\n key: 'delete',\n showOnlyOnHover: true,\n iconProps: {\n iconName: 'Cancel'\n },\n onClick: (e, value) => {\n handleChange(null);\n }\n } : undefined,\n onChange: (e, option) => handleChange(option),\n });\n\n return (\n <ThemeProvider theme={theme} applyTo=\"none\">\n <ComboBox {...componentProps} />\n </ThemeProvider>\n );\n};\n"],"names":["_jsx"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="@types/powerapps-component-framework" />
2
+ /// <reference types="powerapps-component-framework" />
2
3
  import { IControl, IParameters, IProperty } from "../../interfaces";
3
4
  import { IBinding, IControlStates } from "./interfaces";
4
5
  export interface IOptions {
@@ -30,6 +31,7 @@ export interface IOptions {
30
31
  onGetProps?: (props: IControl<any, any, any, any>) => IControl<any, any, any, any>;
31
32
  onRender?: (control: NestedControl, defaultRender: () => Promise<void>) => void;
32
33
  onUnmount?: (control: NestedControl, defaultUnmount: () => void) => void;
34
+ onIsLoading?: () => boolean;
33
35
  };
34
36
  }
35
37
  export declare class NestedControl {
@@ -51,6 +53,7 @@ export declare class NestedControl {
51
53
  private _hasControlBeenPatched;
52
54
  constructor(options: IOptions);
53
55
  getProps(): IControl<IParameters, any, any, any>;
56
+ getControlInstance(): ComponentFramework.StandardControl<any, any, ComponentFramework.IEventBag> | null;
54
57
  refreshProps(): any;
55
58
  getParameters(): {
56
59
  [name: string]: IProperty;
@@ -36,6 +36,9 @@ class NestedControl {
36
36
  }
37
37
  return this._props;
38
38
  }
39
+ getControlInstance() {
40
+ return this._customControlInstance;
41
+ }
39
42
  refreshProps() {
40
43
  const parameters = this.getParameters();
41
44
  const props = {
@@ -49,7 +52,7 @@ class NestedControl {
49
52
  }),
50
53
  factory: {
51
54
  ...this.getOptions().parentPcfContext.factory,
52
- requestRender: () => this.render()
55
+ requestRender: () => this.render(),
53
56
  },
54
57
  fluentDesignLanguage: this._getFluentDesignLanguage(this.getOptions().parentPcfContext.fluentDesignLanguage)
55
58
  },
@@ -91,7 +94,7 @@ class NestedControl {
91
94
  return this._options;
92
95
  }
93
96
  async render() {
94
- if (this._pendingInitialRender || this._destroyed) {
97
+ if (this._pendingInitialRender || this._destroyed || this._options.overrides?.onIsLoading?.()) {
95
98
  return;
96
99
  }
97
100
  await this._getPropertiesFromBindings();
@@ -1 +1 @@
1
- {"version":3,"file":"NestedControl.js","sources":["../../../src/components/NestedControlRenderer/NestedControl.ts"],"sourcesContent":["import { DataType, DataTypes, PromiseCache } from \"@talxis/client-libraries\";\nimport { Property } from \"./properties/Property\";\nimport { TextProperty } from \"./properties/TextProperty\";\nimport { OptionSetProperty } from \"./properties/OptionSetProperty\";\nimport { NumberProperty } from \"./properties/NumberProperty\";\nimport { DateProperty } from \"./properties/DateProperty\";\nimport { LookupProperty } from \"./properties/LookupProperty\";\nimport { IControl, IParameters, IProperty } from \"../../interfaces\";\nimport { ControlTheme, IFluentDesignState } from \"../../utils\";\nimport { Manifest } from \"./manifest\";\nimport { FileProperty } from \"./properties/FileProperty\";\nimport { NestedControlError } from \"./NestedControlError\";\nimport { IBinding, IControlStates } from \"./interfaces\";\n\n\nconst manifestCache = new PromiseCache();\nconst LOADED_CONTROLS = new Set<string>();\n\n\nexport interface IOptions {\n onGetBindings: () => {\n [key: string]: IBinding;\n }\n /**\n * PCF Context of parent control using this class. It will be used as base for nested control PCF context.\n */\n parentPcfContext: ComponentFramework.Context<any, any>;\n\n /**\n * Custom PCF to be rendered, if not provided you will get Base Control props.\n */\n /**\n* Container element into which the control will be rendered in.\n*/\n onGetContainerElement?: () => HTMLDivElement;\n onGetControlName?: () => string;\n callbacks?: {\n onInit?: (instance: NestedControl) => void;\n onGetControlStates?: () => IControlStates | undefined\n onNotifyOutputChanged?: (ouputs: any) => void;\n\n /**\n * Triggers when the control changes a state that should be visible in control renderer UI (for example loading)\n */\n onControlStateChanged?: () => void;\n },\n overrides?: {\n onGetProps?: (props: IControl<any, any, any, any>) => IControl<any, any, any, any>;\n onRender?: (control: NestedControl, defaultRender: () => Promise<void>) => void;\n onUnmount?: (control: NestedControl, defaultUnmount: () => void) => void;\n }\n}\n\nexport class NestedControl {\n private _options: IOptions;\n private _pendingInitialRender: boolean = false;\n private _errorMessage: string = '';\n private _properties: Map<string, Property> = new Map();\n private _lastRenderedControlName: string = '';\n private _hasCustomPcfBeenMounted: boolean = false;\n private _customControlInstance: ComponentFramework.StandardControl<any, any> | null = null;\n private _customControlId: string = '';\n private _manifest: Manifest | null = null;\n private _loading: boolean = false;\n private _props: IControl<IParameters, any, any, any> | undefined;\n private _mutationObserver: MutationObserver | null = new MutationObserver((mutations) => this._checkIfControlLoadedToDom(mutations));\n private _destroyed: boolean = false;\n private _initialized: boolean = false;\n private _container: HTMLDivElement | null = null;\n private _hasControlBeenPatched: boolean = false;\n\n constructor(options: IOptions) {\n this._options = options;\n this._getPropertiesFromBindings()\n }\n\n public getProps(): IControl<IParameters, any, any, any> {\n if (!this._props) {\n return this.refreshProps()\n }\n return this._props;\n }\n\n public refreshProps() {\n const parameters: { [name: string]: IProperty } = this.getParameters();\n const props: IControl<any, any, any, any> = {\n context: {\n ...this.getOptions().parentPcfContext,\n parameters: parameters,\n mode: Object.create(this.getOptions().parentPcfContext.mode, {\n isControlDisabled: {\n value: this.getOptions().callbacks?.onGetControlStates?.()?.isControlDisabled ?? false\n }\n }),\n factory: {\n ...this.getOptions().parentPcfContext.factory,\n requestRender: () => this.render()\n },\n fluentDesignLanguage: this._getFluentDesignLanguage(this.getOptions().parentPcfContext.fluentDesignLanguage)\n },\n parameters: parameters,\n onNotifyOutputChanged: (outputs: any) => {\n Object.entries(outputs).map(([name, output]) => {\n this.getOptions().onGetBindings()[name]?.onNotifyOutputChanged?.(output)\n })\n this.getOptions().callbacks?.onNotifyOutputChanged?.(outputs);\n }\n }\n const result = this._overrideDecorator(() => props, this.getOptions().overrides?.onGetProps, () => [props] as any);\n this._props = result;\n return result;\n }\n\n public getParameters() {\n const parameters: { [name: string]: IProperty } = {};\n [...this._properties.entries()].map(([name, prop]) => {\n const binding = this.getOptions().onGetBindings()[name];\n //binding might not exist if we have switched controls\n if (binding) {\n parameters[name] = {\n ...prop.getParameter(),\n error: binding.error ?? false,\n errorMessage: binding.errorMessage ?? null,\n type: prop.dataType\n };\n }\n })\n return parameters;\n }\n\n public isLoading() {\n return this._loading;\n }\n\n public setLoading(loading: boolean) {\n this._loading = loading;\n }\n\n public getOptions() {\n return this._options;\n }\n\n public async render() {\n if (this._pendingInitialRender || this._destroyed) {\n return;\n }\n await this._getPropertiesFromBindings();\n if (this._destroyed) {\n return;\n }\n this.refreshProps();\n //if we detect a change in name, unmount the component before render\n if (this._lastRenderedControlName && this._lastRenderedControlName !== this.getControlName()) {\n this.unmount(true)\n }\n if (!this._customControlId) {\n this._customControlId = crypto.randomUUID();\n }\n await this._overrideDecorator(async () => this._render(), this.getOptions().overrides?.onRender, () => [this, async () => this._render()] as any);\n if (this._destroyed) {\n return;\n }\n this._lastRenderedControlName = this.getControlName();\n }\n public unmount(softUnmount?: boolean) {\n this._overrideDecorator(() => this._unmount(), this.getOptions().overrides?.onUnmount, () => [this, () => this._unmount()] as any)\n this._lastRenderedControlName = '';\n this._hasCustomPcfBeenMounted = false;\n this._hasControlBeenPatched = false;\n this._customControlId = '';\n this._mutationObserver?.disconnect();\n if (!softUnmount) {\n this._mutationObserver = null;\n this._customControlInstance = null;\n this._props = undefined;\n this._container = null;\n this._properties.clear();\n this._destroyed = true;\n }\n }\n public getErrorMessage(): string {\n return this._errorMessage;\n }\n public setError(message?: string) {\n this._errorMessage = message ?? '';\n }\n public isMountedPcfComponent() {\n return this._hasCustomPcfBeenMounted;\n }\n\n public getContainer() {\n let container = this.getOptions().onGetContainerElement?.();\n if (container) {\n this._container = container;\n return container;\n }\n if (this._container) {\n return this._container;\n }\n if (!container && this._container) {\n return this._container;\n }\n throw new Error('Cannot render control if no container is specified!');\n }\n\n public getControlName() {\n const controlName = this.getOptions().onGetControlName?.();\n if (!controlName) {\n throw new Error(\"Cannot render control if it's name is not specified!\");\n }\n return controlName;\n }\n\n public getBindings() {\n return this.getOptions().onGetBindings();\n }\n\n public getCustomControlId() {\n return this._customControlId;\n }\n\n private _overrideDecorator<T extends any[], K>(defaultMethod: () => K | Promise<K>, override?: (...args: T) => any, getOverrideArgs?: () => T) {\n if (override && getOverrideArgs) {\n return override(...getOverrideArgs());\n }\n else {\n return defaultMethod();\n }\n }\n\n private _unmount() {\n (this.getOptions().parentPcfContext as any).factory.unbindDOMComponent(this._customControlId)\n\n }\n private async _render(): Promise<void> {\n try {\n if (!this._lastRenderedControlName) {\n this._errorMessage = '';\n this._pendingInitialRender = true;\n const controlName = this.getControlName();\n if (!LOADED_CONTROLS.has(controlName)) {\n this._loading = true;\n this.getOptions().callbacks?.onControlStateChanged?.();\n }\n this._mutationObserver?.observe(this.getContainer(), { childList: true, subtree: true });\n try {\n this._manifest = await this._getManifest(controlName);\n }\n catch (err) {\n throw new NestedControlError({\n message: `Could not find control named ${controlName} on this environment.`\n }, this);\n }\n if (this._destroyed) {\n return;\n }\n try {\n const properties: any = {\n controlstates: this.getOptions().callbacks?.onGetControlStates?.() ?? {},\n parameters: this._getCustomControlParameters(this._manifest!),\n childeventlisteners: [{\n eventname: \"onInit\",\n eventhandler: (control: ComponentFramework.StandardControl<any, any>) => {\n LOADED_CONTROLS.add(this._lastRenderedControlName);\n this._customControlInstance = control;\n this._patchUpdateView(this._customControlInstance!, this._manifest!);\n this._loading = false;\n this.getOptions().callbacks?.onControlStateChanged?.();\n }\n }]\n };\n const component = (this.getOptions().parentPcfContext as any).factory.createComponent(controlName, this._customControlId, properties);\n (this.getOptions().parentPcfContext as any).factory.bindDOMElement(component, this.getContainer());\n this._hasCustomPcfBeenMounted = true;\n }\n catch (err) {\n throw new NestedControlError(err as any, this);\n }\n this._pendingInitialRender = false;\n }\n //the PCF did not change, just call updateView\n else {\n this._customControlInstance?.updateView?.(this.getProps().context)\n }\n }\n catch (err) {\n this._pendingInitialRender = false;\n this._pendingInitialRender = false;\n console.error(err);\n }\n }\n\n private _getCustomControlNameWithoutPrefix() {\n const parts = this._lastRenderedControlName.split('_');\n return parts[1] ?? parts[0];\n }\n\n private _checkIfControlLoadedToDom(mutations: MutationRecord[]) {\n try {\n mutations.map(mutation => {\n const target = mutation.target as HTMLElement;\n if (target.classList.contains(this._getCustomControlNameWithoutPrefix())) {\n this._loading = false;\n LOADED_CONTROLS.add(this._lastRenderedControlName);\n this._mutationObserver?.disconnect();\n if (!this._customControlInstance) {\n this._unmount();\n throw new NestedControlError({\n message: `Custom control ${this._lastRenderedControlName} does not expose it's instance through fireEvent. Please add fireEvent to init() to avoid unintentional behavior.`\n }, this)\n }\n }\n });\n }\n catch(err) {\n console.error(err);\n }\n }\n\n private async _getPropertiesFromBindings() {\n const promises: Promise<boolean>[] = [];\n Object.entries(this.getOptions().onGetBindings()).map(([name, binding]) => {\n if (!this._properties.get(name)) {\n const getBinding = () => this.getOptions().onGetBindings()[name];\n const propertyInstance = this._getPropertyInstance(getBinding);\n const metadata = getBinding()?.metadata;\n //push to promise only if we need to fetch the metadata asynchronously\n if (metadata?.attributeName && metadata.entityName) {\n promises.push(propertyInstance.init());\n }\n else {\n propertyInstance.init();\n }\n this._properties.set(name, propertyInstance);\n }\n })\n if (promises.length > 0) {\n await Promise.all(promises);\n }\n if (!this._initialized) {\n this._initialized = true;\n this.getOptions().callbacks?.onInit?.(this)\n }\n }\n\n private _getPropertyInstance(onGetBinding: () => IBinding) {\n switch (onGetBinding().type) {\n case DataTypes.TwoOptions:\n case DataTypes.OptionSet:\n case DataTypes.MultiSelectOptionSet: {\n return new OptionSetProperty(this.getOptions(), onGetBinding);\n }\n case DataTypes.DateAndTimeDateAndTime:\n case DataTypes.DateAndTimeDateOnly: {\n return new DateProperty(this.getOptions(), onGetBinding);\n }\n case DataTypes.WholeNone:\n case DataTypes.Decimal:\n case DataTypes.Currency:\n case DataTypes.WholeDuration: {\n return new NumberProperty(this.getOptions(), onGetBinding);\n }\n case DataTypes.LookupSimple:\n case DataTypes.LookupOwner:\n case DataTypes.LookupCustomer:\n case DataTypes.LookupRegarding: {\n return new LookupProperty(this.getOptions(), onGetBinding);\n }\n case DataTypes.File:\n case DataTypes.Image: {\n return new FileProperty(this.getOptions(), onGetBinding)\n }\n default: {\n return new TextProperty(this.getOptions(), onGetBinding);\n }\n }\n }\n private _getPrimaryBindingName(): string {\n const primaryBinding = Object.entries(this.getOptions().onGetBindings()).find(([key, binding]) => !binding.isStatic)?.[0];\n if (!primaryBinding) {\n throw new Error('Control needs to have atleast one non-static binding!');\n }\n return primaryBinding;\n }\n private _getManifestPrimaryBinding(manifest: Manifest) {\n return [...manifest.control.properties.values()].find(prop => prop.isBindingProperty)!;\n }\n private async _getManifest(controlName: string) {\n return manifestCache.get(controlName, async () => {\n const result = await this.getOptions().parentPcfContext.webAPI.retrieveMultipleRecords('customcontrol', `?$select=name,manifest&$filter=name eq '${controlName}'`);\n const manifestXmlString = result.entities[0].manifest;\n return new Manifest(manifestXmlString);\n })\n }\n private _getCustomControlParameters(manifest: Manifest) {\n const result: { [name: string]: any } = {};\n const bindingParameters = this.getProps().parameters;\n const manifestProperties = [...manifest.control.properties.values()];\n manifestProperties.map(property => {\n result[property.name] = {\n Static: property.usage === 'input',\n Primary: property.isBindingProperty,\n //if no ofType is present, there is a type group and we need to get the type from the passed parameters above\n Type: property.ofType ?? bindingParameters[property.name]?.type ?? 'SingleLine.Text',\n //if static, we take the value that came from the parameter above\n Value: (() => {\n const binding = bindingParameters[property.name];\n if (binding) {\n return binding.raw;\n }\n if (property.usage === 'input') {\n return property.defaultValue;\n }\n if (property.isBindingProperty) {\n return bindingParameters[this._getPrimaryBindingName()].raw;\n }\n })(),\n Usage: (() => {\n switch (property.usage) {\n case 'bound': {\n return 3;\n }\n case 'input':\n case 'output': {\n return 0;\n }\n }\n })(),\n Attributes: (() => {\n const getBindingMetadata = (bindingName: string) => {\n const binding = this.getOptions().onGetBindings()[bindingName];\n return binding?.metadata ? {\n EntityLogicalName: binding.metadata.entityName,\n LogicalName: binding.metadata.attributeName\n } : undefined;\n };\n const propertyBindingMetadata = getBindingMetadata(property.name);\n\n if (propertyBindingMetadata) {\n return propertyBindingMetadata;\n }\n\n if (property.isBindingProperty) {\n return getBindingMetadata(this._getPrimaryBindingName());\n }\n\n return undefined;\n })(),\n Callback: (value: any) => {\n let binding = this.getOptions().onGetBindings()[property.name];\n let bindingName = property.name;\n if (!binding && !property.isBindingProperty) {\n return;\n }\n if (!binding) {\n bindingName = this._getPrimaryBindingName();\n binding = this.getOptions().onGetBindings()[bindingName]\n }\n binding.onNotifyOutputChanged?.(value);\n const boundBindings = Object.entries(this.getOptions().onGetBindings()).filter(([key, binding]) => !binding.isStatic);\n const outputs: any = {};\n boundBindings.map(([key, binding]) => {\n outputs[key] = key === bindingName ? value : this.getProps().parameters[bindingName].raw\n })\n this.getOptions().callbacks?.onNotifyOutputChanged?.(outputs)\n }\n }\n })\n const nonManifestParameters = Object.entries(bindingParameters).filter(([key, value]) => !manifest.control.properties.get(key));\n nonManifestParameters.map(([key, parameter]) => {\n result[key] = {\n Static: true,\n Primary: false,\n Type: parameter.type ?? 'SingleLine.Text',\n Value: parameter.raw,\n Usage: 0\n }\n })\n return result;\n }\n private _patchUpdateView(control: ComponentFramework.StandardControl<any, any>, manifest: Manifest) {\n if (this._hasControlBeenPatched) {\n return;\n }\n let originalContext: ComponentFramework.Context<any, any> | null = null;\n const originalUpdateView = control.updateView.bind(control);\n control.updateView = (context) => {\n if (!originalContext) {\n originalContext = context;\n }\n originalUpdateView(this._patchContext(manifest, originalContext));\n }\n this._hasControlBeenPatched = true;\n }\n private _patchContext(manifest: Manifest, originalContext: ComponentFramework.Context<any, any>) {\n const context = this.getProps().context;\n const contextParameters = originalContext.parameters;\n const parameters = this.getProps().parameters;\n const manifestBindingProperty = this._getManifestPrimaryBinding(manifest);\n const primaryBindingName = this._getPrimaryBindingName();\n context.resources = originalContext.resources;\n context.events = originalContext.events;\n context.parameters = {\n ...contextParameters,\n ...parameters,\n [manifestBindingProperty.name]: parameters[primaryBindingName]\n }\n\n return context;\n }\n private _getFluentDesignLanguage(fluentDesignLanguage?: IFluentDesignState): IFluentDesignState {\n const v8Theme = ControlTheme.GetV8ThemeFromFluentDesignLanguage(fluentDesignLanguage);\n return ControlTheme.GenerateFluentDesignLanguage(v8Theme.palette.themePrimary, v8Theme.semanticColors.bodyBackground, v8Theme.semanticColors.bodyText, {\n v8FluentOverrides: fluentDesignLanguage?.v8FluentOverrides,\n applicationTheme: fluentDesignLanguage?.applicationTheme ?? v8Theme\n })\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NestedControl.js","sources":["../../../src/components/NestedControlRenderer/NestedControl.ts"],"sourcesContent":["import { DataType, DataTypes, PromiseCache } from \"@talxis/client-libraries\";\nimport { Property } from \"./properties/Property\";\nimport { TextProperty } from \"./properties/TextProperty\";\nimport { OptionSetProperty } from \"./properties/OptionSetProperty\";\nimport { NumberProperty } from \"./properties/NumberProperty\";\nimport { DateProperty } from \"./properties/DateProperty\";\nimport { LookupProperty } from \"./properties/LookupProperty\";\nimport { IControl, IParameters, IProperty } from \"../../interfaces\";\nimport { ControlTheme, IFluentDesignState } from \"../../utils\";\nimport { Manifest } from \"./manifest\";\nimport { FileProperty } from \"./properties/FileProperty\";\nimport { NestedControlError } from \"./NestedControlError\";\nimport { IBinding, IControlStates } from \"./interfaces\";\n\n\nconst manifestCache = new PromiseCache();\nconst LOADED_CONTROLS = new Set<string>();\n\n\nexport interface IOptions {\n onGetBindings: () => {\n [key: string]: IBinding;\n }\n /**\n * PCF Context of parent control using this class. It will be used as base for nested control PCF context.\n */\n parentPcfContext: ComponentFramework.Context<any, any>;\n\n /**\n * Custom PCF to be rendered, if not provided you will get Base Control props.\n */\n /**\n* Container element into which the control will be rendered in.\n*/\n onGetContainerElement?: () => HTMLDivElement;\n onGetControlName?: () => string;\n callbacks?: {\n onInit?: (instance: NestedControl) => void;\n onGetControlStates?: () => IControlStates | undefined\n onNotifyOutputChanged?: (ouputs: any) => void;\n\n /**\n * Triggers when the control changes a state that should be visible in control renderer UI (for example loading)\n */\n onControlStateChanged?: () => void;\n },\n overrides?: {\n onGetProps?: (props: IControl<any, any, any, any>) => IControl<any, any, any, any>;\n onRender?: (control: NestedControl, defaultRender: () => Promise<void>) => void;\n onUnmount?: (control: NestedControl, defaultUnmount: () => void) => void;\n onIsLoading?: () => boolean;\n }\n}\n\nexport class NestedControl {\n private _options: IOptions;\n private _pendingInitialRender: boolean = false;\n private _errorMessage: string = '';\n private _properties: Map<string, Property> = new Map();\n private _lastRenderedControlName: string = '';\n private _hasCustomPcfBeenMounted: boolean = false;\n private _customControlInstance: ComponentFramework.StandardControl<any, any> | null = null;\n private _customControlId: string = '';\n private _manifest: Manifest | null = null;\n private _loading: boolean = false;\n private _props: IControl<IParameters, any, any, any> | undefined;\n private _mutationObserver: MutationObserver | null = new MutationObserver((mutations) => this._checkIfControlLoadedToDom(mutations));\n private _destroyed: boolean = false;\n private _initialized: boolean = false;\n private _container: HTMLDivElement | null = null;\n private _hasControlBeenPatched: boolean = false;\n\n constructor(options: IOptions) {\n this._options = options;\n this._getPropertiesFromBindings();\n }\n\n public getProps(): IControl<IParameters, any, any, any> {\n if (!this._props) {\n return this.refreshProps()\n }\n return this._props;\n }\n\n public getControlInstance() {\n return this._customControlInstance;\n }\n\n public refreshProps() {\n const parameters: { [name: string]: IProperty } = this.getParameters();\n const props: IControl<any, any, any, any> = {\n context: {\n ...this.getOptions().parentPcfContext,\n parameters: parameters,\n mode: Object.create(this.getOptions().parentPcfContext.mode, {\n isControlDisabled: {\n value: this.getOptions().callbacks?.onGetControlStates?.()?.isControlDisabled ?? false\n }\n }),\n factory: {\n ...this.getOptions().parentPcfContext.factory,\n requestRender: () => this.render(),\n },\n fluentDesignLanguage: this._getFluentDesignLanguage(this.getOptions().parentPcfContext.fluentDesignLanguage)\n },\n parameters: parameters,\n onNotifyOutputChanged: (outputs: any) => {\n Object.entries(outputs).map(([name, output]) => {\n this.getOptions().onGetBindings()[name]?.onNotifyOutputChanged?.(output)\n })\n this.getOptions().callbacks?.onNotifyOutputChanged?.(outputs);\n }\n }\n const result = this._overrideDecorator(() => props, this.getOptions().overrides?.onGetProps, () => [props] as any);\n this._props = result;\n return result;\n }\n\n public getParameters() {\n const parameters: { [name: string]: IProperty } = {};\n [...this._properties.entries()].map(([name, prop]) => {\n const binding = this.getOptions().onGetBindings()[name];\n //binding might not exist if we have switched controls\n if (binding) {\n parameters[name] = {\n ...prop.getParameter(),\n error: binding.error ?? false,\n errorMessage: binding.errorMessage ?? null,\n type: prop.dataType\n };\n }\n })\n return parameters;\n }\n\n public isLoading() {\n return this._loading;\n }\n\n public setLoading(loading: boolean) {\n this._loading = loading;\n }\n\n public getOptions() {\n return this._options;\n }\n\n public async render() {\n if (this._pendingInitialRender || this._destroyed || this._options.overrides?.onIsLoading?.()) {\n return;\n }\n await this._getPropertiesFromBindings();\n if (this._destroyed) {\n return;\n }\n this.refreshProps();\n //if we detect a change in name, unmount the component before render\n if (this._lastRenderedControlName && this._lastRenderedControlName !== this.getControlName()) {\n this.unmount(true)\n }\n if (!this._customControlId) {\n this._customControlId = crypto.randomUUID();\n }\n await this._overrideDecorator(async () => this._render(), this.getOptions().overrides?.onRender, () => [this, async () => this._render()] as any);\n if (this._destroyed) {\n return;\n }\n this._lastRenderedControlName = this.getControlName();\n }\n public unmount(softUnmount?: boolean) {\n this._overrideDecorator(() => this._unmount(), this.getOptions().overrides?.onUnmount, () => [this, () => this._unmount()] as any)\n this._lastRenderedControlName = '';\n this._hasCustomPcfBeenMounted = false;\n this._hasControlBeenPatched = false;\n this._customControlId = '';\n this._mutationObserver?.disconnect();\n if (!softUnmount) {\n this._mutationObserver = null;\n this._customControlInstance = null;\n this._props = undefined;\n this._container = null;\n this._properties.clear();\n this._destroyed = true;\n }\n }\n public getErrorMessage(): string {\n return this._errorMessage;\n }\n public setError(message?: string) {\n this._errorMessage = message ?? '';\n }\n public isMountedPcfComponent() {\n return this._hasCustomPcfBeenMounted;\n }\n\n public getContainer() {\n let container = this.getOptions().onGetContainerElement?.();\n if (container) {\n this._container = container;\n return container;\n }\n if (this._container) {\n return this._container;\n }\n if (!container && this._container) {\n return this._container;\n }\n throw new Error('Cannot render control if no container is specified!');\n }\n\n public getControlName() {\n const controlName = this.getOptions().onGetControlName?.();\n if (!controlName) {\n throw new Error(\"Cannot render control if it's name is not specified!\");\n }\n return controlName;\n }\n\n public getBindings() {\n return this.getOptions().onGetBindings();\n }\n\n public getCustomControlId() {\n return this._customControlId;\n }\n\n private _overrideDecorator<T extends any[], K>(defaultMethod: () => K | Promise<K>, override?: (...args: T) => any, getOverrideArgs?: () => T) {\n if (override && getOverrideArgs) {\n return override(...getOverrideArgs());\n }\n else {\n return defaultMethod();\n }\n }\n\n private _unmount() {\n (this.getOptions().parentPcfContext as any).factory.unbindDOMComponent(this._customControlId)\n\n }\n private async _render(): Promise<void> {\n try {\n if (!this._lastRenderedControlName) {\n this._errorMessage = '';\n this._pendingInitialRender = true;\n const controlName = this.getControlName();\n if (!LOADED_CONTROLS.has(controlName)) {\n this._loading = true;\n this.getOptions().callbacks?.onControlStateChanged?.();\n }\n this._mutationObserver?.observe(this.getContainer(), { childList: true, subtree: true });\n try {\n this._manifest = await this._getManifest(controlName);\n }\n catch (err) {\n throw new NestedControlError({\n message: `Could not find control named ${controlName} on this environment.`\n }, this);\n }\n if (this._destroyed) {\n return;\n }\n try {\n const properties: any = {\n controlstates: this.getOptions().callbacks?.onGetControlStates?.() ?? {},\n parameters: this._getCustomControlParameters(this._manifest!),\n childeventlisteners: [{\n eventname: \"onInit\",\n eventhandler: (control: ComponentFramework.StandardControl<any, any>) => {\n LOADED_CONTROLS.add(this._lastRenderedControlName);\n this._customControlInstance = control;\n this._patchUpdateView(this._customControlInstance!, this._manifest!);\n this._loading = false;\n this.getOptions().callbacks?.onControlStateChanged?.();\n }\n }]\n };\n const component = (this.getOptions().parentPcfContext as any).factory.createComponent(controlName, this._customControlId, properties);\n (this.getOptions().parentPcfContext as any).factory.bindDOMElement(component, this.getContainer());\n this._hasCustomPcfBeenMounted = true;\n }\n catch (err) {\n throw new NestedControlError(err as any, this);\n }\n this._pendingInitialRender = false;\n }\n //the PCF did not change, just call updateView\n else {\n this._customControlInstance?.updateView?.(this.getProps().context)\n }\n }\n catch (err) {\n this._pendingInitialRender = false;\n this._pendingInitialRender = false;\n console.error(err);\n }\n }\n\n private _getCustomControlNameWithoutPrefix() {\n const parts = this._lastRenderedControlName.split('_');\n return parts[1] ?? parts[0];\n }\n\n private _checkIfControlLoadedToDom(mutations: MutationRecord[]) {\n try {\n mutations.map(mutation => {\n const target = mutation.target as HTMLElement;\n if (target.classList.contains(this._getCustomControlNameWithoutPrefix())) {\n this._loading = false;\n LOADED_CONTROLS.add(this._lastRenderedControlName);\n this._mutationObserver?.disconnect();\n if (!this._customControlInstance) {\n this._unmount();\n throw new NestedControlError({\n message: `Custom control ${this._lastRenderedControlName} does not expose it's instance through fireEvent. Please add fireEvent to init() to avoid unintentional behavior.`\n }, this)\n }\n }\n });\n }\n catch(err) {\n console.error(err);\n }\n }\n\n private async _getPropertiesFromBindings() {\n const promises: Promise<boolean>[] = [];\n Object.entries(this.getOptions().onGetBindings()).map(([name, binding]) => {\n if (!this._properties.get(name)) {\n const getBinding = () => this.getOptions().onGetBindings()[name];\n const propertyInstance = this._getPropertyInstance(getBinding);\n const metadata = getBinding()?.metadata;\n //push to promise only if we need to fetch the metadata asynchronously\n if (metadata?.attributeName && metadata.entityName) {\n promises.push(propertyInstance.init());\n }\n else {\n propertyInstance.init();\n }\n this._properties.set(name, propertyInstance);\n }\n })\n if (promises.length > 0) {\n await Promise.all(promises);\n }\n if (!this._initialized) {\n this._initialized = true;\n this.getOptions().callbacks?.onInit?.(this)\n }\n }\n\n private _getPropertyInstance(onGetBinding: () => IBinding) {\n switch (onGetBinding().type) {\n case DataTypes.TwoOptions:\n case DataTypes.OptionSet:\n case DataTypes.MultiSelectOptionSet: {\n return new OptionSetProperty(this.getOptions(), onGetBinding);\n }\n case DataTypes.DateAndTimeDateAndTime:\n case DataTypes.DateAndTimeDateOnly: {\n return new DateProperty(this.getOptions(), onGetBinding);\n }\n case DataTypes.WholeNone:\n case DataTypes.Decimal:\n case DataTypes.Currency:\n case DataTypes.WholeDuration: {\n return new NumberProperty(this.getOptions(), onGetBinding);\n }\n case DataTypes.LookupSimple:\n case DataTypes.LookupOwner:\n case DataTypes.LookupCustomer:\n case DataTypes.LookupRegarding: {\n return new LookupProperty(this.getOptions(), onGetBinding);\n }\n case DataTypes.File:\n case DataTypes.Image: {\n return new FileProperty(this.getOptions(), onGetBinding)\n }\n default: {\n return new TextProperty(this.getOptions(), onGetBinding);\n }\n }\n }\n private _getPrimaryBindingName(): string {\n const primaryBinding = Object.entries(this.getOptions().onGetBindings()).find(([key, binding]) => !binding.isStatic)?.[0];\n if (!primaryBinding) {\n throw new Error('Control needs to have atleast one non-static binding!');\n }\n return primaryBinding;\n }\n private _getManifestPrimaryBinding(manifest: Manifest) {\n return [...manifest.control.properties.values()].find(prop => prop.isBindingProperty)!;\n }\n private async _getManifest(controlName: string) {\n return manifestCache.get(controlName, async () => {\n const result = await this.getOptions().parentPcfContext.webAPI.retrieveMultipleRecords('customcontrol', `?$select=name,manifest&$filter=name eq '${controlName}'`);\n const manifestXmlString = result.entities[0].manifest;\n return new Manifest(manifestXmlString);\n })\n }\n private _getCustomControlParameters(manifest: Manifest) {\n const result: { [name: string]: any } = {};\n const bindingParameters = this.getProps().parameters;\n const manifestProperties = [...manifest.control.properties.values()];\n manifestProperties.map(property => {\n result[property.name] = {\n Static: property.usage === 'input',\n Primary: property.isBindingProperty,\n //if no ofType is present, there is a type group and we need to get the type from the passed parameters above\n Type: property.ofType ?? bindingParameters[property.name]?.type ?? 'SingleLine.Text',\n //if static, we take the value that came from the parameter above\n Value: (() => {\n const binding = bindingParameters[property.name];\n if (binding) {\n return binding.raw;\n }\n if (property.usage === 'input') {\n return property.defaultValue;\n }\n if (property.isBindingProperty) {\n return bindingParameters[this._getPrimaryBindingName()].raw;\n }\n })(),\n Usage: (() => {\n switch (property.usage) {\n case 'bound': {\n return 3;\n }\n case 'input':\n case 'output': {\n return 0;\n }\n }\n })(),\n Attributes: (() => {\n const getBindingMetadata = (bindingName: string) => {\n const binding = this.getOptions().onGetBindings()[bindingName];\n return binding?.metadata ? {\n EntityLogicalName: binding.metadata.entityName,\n LogicalName: binding.metadata.attributeName\n } : undefined;\n };\n const propertyBindingMetadata = getBindingMetadata(property.name);\n\n if (propertyBindingMetadata) {\n return propertyBindingMetadata;\n }\n\n if (property.isBindingProperty) {\n return getBindingMetadata(this._getPrimaryBindingName());\n }\n\n return undefined;\n })(),\n Callback: (value: any) => {\n let binding = this.getOptions().onGetBindings()[property.name];\n let bindingName = property.name;\n if (!binding && !property.isBindingProperty) {\n return;\n }\n if (!binding) {\n bindingName = this._getPrimaryBindingName();\n binding = this.getOptions().onGetBindings()[bindingName]\n }\n binding.onNotifyOutputChanged?.(value);\n const boundBindings = Object.entries(this.getOptions().onGetBindings()).filter(([key, binding]) => !binding.isStatic);\n const outputs: any = {};\n boundBindings.map(([key, binding]) => {\n outputs[key] = key === bindingName ? value : this.getProps().parameters[bindingName].raw\n })\n this.getOptions().callbacks?.onNotifyOutputChanged?.(outputs)\n }\n }\n })\n const nonManifestParameters = Object.entries(bindingParameters).filter(([key, value]) => !manifest.control.properties.get(key));\n nonManifestParameters.map(([key, parameter]) => {\n result[key] = {\n Static: true,\n Primary: false,\n Type: parameter.type ?? 'SingleLine.Text',\n Value: parameter.raw,\n Usage: 0\n }\n })\n return result;\n }\n private _patchUpdateView(control: ComponentFramework.StandardControl<any, any>, manifest: Manifest) {\n if (this._hasControlBeenPatched) {\n return;\n }\n let originalContext: ComponentFramework.Context<any, any> | null = null;\n const originalUpdateView = control.updateView.bind(control);\n control.updateView = (context) => {\n if (!originalContext) {\n originalContext = context;\n }\n originalUpdateView(this._patchContext(manifest, originalContext));\n }\n this._hasControlBeenPatched = true;\n }\n private _patchContext(manifest: Manifest, originalContext: ComponentFramework.Context<any, any>) {\n const context = this.getProps().context;\n const contextParameters = originalContext.parameters;\n const parameters = this.getProps().parameters;\n const manifestBindingProperty = this._getManifestPrimaryBinding(manifest);\n const primaryBindingName = this._getPrimaryBindingName();\n context.resources = originalContext.resources;\n context.events = originalContext.events;\n context.parameters = {\n ...contextParameters,\n ...parameters,\n [manifestBindingProperty.name]: parameters[primaryBindingName]\n }\n\n return context;\n }\n private _getFluentDesignLanguage(fluentDesignLanguage?: IFluentDesignState): IFluentDesignState {\n const v8Theme = ControlTheme.GetV8ThemeFromFluentDesignLanguage(fluentDesignLanguage);\n return ControlTheme.GenerateFluentDesignLanguage(v8Theme.palette.themePrimary, v8Theme.semanticColors.bodyBackground, v8Theme.semanticColors.bodyText, {\n v8FluentOverrides: fluentDesignLanguage?.v8FluentOverrides,\n applicationTheme: fluentDesignLanguage?.applicationTheme ?? v8Theme\n })\n }\n}"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import React__default, { forwardRef, useRef, useImperativeHandle, useMemo, useEffect } from 'react';
2
+ import React, { forwardRef, useRef, useImperativeHandle, useMemo, useEffect } from 'react';
3
3
  import { NestedControl } from './NestedControl.js';
4
- import { GridCellRenderer } from '../GridCellRenderer/GridCellRenderer.js';
5
4
  import { getNestedControlStyles } from './styles.js';
6
5
  import { useRerender, Spinner } from '@talxis/react-components';
7
6
  import { MessageBar, MessageBarType, MessageBarButton, SpinnerSize, Shimmer } from '@fluentui/react';
8
7
  import ReactDOM from 'react-dom';
9
8
  import { getDefaultNestedControlRendererTranslations } from './translations.js';
9
+ import { GridCellRenderer } from '../GridCellRenderer/GridCellRenderer.js';
10
+ import { GridColumnHeader } from '../GridColumnHeader/GridColumnHeader.js';
10
11
  import { useControlLabels } from '../../hooks/useControlLabels.js';
11
12
  import { BaseControls } from '../../utils/BaseControls.js';
12
13
  import { Duration } from '../Duration/Duration.js';
@@ -15,8 +16,8 @@ import { DateTime } from '../DateTime/DateTime.js';
15
16
  import { TwoOptions } from '../TwoOptions/TwoOptions.js';
16
17
  import { MultiSelectOptionSet } from '../MultiSelectOptionSet/MultiSelectOptionSet.js';
17
18
  import { Lookup } from '../Lookup/Lookup.js';
18
- import { OptionSet } from '../OptionSet/OptionSet.js';
19
19
  import { TextField } from '../TextField/TextField.js';
20
+ import { OptionSet } from '../OptionSet/OptionSet.js';
20
21
 
21
22
  const NestedControlRenderer = (props) => {
22
23
  const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);
@@ -89,6 +90,9 @@ const NestedControlRenderer = (props) => {
89
90
  return Duration;
90
91
  case 'GridCellRenderer':
91
92
  return GridCellRenderer;
93
+ case 'GridColumnHeader': {
94
+ return GridColumnHeader;
95
+ }
92
96
  default:
93
97
  return GridCellRenderer;
94
98
  }
@@ -96,7 +100,7 @@ const NestedControlRenderer = (props) => {
96
100
  const onRender = (control, defaultRender) => {
97
101
  if (getRef().isBaseControl) {
98
102
  const controlProps = control.getProps();
99
- return ReactDOM.render(React__default.createElement(getBaseControl(), controlProps), control.getContainer());
103
+ return ReactDOM.render(React.createElement(getBaseControl(), controlProps), control.getContainer());
100
104
  }
101
105
  return defaultRender();
102
106
  };
@@ -136,7 +140,8 @@ const NestedControlRenderer = (props) => {
136
140
  },
137
141
  onUnmount: (control, defaultUnmount) => {
138
142
  getRef().componentProps.onOverrideUnmount(control, () => onUmount(control, defaultUnmount));
139
- }
143
+ },
144
+ onIsLoading: () => getRef().componentProps.onOverrideIsLoading?.()
140
145
  },
141
146
  });
142
147
  };
@@ -186,7 +191,7 @@ const InternalNestedControlRenderer = forwardRef((props, ref) => {
186
191
  }
187
192
  alert(errorMessage);
188
193
  };
189
- return (jsxs("div", { ...componentProps.rootContainerProps, children: [(!control || control.isLoading()) && jsx("div", { ...componentProps?.loadingProps?.containerProps, children: renderLoading() }), errorMessage &&
194
+ return (jsxs("div", { ...componentProps.rootContainerProps, children: [(!control || control.isLoading() || props.componentProps.onOverrideIsLoading?.()) && jsx("div", { ...componentProps?.loadingProps?.containerProps, children: renderLoading() }), errorMessage &&
190
195
  jsxs(MessageBar, { messageBarType: MessageBarType.error, isMultiline: false, actions: jsx("div", { children: jsx(MessageBarButton, { className: componentProps.messageBarProps.buttonProps.className, onClick: () => onShowErrorDialog(), children: labels.detail() }) }), ...componentProps?.messageBarProps, children: [labels.control(), " ", jsx("b", { children: parameters.ControlName }), " ", labels.failedToLoad(), "."] }), jsx("div", { ref: customControlContainerRef, style: errorMessage ? { display: 'none' } : undefined, ...componentProps.controlContainerProps })] }));
191
196
  });
192
197