@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 +1 @@
1
- {"version":3,"file":"NestedControlRenderer.js","sources":["../../../src/components/NestedControlRenderer/NestedControlRenderer.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport { NestedControl } from './NestedControl';\nimport { INestedControlRenderer, INestedControlRendererComponentProps, INestedControlRendererParameters } from './interfaces';\nimport { TextField } from '../TextField';\nimport { Decimal } from '../Decimal';\nimport { Duration } from '../Duration';\nimport { TwoOptions } from '../TwoOptions';\nimport { DateTime } from '../DateTime';\nimport { MultiSelectOptionSet } from '../MultiSelectOptionSet';\nimport { Lookup } from '../Lookup';\nimport { OptionSet } from '../OptionSet';\nimport { GridCellRenderer } from '../GridCellRenderer/GridCellRenderer';\nimport { BaseControls } from '../../utils';\nimport { getNestedControlStyles } from './styles';\nimport { Spinner, useRerender } from '@talxis/react-components';\nimport { MessageBar, MessageBarButton, MessageBarType, Shimmer, SpinnerSize } from '@fluentui/react';\nimport ReactDOM from 'react-dom';\nimport { useControlLabels } from '../../hooks';\nimport { getDefaultNestedControlRendererTranslations } from './translations';\n\ninterface IRef {\n control: NestedControl | null;\n props: INestedControlRenderer;\n controlName: string;\n componentProps: INestedControlRendererComponentProps;\n isBaseControl: boolean;\n mounted: boolean;\n controlContainer: HTMLDivElement | null;\n}\n\nexport const NestedControlRenderer = (props: INestedControlRenderer) => {\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n const labels = useControlLabels({\n translations: props.translations,\n languageId : props.context.userSettings.languageId,\n defaultTranslations: getDefaultNestedControlRendererTranslations()\n })\n const rerender = useRerender();\n const isBaseControl = useMemo(() => {\n return BaseControls.IsBaseControl(props.parameters.ControlName);\n }, [props.parameters.ControlName]);\n\n const styles = useMemo(() => getNestedControlStyles(isBaseControl), [isBaseControl]);\n const internalControlRendererRef = useRef<IInternalNestedControlRendererRef>(null);\n const ref = useRef<Partial<IRef>>();\n \n ref.current = {\n ...ref.current,\n props: props,\n isBaseControl: isBaseControl,\n controlName: props.parameters.ControlName \n }\n\n ref.current.componentProps = onOverrideComponentProps({\n rootContainerProps: {},\n controlContainerProps: {},\n messageBarProps: {\n //@ts-ignore - typescript\n messageBarType: MessageBarType.error,\n buttonProps: {\n className: styles.messageBarBtn\n }\n },\n loadingProps: {\n containerProps: {},\n spinnerProps: {\n size: SpinnerSize.xSmall\n },\n shimmerProps: {\n styles: {\n root: styles.shimmerRoot,\n shimmerWrapper: {\n height: 32\n }\n }\n },\n },\n onOverrideRender: (control, isCustomPcfComponent, defaultRender) => defaultRender(),\n onOverrideUnmount: (control, defaultUnmount) => defaultUnmount(),\n onOverrideControlProps: (props) => props,\n });\n\n const getRef = (): IRef => {\n return ref.current as any;\n }\n\n const getBaseControl = (): any => {\n switch (getRef().controlName) {\n case 'TextField':\n return TextField\n case 'OptionSet':\n return OptionSet;\n case 'Lookup':\n return Lookup;\n case 'MultiSelectOptionSet':\n return MultiSelectOptionSet;\n case 'TwoOptions':\n return TwoOptions;\n case 'DateTime':\n return DateTime;\n case 'Decimal':\n return Decimal;\n case 'Duration':\n return Duration;\n case 'GridCellRenderer':\n return GridCellRenderer;\n default:\n return GridCellRenderer;\n }\n };\n\n const onRender = (control: NestedControl, defaultRender: () => Promise<void>) => {\n if (getRef().isBaseControl) {\n const controlProps = control.getProps();\n return ReactDOM.render(React.createElement(getBaseControl(), controlProps), control.getContainer());\n }\n return defaultRender();\n }\n\n const onUmount = (control: NestedControl, defaultUnmount: () => void) => {\n if (control.isMountedPcfComponent()) {\n return defaultUnmount();\n }\n return ReactDOM.unmountComponentAtNode(control.getContainer())\n }\n\n const createControlInstance = () => {\n new NestedControl({\n parentPcfContext: getRef().props.context,\n onGetContainerElement: () => getRef().controlContainer!,\n onGetControlName: () => getRef().controlName,\n onGetBindings: () => {\n return getRef().props.parameters.Bindings ?? {};\n },\n callbacks: {\n //onInit could either by sync or async\n onInit: (instance) => {\n getRef().control = instance;\n //if we are already mounted, we need to rerender\n if (getRef().mounted) {\n rerender();\n }\n },\n onControlStateChanged: () => internalControlRendererRef.current?.rerender(),\n onGetControlStates: () => getRef().props.parameters.ControlStates,\n onNotifyOutputChanged: (outputs) => getRef().props.onNotifyOutputChanged?.(outputs)\n },\n overrides: {\n onGetProps: getRef().componentProps.onOverrideControlProps,\n onRender: (control: NestedControl, defaultRender) => {\n getRef().componentProps.onOverrideRender(control, !getRef().isBaseControl, () => {\n onRender(control, defaultRender);\n })\n },\n onUnmount: (control, defaultUnmount) => {\n getRef().componentProps.onOverrideUnmount(control, () => onUmount(control, defaultUnmount))\n }\n },\n })\n\n }\n useMemo(() => {\n createControlInstance();\n }, []);\n\n useEffect(() => {\n const ref = getRef();\n ref.mounted = true;\n ref.controlContainer = internalControlRendererRef.current!.getContainer();\n return () => {\n const ref = getRef();\n ref.control?.unmount();\n ref.controlContainer = null;\n ref.control = null;\n }\n }, []);\n\n useEffect(() => {\n getRef().control?.render();\n })\n\n return <InternalNestedControlRenderer\n ref={internalControlRendererRef}\n labels={labels}\n control={getRef().control ?? undefined}\n parameters={getRef().props.parameters}\n componentProps={getRef().componentProps} />\n}\n\ninterface IInternalNestedControlRendererProps {\n parameters: INestedControlRendererParameters;\n componentProps: INestedControlRendererComponentProps;\n labels: any;\n loadingType?: 'spinner' | 'shimmer';\n control?: NestedControl;\n\n}\n\ninterface IInternalNestedControlRendererRef {\n getContainer: () => HTMLDivElement;\n rerender: () => void;\n}\n\n\nconst InternalNestedControlRenderer = forwardRef<IInternalNestedControlRendererRef, IInternalNestedControlRendererProps>((props, ref) => {\n //once control is defined, it is initialized\n const { control, parameters, componentProps, labels } = props;\n const customControlContainerRef = useRef<HTMLDivElement>(null);\n const errorMessage = control?.getErrorMessage();\n const rerender = useRerender();\n\n useImperativeHandle(ref, () => {\n return {\n getContainer: () => customControlContainerRef.current!,\n rerender: () => rerender()\n }\n })\n\n const renderLoading = () => {\n if (parameters.LoadingType === 'shimmer') {\n return <Shimmer {...componentProps?.loadingProps?.shimmerProps} />\n }\n return <Spinner {...componentProps?.loadingProps?.spinnerProps} />\n }\n\n const onShowErrorDialog = () => {\n if(window.Xrm?.Navigation) {\n window.Xrm.Navigation.openErrorDialog({\n message: errorMessage\n })\n return;\n }\n alert(errorMessage);\n }\n\n return (\n <div {...componentProps.rootContainerProps}>\n {(!control || control.isLoading()) && <div {...componentProps?.loadingProps?.containerProps}>{renderLoading()}</div>\n }\n {errorMessage &&\n <MessageBar messageBarType={MessageBarType.error} isMultiline={false} actions={<div>\n <MessageBarButton className={componentProps.messageBarProps.buttonProps.className} onClick={() => onShowErrorDialog()}>{labels.detail()}</MessageBarButton>\n </div>} {...componentProps?.messageBarProps}>\n {labels.control()} <b>{parameters.ControlName}</b> {labels.failedToLoad()}.\n </MessageBar>\n }\n <div ref={customControlContainerRef} style={errorMessage ? {display: 'none'} : undefined} {...componentProps.controlContainerProps} />\n </div>)\n})\n"],"names":["React","_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"NestedControlRenderer.js","sources":["../../../src/components/NestedControlRenderer/NestedControlRenderer.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport { NestedControl } from './NestedControl';\nimport { INestedControlRenderer, INestedControlRendererComponentProps, INestedControlRendererParameters } from './interfaces';\nimport { TextField } from '../TextField';\nimport { Decimal } from '../Decimal';\nimport { Duration } from '../Duration';\nimport { TwoOptions } from '../TwoOptions';\nimport { DateTime } from '../DateTime';\nimport { MultiSelectOptionSet } from '../MultiSelectOptionSet';\nimport { Lookup } from '../Lookup';\nimport { OptionSet } from '../OptionSet';\nimport { BaseControls } from '../../utils';\nimport { getNestedControlStyles } from './styles';\nimport { Spinner, useRerender } from '@talxis/react-components';\nimport { MessageBar, MessageBarButton, MessageBarType, Shimmer, SpinnerSize } from '@fluentui/react';\nimport ReactDOM from 'react-dom';\nimport { useControlLabels } from '../../hooks';\nimport { getDefaultNestedControlRendererTranslations } from './translations';\nimport { GridCellRenderer } from '../GridCellRenderer/GridCellRenderer';\nimport { GridColumnHeader } from '../GridColumnHeader/GridColumnHeader';\n\ninterface IRef {\n control: NestedControl | null;\n props: INestedControlRenderer;\n controlName: string;\n componentProps: INestedControlRendererComponentProps;\n isBaseControl: boolean;\n mounted: boolean;\n controlContainer: HTMLDivElement | null;\n}\n\nexport const NestedControlRenderer = (props: INestedControlRenderer) => {\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n const labels = useControlLabels({\n translations: props.translations,\n languageId : props.context.userSettings.languageId,\n defaultTranslations: getDefaultNestedControlRendererTranslations()\n })\n const rerender = useRerender();\n const isBaseControl = useMemo(() => {\n return BaseControls.IsBaseControl(props.parameters.ControlName);\n }, [props.parameters.ControlName]);\n\n const styles = useMemo(() => getNestedControlStyles(isBaseControl), [isBaseControl]);\n const internalControlRendererRef = useRef<IInternalNestedControlRendererRef>(null);\n const ref = useRef<Partial<IRef>>();\n \n ref.current = {\n ...ref.current,\n props: props,\n isBaseControl: isBaseControl,\n controlName: props.parameters.ControlName \n }\n\n ref.current.componentProps = onOverrideComponentProps({\n rootContainerProps: {},\n controlContainerProps: {},\n messageBarProps: {\n //@ts-ignore - typescript\n messageBarType: MessageBarType.error,\n buttonProps: {\n className: styles.messageBarBtn\n }\n },\n loadingProps: {\n containerProps: {},\n spinnerProps: {\n size: SpinnerSize.xSmall\n },\n shimmerProps: {\n styles: {\n root: styles.shimmerRoot,\n shimmerWrapper: {\n height: 32\n }\n }\n },\n },\n onOverrideRender: (control, isCustomPcfComponent, defaultRender) => defaultRender(),\n onOverrideUnmount: (control, defaultUnmount) => defaultUnmount(),\n onOverrideControlProps: (props) => props,\n });\n\n const getRef = (): IRef => {\n return ref.current as any;\n }\n\n const getBaseControl = (): any => {\n switch (getRef().controlName) {\n case 'TextField':\n return TextField\n case 'OptionSet':\n return OptionSet;\n case 'Lookup':\n return Lookup;\n case 'MultiSelectOptionSet':\n return MultiSelectOptionSet;\n case 'TwoOptions':\n return TwoOptions;\n case 'DateTime':\n return DateTime;\n case 'Decimal':\n return Decimal;\n case 'Duration':\n return Duration;\n case 'GridCellRenderer':\n return GridCellRenderer;\n case 'GridColumnHeader': {\n return GridColumnHeader;\n }\n default:\n return GridCellRenderer;\n }\n };\n\n const onRender = (control: NestedControl, defaultRender: () => Promise<void>) => {\n if (getRef().isBaseControl) {\n const controlProps = control.getProps();\n return ReactDOM.render(React.createElement(getBaseControl(), controlProps), control.getContainer());\n }\n return defaultRender();\n }\n\n const onUmount = (control: NestedControl, defaultUnmount: () => void) => {\n if (control.isMountedPcfComponent()) {\n return defaultUnmount();\n }\n return ReactDOM.unmountComponentAtNode(control.getContainer())\n }\n\n const createControlInstance = () => {\n new NestedControl({\n parentPcfContext: getRef().props.context,\n onGetContainerElement: () => getRef().controlContainer!,\n onGetControlName: () => getRef().controlName,\n onGetBindings: () => {\n return getRef().props.parameters.Bindings ?? {};\n },\n callbacks: {\n //onInit could either by sync or async\n onInit: (instance) => {\n getRef().control = instance;\n //if we are already mounted, we need to rerender\n if (getRef().mounted) {\n rerender();\n }\n },\n onControlStateChanged: () => internalControlRendererRef.current?.rerender(),\n onGetControlStates: () => getRef().props.parameters.ControlStates,\n onNotifyOutputChanged: (outputs) => getRef().props.onNotifyOutputChanged?.(outputs)\n },\n overrides: {\n onGetProps: getRef().componentProps.onOverrideControlProps,\n onRender: (control: NestedControl, defaultRender) => {\n getRef().componentProps.onOverrideRender(control, !getRef().isBaseControl, () => {\n onRender(control, defaultRender);\n })\n },\n onUnmount: (control, defaultUnmount) => {\n getRef().componentProps.onOverrideUnmount(control, () => onUmount(control, defaultUnmount))\n },\n onIsLoading: () => getRef().componentProps.onOverrideIsLoading?.()\n },\n })\n\n }\n useMemo(() => {\n createControlInstance();\n }, []);\n\n useEffect(() => {\n const ref = getRef();\n ref.mounted = true;\n ref.controlContainer = internalControlRendererRef.current!.getContainer();\n return () => {\n const ref = getRef();\n ref.control?.unmount();\n ref.controlContainer = null;\n ref.control = null;\n }\n }, []);\n\n useEffect(() => {\n getRef().control?.render();\n })\n\n return <InternalNestedControlRenderer\n ref={internalControlRendererRef}\n labels={labels}\n control={getRef().control ?? undefined}\n parameters={getRef().props.parameters}\n componentProps={getRef().componentProps} />\n}\n\ninterface IInternalNestedControlRendererProps {\n parameters: INestedControlRendererParameters;\n componentProps: INestedControlRendererComponentProps;\n labels: any;\n loadingType?: 'spinner' | 'shimmer';\n control?: NestedControl;\n\n}\n\ninterface IInternalNestedControlRendererRef {\n getContainer: () => HTMLDivElement;\n rerender: () => void;\n}\n\n\nconst InternalNestedControlRenderer = forwardRef<IInternalNestedControlRendererRef, IInternalNestedControlRendererProps>((props, ref) => {\n //once control is defined, it is initialized\n const { control, parameters, componentProps, labels } = props;\n const customControlContainerRef = useRef<HTMLDivElement>(null);\n const errorMessage = control?.getErrorMessage();\n const rerender = useRerender();\n\n useImperativeHandle(ref, () => {\n return {\n getContainer: () => customControlContainerRef.current!,\n rerender: () => rerender()\n }\n })\n\n const renderLoading = () => {\n if (parameters.LoadingType === 'shimmer') {\n return <Shimmer {...componentProps?.loadingProps?.shimmerProps} />\n }\n return <Spinner {...componentProps?.loadingProps?.spinnerProps} />\n }\n\n const onShowErrorDialog = () => {\n if(window.Xrm?.Navigation) {\n window.Xrm.Navigation.openErrorDialog({\n message: errorMessage\n })\n return;\n }\n alert(errorMessage);\n }\n\n return (\n <div {...componentProps.rootContainerProps}>\n {(!control || control.isLoading() || props.componentProps.onOverrideIsLoading?.()) && <div {...componentProps?.loadingProps?.containerProps}>{renderLoading()}</div>\n }\n {errorMessage &&\n <MessageBar messageBarType={MessageBarType.error} isMultiline={false} actions={<div>\n <MessageBarButton className={componentProps.messageBarProps.buttonProps.className} onClick={() => onShowErrorDialog()}>{labels.detail()}</MessageBarButton>\n </div>} {...componentProps?.messageBarProps}>\n {labels.control()} <b>{parameters.ControlName}</b> {labels.failedToLoad()}.\n </MessageBar>\n }\n <div ref={customControlContainerRef} style={errorMessage ? {display: 'none'} : undefined} {...componentProps.controlContainerProps} />\n </div>)\n})\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -64,6 +64,10 @@ export interface INestedControlRendererComponentProps {
64
64
  * Callback function that allows you to override the default control unmount behavior.
65
65
  */
66
66
  onOverrideUnmount: (control: NestedControl, defaultUnmount: () => void) => void;
67
+ /**
68
+ * Can be used to override the loading state of the control.
69
+ */
70
+ onOverrideIsLoading: () => boolean;
67
71
  }
68
72
  export interface IBinding {
69
73
  /**
@@ -5,7 +5,7 @@ class FileProperty extends Property {
5
5
  const value = this.getValue();
6
6
  return {
7
7
  raw: value,
8
- formatted: this.getFormattedValue() ?? ''
8
+ formatted: this.getFormattedValue()
9
9
  };
10
10
  }
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FileProperty.js","sources":["../../../../src/components/NestedControlRenderer/properties/FileProperty.ts"],"sourcesContent":["import { FieldValue } from \"@talxis/client-libraries\";\nimport { Property } from \"./Property\";\nimport { IFileProperty } from \"../../../interfaces\";\n\nexport class FileProperty extends Property {\n public getParameter(): IFileProperty {\n const value = this.getValue();\n return {\n raw: value,\n formatted: this.getFormattedValue() ?? ''\n }\n }\n}"],"names":[],"mappings":";;AAIM,MAAO,YAAa,SAAQ,QAAQ,CAAA;IAC/B,YAAY,GAAA;AACf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO;AACH,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE;SAC5C,CAAA;KACJ;AACJ;;;;"}
1
+ {"version":3,"file":"FileProperty.js","sources":["../../../../src/components/NestedControlRenderer/properties/FileProperty.ts"],"sourcesContent":["import { Property } from \"./Property\";\nimport { IFileProperty } from \"../../../interfaces\";\n\nexport class FileProperty extends Property {\n public getParameter(): IFileProperty {\n const value = this.getValue();\n return {\n raw: value,\n formatted: this.getFormattedValue()\n }\n }\n}"],"names":[],"mappings":";;AAGM,MAAO,YAAa,SAAQ,QAAQ,CAAA;IAC/B,YAAY,GAAA;AACf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO;AACH,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE;SACtC,CAAA;KACJ;AACJ;;;;"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="@types/powerapps-component-framework" />
2
+ /// <reference types="powerapps-component-framework" />
2
3
  import { IOptions } from "../NestedControl";
3
4
  import { IBinding } from "../interfaces";
4
5
  export declare abstract class Property {
@@ -16,6 +16,7 @@ const OptionSet = (props) => {
16
16
  const boundValue = parameters.value;
17
17
  const { Options } = parameters.value.attributes;
18
18
  const context = props.context;
19
+ const applicationTheme = props.context.fluentDesignLanguage?.applicationTheme;
19
20
  const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);
20
21
  const comboBoxOptions = Options.map(option => ({
21
22
  key: option.Value.toString(),
@@ -45,10 +46,10 @@ const OptionSet = (props) => {
45
46
  useComboBoxAsMenuWidth: true,
46
47
  hideErrorMessage: !parameters.ShowErrorMessage?.raw,
47
48
  styles: { root: styles.root, callout: styles.callout },
48
- onRenderContainer: (containerProps, defaultRender) => jsx(ThemeProvider, { theme: props.context.fluentDesignLanguage?.applicationTheme, children: defaultRender?.(containerProps) }),
49
- calloutProps: {
50
- theme: props.context.fluentDesignLanguage?.applicationTheme
51
- },
49
+ onRenderContainer: (containerProps, defaultRender) => jsx(ThemeProvider, { theme: applicationTheme, children: defaultRender?.(containerProps) }),
50
+ calloutProps: applicationTheme ? {
51
+ theme: applicationTheme
52
+ } : undefined,
52
53
  ...(parameters.EnableCopyButton?.raw === true && {
53
54
  clickToCopyProps: {
54
55
  key: 'copy',
@@ -1 +1 @@
1
- {"version":3,"file":"OptionSet.js","sources":["../../../src/components/OptionSet/OptionSet.tsx"],"sourcesContent":["\nimport { IOptionSet } 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 { useComboBoxTheme } from './useComboBoxTheme';\nimport { getComboBoxStyles } from './styles';\nimport { onRenderColorfulOption } from './shared';\n\n\nexport const OptionSet = (props: IOptionSet) => {\n const componentRef = useRef<IComboBox>(null);\n const { sizing, onNotifyOutputChanged, theme } = useControl('OptionSet', props);\n const styles = useMemo(() => getComboBoxStyles(sizing.width, sizing.height), [sizing.width, sizing.height]);\n const [colorFeatureEnabled, overridenTheme] = useComboBoxTheme(props, theme);\n const parameters = props.parameters;\n const boundValue = parameters.value;\n const { Options } = parameters.value.attributes;\n const context = props.context;\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n\n const comboBoxOptions: IComboBoxOption[] = Options.map(option => ({\n key: option.Value.toString(),\n text: option.Label,\n title: option.Label\n }));\n\n useEffect(() => {\n if (parameters.AutoFocus?.raw) {\n componentRef.current?.focus(true);\n }\n }, []);\n\n const handleChange = (option?: IComboBoxOption | null): void => {\n let value = undefined;\n if (option) {\n value = parseInt(option.key as string);\n }\n onNotifyOutputChanged({\n value: value\n });\n };\n\n const componentProps = onOverrideComponentProps({\n componentRef: componentRef,\n options: comboBoxOptions,\n readOnly: context.mode.isControlDisabled,\n selectedKey: boundValue.raw?.toString() ?? null,\n errorMessage: boundValue.errorMessage,\n useComboBoxAsMenuWidth: true,\n hideErrorMessage: !parameters.ShowErrorMessage?.raw,\n styles: { root: styles.root, callout: styles.callout },\n onRenderContainer: (containerProps, defaultRender) => <ThemeProvider theme={props.context.fluentDesignLanguage?.applicationTheme}>{defaultRender?.(containerProps)}</ThemeProvider>,\n calloutProps: {\n theme: props.context.fluentDesignLanguage?.applicationTheme\n },\n ...(parameters.EnableCopyButton?.raw === true && {\n clickToCopyProps: {\n key: 'copy',\n showOnlyOnHover: true,\n iconProps: {\n iconName: 'Copy',\n },\n },\n }),\n ...(parameters.EnableDeleteButton?.raw === true && {\n deleteButtonProps: {\n key: 'delete',\n showOnlyOnHover: true,\n iconProps: {\n iconName: 'Cancel',\n },\n onClick: (e, value) => {\n handleChange(null);\n },\n },\n }),\n onChange: (e, option) => handleChange(option),\n onRenderOption: colorFeatureEnabled ? (option) => onRenderColorfulOption(Options, option, theme) : undefined,\n });\n\n return (\n <ThemeProvider theme={overridenTheme} applyTo=\"none\">\n <ComboBox\n {...componentProps} />\n </ThemeProvider>);\n};"],"names":["_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"OptionSet.js","sources":["../../../src/components/OptionSet/OptionSet.tsx"],"sourcesContent":["\nimport { IOptionSet } 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 { useComboBoxTheme } from './useComboBoxTheme';\nimport { getComboBoxStyles } from './styles';\nimport { onRenderColorfulOption } from './shared';\n\n\nexport const OptionSet = (props: IOptionSet) => {\n const componentRef = useRef<IComboBox>(null);\n const { sizing, onNotifyOutputChanged, theme } = useControl('OptionSet', props);\n const styles = useMemo(() => getComboBoxStyles(sizing.width, sizing.height), [sizing.width, sizing.height]);\n const [colorFeatureEnabled, overridenTheme] = useComboBoxTheme(props, theme);\n const parameters = props.parameters;\n const boundValue = parameters.value;\n const { Options } = parameters.value.attributes;\n const context = props.context;\n const applicationTheme = props.context.fluentDesignLanguage?.applicationTheme;\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n\n const comboBoxOptions: IComboBoxOption[] = Options.map(option => ({\n key: option.Value.toString(),\n text: option.Label,\n title: option.Label\n }));\n\n useEffect(() => {\n if (parameters.AutoFocus?.raw) {\n componentRef.current?.focus(true);\n }\n }, []);\n\n const handleChange = (option?: IComboBoxOption | null): void => {\n let value = undefined;\n if (option) {\n value = parseInt(option.key as string);\n }\n onNotifyOutputChanged({\n value: value\n });\n };\n\n const componentProps = onOverrideComponentProps({\n componentRef: componentRef,\n options: comboBoxOptions,\n readOnly: context.mode.isControlDisabled,\n selectedKey: boundValue.raw?.toString() ?? null,\n errorMessage: boundValue.errorMessage,\n useComboBoxAsMenuWidth: true,\n hideErrorMessage: !parameters.ShowErrorMessage?.raw,\n styles: { root: styles.root, callout: styles.callout },\n onRenderContainer: (containerProps, defaultRender) => <ThemeProvider theme={applicationTheme}>{defaultRender?.(containerProps)}</ThemeProvider>,\n calloutProps: applicationTheme ? {\n theme: applicationTheme\n } : undefined,\n ...(parameters.EnableCopyButton?.raw === true && {\n clickToCopyProps: {\n key: 'copy',\n showOnlyOnHover: true,\n iconProps: {\n iconName: 'Copy',\n },\n },\n }),\n ...(parameters.EnableDeleteButton?.raw === true && {\n deleteButtonProps: {\n key: 'delete',\n showOnlyOnHover: true,\n iconProps: {\n iconName: 'Cancel',\n },\n onClick: (e, value) => {\n handleChange(null);\n },\n },\n }),\n onChange: (e, option) => handleChange(option),\n onRenderOption: colorFeatureEnabled ? (option) => onRenderColorfulOption(Options, option, theme) : undefined,\n });\n\n return (\n <ThemeProvider theme={overridenTheme} applyTo=\"none\">\n <ComboBox\n {...componentProps} />\n </ThemeProvider>);\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
  /// <reference types="react" />
3
4
  import { IComboBoxOption, ITheme } from "@fluentui/react";
4
5
  export declare const onRenderColorfulOption: (options: ComponentFramework.PropertyHelper.OptionMetadata[], option: IComboBoxOption | undefined, theme: ITheme) => JSX.Element | null;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { IRibbon } from "./interfaces";
3
+ export declare const Ribbon: (props: IRibbon) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
@@ -0,0 +1,97 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useRerender, CommandBar } from '@talxis/react-components';
3
+ import { useMemo } from 'react';
4
+ import { getRibbonStyles } from './styles.js';
5
+ import { Shimmer } from '@fluentui/react';
6
+ import { useControl } from '../../hooks/useControl.js';
7
+
8
+ const fluentIconMap = {
9
+ 'Activate': 'ActivateOrders',
10
+ 'DeActivate': 'DeactivateOrders',
11
+ 'ExportToExcel': 'ExcelDocument',
12
+ 'ConnectionToOther': 'Assign',
13
+ 'EmailLink': 'Link',
14
+ 'Flows': 'Dataflows',
15
+ 'RunReport': 'CRMReport',
16
+ 'Report': 'CRMReport',
17
+ 'Remove': 'Delete',
18
+ 'WordTemplates': 'WordDocument',
19
+ 'DocumentTemplates': 'ExcelDocument',
20
+ 'New': 'Add',
21
+ };
22
+ const Ribbon = (props) => {
23
+ useControl('Ribbon', props, {});
24
+ const isDisabled = props.context.mode.isControlDisabled;
25
+ const commands = props.parameters.Commands?.raw ?? [];
26
+ const isLoading = props.parameters.Loading?.raw ?? false;
27
+ const styles = useMemo(() => getRibbonStyles(), []);
28
+ const pendingActionsSet = useMemo(() => new Set(), []);
29
+ const rerender = useRerender();
30
+ const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);
31
+ const componentProps = onOverrideComponentProps({
32
+ onRenderCommandBar: (props, defaultRender) => defaultRender(props),
33
+ onRenderLoading: (props, defaultRender) => defaultRender(props)
34
+ });
35
+ const onCommandClick = async (command) => {
36
+ pendingActionsSet.add(command.commandId);
37
+ rerender();
38
+ try {
39
+ await command.execute();
40
+ }
41
+ catch (err) {
42
+ console.error(err);
43
+ }
44
+ finally {
45
+ pendingActionsSet.delete(command.commandId);
46
+ rerender();
47
+ }
48
+ };
49
+ const getCommandBarItems = () => {
50
+ const result = [];
51
+ commands.map(command => {
52
+ if (!command.shouldBeVisible) {
53
+ return;
54
+ }
55
+ let iconName = command.icon;
56
+ if (fluentIconMap[iconName]) {
57
+ iconName = fluentIconMap[iconName];
58
+ }
59
+ result.push({
60
+ key: command.commandId,
61
+ text: command.label,
62
+ disabled: !command.canExecute || pendingActionsSet.has(command.commandId) || isDisabled,
63
+ ["data-id"]: command?.commandButtonId,
64
+ ["data-command"]: command?.commandId,
65
+ title: command?.tooltip,
66
+ iconProps: {
67
+ iconName: iconName
68
+ },
69
+ onClick: () => { onCommandClick(command); },
70
+ //TODO: svg support
71
+ //onRenderIcon: iconName?.includes('svg') ? () => <Icon name={iconName} /> : undefined,
72
+ });
73
+ });
74
+ return result;
75
+ };
76
+ if (isLoading) {
77
+ return componentProps.onRenderLoading({
78
+ styles: {
79
+ root: styles.shimmerRoot,
80
+ shimmerWrapper: styles.shimmerWrapper
81
+ }
82
+ }, (props) => {
83
+ return jsx(Shimmer, { ...props });
84
+ });
85
+ }
86
+ else {
87
+ return componentProps.onRenderCommandBar({
88
+ className: styles.ribbonRoot,
89
+ items: getCommandBarItems(),
90
+ }, (props) => {
91
+ return jsx(CommandBar, { ...props });
92
+ });
93
+ }
94
+ };
95
+
96
+ export { Ribbon };
97
+ //# sourceMappingURL=Ribbon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ribbon.js","sources":["../../../src/components/Ribbon/Ribbon.tsx"],"sourcesContent":["import { CommandBar, ICommandBarItemProps, useRerender } from \"@talxis/react-components\";\nimport { useControl } from \"../../hooks\"\nimport { IRibbon } from \"./interfaces\"\nimport { useMemo } from \"react\";\nimport { getRibbonStyles } from \"./styles\";\nimport { ICommand } from \"@talxis/client-libraries\";\nimport { Shimmer } from \"@fluentui/react\";\n\nconst fluentIconMap: { [key: string]: string } = {\n 'Activate': 'ActivateOrders',\n 'DeActivate': 'DeactivateOrders',\n 'ExportToExcel': 'ExcelDocument',\n 'ConnectionToOther': 'Assign',\n 'EmailLink': 'Link',\n 'Flows': 'Dataflows',\n 'RunReport': 'CRMReport',\n 'Report': 'CRMReport',\n 'Remove': 'Delete',\n 'WordTemplates': 'WordDocument',\n 'DocumentTemplates': 'ExcelDocument',\n 'New': 'Add',\n}\n\nexport const Ribbon = (props: IRibbon) => {\n const { className } = useControl('Ribbon', props, {});\n const isDisabled = props.context.mode.isControlDisabled;\n const commands = props.parameters.Commands?.raw ?? [];\n const isLoading = props.parameters.Loading?.raw ?? false;\n const styles = useMemo(() => getRibbonStyles(), []);\n const pendingActionsSet = useMemo(() => new Set<string>(), []);\n const rerender = useRerender();\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n const componentProps = onOverrideComponentProps({\n onRenderCommandBar: (props, defaultRender) => defaultRender(props),\n onRenderLoading: (props, defaultRender) => defaultRender(props)\n })\n\n const onCommandClick = async (command: ICommand) => {\n pendingActionsSet.add(command.commandId);\n rerender();\n try {\n await command.execute();\n }\n catch (err) {\n console.error(err);\n }\n finally {\n pendingActionsSet.delete(command.commandId);\n rerender();\n }\n }\n\n const getCommandBarItems = (): ICommandBarItemProps[] => {\n const result: ICommandBarItemProps[] = [];\n commands.map(command => {\n if (!command.shouldBeVisible) {\n return;\n }\n let iconName = command.icon;\n if (fluentIconMap[iconName]) {\n iconName = fluentIconMap[iconName];\n }\n result.push({\n key: command.commandId,\n text: command.label,\n disabled: !command.canExecute || pendingActionsSet.has(command.commandId) || isDisabled,\n [\"data-id\"]: command?.commandButtonId,\n [\"data-command\"]: command?.commandId,\n title: command?.tooltip,\n iconProps: {\n iconName: iconName\n },\n onClick: () => { onCommandClick(command) },\n //TODO: svg support\n //onRenderIcon: iconName?.includes('svg') ? () => <Icon name={iconName} /> : undefined,\n })\n })\n return result;\n }\n\n if (isLoading) {\n return componentProps.onRenderLoading({\n styles: {\n root: styles.shimmerRoot,\n shimmerWrapper: styles.shimmerWrapper\n }\n }, (props) => {\n return <Shimmer {...props} />\n })\n }\n else {\n return componentProps.onRenderCommandBar({\n className: styles.ribbonRoot,\n items: getCommandBarItems(),\n }, (props) => {\n return <CommandBar {...props} />\n })\n }\n\n}"],"names":["_jsx"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare class RibbonModel {
2
+ getIconUrl(iconName: string): string;
3
+ getIconType(iconName: string): 'url' | 'fluent';
4
+ }
@@ -0,0 +1,19 @@
1
+ /// <reference types="react" />
2
+ import { ICommand } from "@talxis/client-libraries";
3
+ import { IControl } from "../../interfaces/context";
4
+ import { ICommandBarProps } from "@talxis/react-components";
5
+ import { ITwoOptionsProperty } from "../../interfaces";
6
+ import { IShimmerProps } from "@fluentui/react";
7
+ export interface IRibbon extends IControl<IRibbonParameters, any, any, IRibbonComponentProps> {
8
+ }
9
+ export interface IRibbonParameters {
10
+ Commands: {
11
+ raw: ICommand[];
12
+ };
13
+ Loading: Omit<ITwoOptionsProperty, 'attributes'>;
14
+ }
15
+ interface IRibbonComponentProps {
16
+ onRenderLoading: (props: IShimmerProps, defaultRender: (props: IShimmerProps) => React.ReactElement) => React.ReactElement;
17
+ onRenderCommandBar: (props: ICommandBarProps, defaultRender: (props: ICommandBarProps) => React.ReactElement) => React.ReactElement;
18
+ }
19
+ export {};
@@ -0,0 +1,11 @@
1
+ export declare const getRibbonStyles: () => import("@fluentui/react").IProcessedStyleSet<{
2
+ ribbonRoot: {
3
+ flex: number;
4
+ };
5
+ shimmerRoot: {
6
+ width: string;
7
+ };
8
+ shimmerWrapper: {
9
+ height: number;
10
+ };
11
+ }>;
@@ -0,0 +1,18 @@
1
+ import { mergeStyleSets } from '@fluentui/react';
2
+
3
+ const getRibbonStyles = () => {
4
+ return mergeStyleSets({
5
+ ribbonRoot: {
6
+ flex: 1
7
+ },
8
+ shimmerRoot: {
9
+ width: '100%',
10
+ },
11
+ shimmerWrapper: {
12
+ height: 44
13
+ }
14
+ });
15
+ };
16
+
17
+ export { getRibbonStyles };
18
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sources":["../../../src/components/Ribbon/styles.ts"],"sourcesContent":["import { mergeStyleSets } from \"@fluentui/react\"\n\nexport const getRibbonStyles = () => {\n return mergeStyleSets({\n ribbonRoot: {\n flex: 1\n },\n shimmerRoot: {\n width: '100%',\n },\n shimmerWrapper: {\n height: 44\n }\n })\n}"],"names":[],"mappings":";;AAEO,MAAM,eAAe,GAAG,MAAK;AAChC,IAAA,OAAO,cAAc,CAAC;AAClB,QAAA,UAAU,EAAE;AACR,YAAA,IAAI,EAAE,CAAC;AACV,SAAA;AACD,QAAA,WAAW,EAAE;AACT,YAAA,KAAK,EAAE,MAAM;AAChB,SAAA;AACD,QAAA,cAAc,EAAE;AACZ,YAAA,MAAM,EAAE,EAAE;AACb,SAAA;AACJ,KAAA,CAAC,CAAA;AACN;;;;"}
@@ -113,7 +113,7 @@ const TextField = (props) => {
113
113
  setValue(value);
114
114
  }
115
115
  });
116
- return (jsx(ThemeProvider, { style: isTextArea ? { height: '100%' } : undefined, applyTo: "none", theme: theme, children: jsx(TextField$1, { ...componentProps }) }));
116
+ return (jsx(ThemeProvider, { applyTo: "none", theme: theme, children: jsx(TextField$1, { ...componentProps }) }));
117
117
  };
118
118
 
119
119
  export { TextField };
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.js","sources":["../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import { TextField as TextFieldBase } from \"@talxis/react-components\";\nimport { useInputBasedControl } from '../../hooks/useInputBasedControl';\nimport { ITextField, ITextFieldOutputs, ITextFieldParameters } from './interfaces';\nimport { ICommandBarItemProps, ThemeProvider } from '@fluentui/react';\nimport { DataTypes } from \"@talxis/client-libraries\";\nimport { NestedControlRenderer } from \"../NestedControlRenderer/NestedControlRenderer\";\n\nexport const TextField = (props: ITextField) => {\n const context = props.context;\n const parameters = props.parameters;\n const boundValue = parameters.value;\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n const { value, sizing, theme, setValue, onNotifyOutputChanged } = useInputBasedControl<string | undefined, ITextFieldParameters, ITextFieldOutputs, any>('TextField', props);\n\n const getInputType = () => {\n switch (boundValue.type) {\n case 'SingleLine.Email': {\n return 'email';\n }\n case 'SingleLine.URL': {\n return 'url';\n }\n case 'SingleLine.Phone': {\n return 'tel';\n }\n }\n return \"text\";\n }\n const getSuffixItems = (): ICommandBarItemProps[] | undefined => {\n if (parameters.EnableTypeSuffix?.raw === false) {\n return undefined;\n }\n const disabled = boundValue.error || !boundValue.raw\n switch (boundValue.type) {\n case 'SingleLine.Email': {\n return [{\n key: 'sendMail',\n disabled: disabled,\n iconProps: {\n iconName: 'Mail'\n },\n href: `mailto:${boundValue.raw}`\n }]\n }\n case 'SingleLine.Phone': {\n return [{\n key: 'call',\n disabled: disabled,\n iconProps: {\n iconName: 'Phone'\n },\n href: `tel:${boundValue.raw}`\n }]\n }\n case 'SingleLine.URL': {\n return [{\n key: 'goToPage',\n disabled: disabled,\n iconProps: {\n iconName: 'Globe'\n },\n target: '_blank',\n href: boundValue.raw!\n }]\n }\n }\n return undefined;\n }\n\n const isTextArea = (() => {\n switch(parameters.value.type) {\n case DataTypes.Multiple:\n case DataTypes.SingleLineTextArea: {\n return true;\n }\n }\n return false;\n })()\n\n const componentProps = onOverrideComponentProps({\n readOnly: context.mode.isControlDisabled,\n resizable: false,\n type: getInputType(),\n multiline: isTextArea,\n autoFocus: parameters.AutoFocus?.raw,\n styles: {\n fieldGroup: {\n height: sizing.height,\n width: sizing.width\n }\n },\n errorMessage: boundValue.errorMessage,\n hideErrorMessage: !parameters.ShowErrorMessage?.raw,\n suffixItems: getSuffixItems(),\n deleteButtonProps: parameters.EnableDeleteButton?.raw === true ? {\n key: 'delete',\n showOnlyOnHover: true,\n iconProps: {\n iconName: 'Cancel'\n },\n onClick: () => setValue(undefined)\n } : undefined,\n clickToCopyProps: parameters.EnableCopyButton?.raw === true ? {\n key: 'copy',\n showOnlyOnHover: true,\n iconProps: {\n iconName: 'Copy'\n }\n } : undefined,\n value: value ?? \"\",\n onBlur: () => {\n onNotifyOutputChanged({\n value: value ?? undefined\n });\n },\n onChange: (e, value) => {\n setValue(value);\n }\n })\n return (\n <ThemeProvider style={isTextArea ? { height: '100%' } : undefined} applyTo=\"none\" theme={theme}>\n <TextFieldBase {...componentProps} />\n </ThemeProvider>\n );\n};"],"names":["_jsx","TextFieldBase"],"mappings":"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"}
1
+ {"version":3,"file":"TextField.js","sources":["../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import { TextField as TextFieldBase } from \"@talxis/react-components\";\nimport { useInputBasedControl } from '../../hooks/useInputBasedControl';\nimport { ITextField, ITextFieldOutputs, ITextFieldParameters } from './interfaces';\nimport { ICommandBarItemProps, ThemeProvider } from '@fluentui/react';\nimport { DataTypes } from \"@talxis/client-libraries\";\n\nexport const TextField = (props: ITextField) => {\n const context = props.context;\n const parameters = props.parameters;\n const boundValue = parameters.value;\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n const { value, sizing, theme, setValue, onNotifyOutputChanged } = useInputBasedControl<string | undefined, ITextFieldParameters, ITextFieldOutputs, any>('TextField', props);\n\n const getInputType = () => {\n switch (boundValue.type) {\n case 'SingleLine.Email': {\n return 'email';\n }\n case 'SingleLine.URL': {\n return 'url';\n }\n case 'SingleLine.Phone': {\n return 'tel';\n }\n }\n return \"text\";\n }\n const getSuffixItems = (): ICommandBarItemProps[] | undefined => {\n if (parameters.EnableTypeSuffix?.raw === false) {\n return undefined;\n }\n const disabled = boundValue.error || !boundValue.raw\n switch (boundValue.type) {\n case 'SingleLine.Email': {\n return [{\n key: 'sendMail',\n disabled: disabled,\n iconProps: {\n iconName: 'Mail'\n },\n href: `mailto:${boundValue.raw}`\n }]\n }\n case 'SingleLine.Phone': {\n return [{\n key: 'call',\n disabled: disabled,\n iconProps: {\n iconName: 'Phone'\n },\n href: `tel:${boundValue.raw}`\n }]\n }\n case 'SingleLine.URL': {\n return [{\n key: 'goToPage',\n disabled: disabled,\n iconProps: {\n iconName: 'Globe'\n },\n target: '_blank',\n href: boundValue.raw!\n }]\n }\n }\n return undefined;\n }\n\n const isTextArea = (() => {\n switch(parameters.value.type) {\n case DataTypes.Multiple:\n case DataTypes.SingleLineTextArea: {\n return true;\n }\n }\n return false;\n })()\n\n const componentProps = onOverrideComponentProps({\n readOnly: context.mode.isControlDisabled,\n resizable: false,\n type: getInputType(),\n multiline: isTextArea,\n autoFocus: parameters.AutoFocus?.raw,\n styles: {\n fieldGroup: {\n height: sizing.height,\n width: sizing.width\n }\n },\n errorMessage: boundValue.errorMessage,\n hideErrorMessage: !parameters.ShowErrorMessage?.raw,\n suffixItems: getSuffixItems(),\n deleteButtonProps: parameters.EnableDeleteButton?.raw === true ? {\n key: 'delete',\n showOnlyOnHover: true,\n iconProps: {\n iconName: 'Cancel'\n },\n onClick: () => setValue(undefined)\n } : undefined,\n clickToCopyProps: parameters.EnableCopyButton?.raw === true ? {\n key: 'copy',\n showOnlyOnHover: true,\n iconProps: {\n iconName: 'Copy'\n }\n } : undefined,\n value: value ?? \"\",\n onBlur: () => {\n onNotifyOutputChanged({\n value: value ?? undefined\n });\n },\n onChange: (e, value) => {\n setValue(value);\n }\n })\n return (\n <ThemeProvider applyTo=\"none\" theme={theme}>\n <TextFieldBase {...componentProps} />\n </ThemeProvider>\n );\n};"],"names":["_jsx","TextFieldBase"],"mappings":"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"}
@@ -1,10 +1,8 @@
1
1
  export { DatasetControl } from './DatasetControl/DatasetControl.js';
2
- export { DatasetPaging } from './DatasetControl/Paging/DatasetPaging.js';
3
- export { Paging } from './DatasetControl/Paging/Paging.js';
4
2
  export { DateTime } from './DateTime/DateTime.js';
5
3
  export { useDateTime } from './DateTime/hooks/useDateTime.js';
6
4
  export { Decimal } from './Decimal/Decimal.js';
7
- export { Grid } from './Grid/Grid.js';
5
+ export { Grid } from './Grid/grid/Grid.js';
8
6
  export { GridCellRenderer } from './GridCellRenderer/GridCellRenderer.js';
9
7
  export { Lookup } from './Lookup/Lookup.js';
10
8
  export { useLookup } from './Lookup/hooks/useLookup.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -7,6 +7,7 @@ export interface IControlController<TTranslations, TOutputs> {
7
7
  width?: number;
8
8
  height?: number;
9
9
  };
10
+ className: string;
10
11
  theme: ITheme;
11
12
  onNotifyOutputChanged: (outputs: TOutputs) => void;
12
13
  }
@@ -56,6 +56,7 @@ const useControl = (name, props, defaultTranslations) => {
56
56
  props.onNotifyOutputChanged?.(outputs);
57
57
  };
58
58
  return {
59
+ className: `talxis__baseControl__${name}`,
59
60
  labels,
60
61
  sizing,
61
62
  theme: useControlTheme(context.fluentDesignLanguage),
@@ -1 +1 @@
1
- {"version":3,"file":"useControl.js","sources":["../../src/hooks/useControl.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { IControl, IOutputs, IParameters } from \"../interfaces\";\nimport { useControlTheme } from \"../utils/theme/hooks/useControlTheme\";\nimport { useControlSizing } from \"./useControlSizing\";\nimport deepEqual from 'fast-deep-equal/es6';\nimport { ITheme } from \"@talxis/react-components\";\nimport dayjs from \"dayjs\";\nimport { IDefaultTranslations, ITranslation, useControlLabels } from \"./useControlLabels\";\n\nexport interface IControlController<TTranslations, TOutputs> {\n labels: Required<ITranslation<TTranslations>>,\n sizing: {\n width?: number,\n height?: number\n },\n theme: ITheme;\n onNotifyOutputChanged: (outputs: TOutputs) => void,\n}\n/**\n * Provides automatic checking if the given outputs are different from the provided inputs. Use the provided method any time you want\n * to notify the framework that you wish to write changes. The hook will notify the framework only if the provided output differs from the current inputs.\n */\nexport const useControl = <TParameters extends IParameters, TOutputs extends IOutputs, TTranslations>(name: string, props: IControl<TParameters, TOutputs, TTranslations, any>, defaultTranslations?: IDefaultTranslations): IControlController<TTranslations, TOutputs> => {\n const context = props.context;\n const parametersRef = useRef<TParameters>(props.parameters);\n const sizing = useControlSizing(props.context.mode);\n const labels = useControlLabels({\n languageId: context.userSettings.languageId,\n translations: props.translations,\n defaultTranslations\n });\n\n useEffect(() => {\n parametersRef.current = props.parameters;\n }, [props.parameters]);\n\n const onNotifyOutputChanged = (outputs: TOutputs) => {\n let isDirty = false;\n for (let [key, outputValue] of Object.entries(outputs)) {\n let parameterValue = parametersRef.current[key]?.raw;\n if(parameterValue instanceof Date) {\n parameterValue = dayjs(parameterValue).startOf('minute').toDate();\n }\n if (!deepEqual(parameterValue, outputValue)) {\n if (outputValue === null) {\n outputValue = undefined;\n //@ts-ignore\n outputs[key] = undefined;\n }\n if (outputValue === \"\") {\n outputValue = undefined\n //@ts-ignore\n outputs[key] = undefined;\n }\n if (parameterValue === null) {\n parameterValue = undefined;\n }\n if (parameterValue === outputValue) {\n continue\n }\n isDirty = true;\n break;\n }\n }\n if (!isDirty) {\n return;\n }\n //console.log(`Change detected, triggering notifyOutputChanged on control ${name}.`);\n props.onNotifyOutputChanged?.(outputs);\n };\n \n return {\n labels,\n sizing,\n theme: useControlTheme(context.fluentDesignLanguage),\n onNotifyOutputChanged\n }\n};\n"],"names":[],"mappings":";;;;;;;AAkBA;;;AAGG;AACU,MAAA,UAAU,GAAG,CAA4E,IAAY,EAAE,KAA0D,EAAE,mBAA0C,KAAiD;AACvQ,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,aAAa,GAAG,MAAM,CAAc,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAC5B,QAAA,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU;QAC3C,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,mBAAmB;AACtB,KAAA,CAAC,CAAC;IAEH,SAAS,CAAC,MAAK;AACX,QAAA,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC;AAC7C,KAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAEvB,IAAA,MAAM,qBAAqB,GAAG,CAAC,OAAiB,KAAI;QAChD,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,QAAA,KAAK,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACpD,IAAI,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;YACrD,IAAG,cAAc,YAAY,IAAI,EAAE;AAC/B,gBAAA,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;AACrE,aAAA;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE;gBACzC,IAAI,WAAW,KAAK,IAAI,EAAE;oBACtB,WAAW,GAAG,SAAS,CAAC;;AAExB,oBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC5B,iBAAA;gBACD,IAAI,WAAW,KAAK,EAAE,EAAE;oBACpB,WAAW,GAAG,SAAS,CAAA;;AAEvB,oBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC5B,iBAAA;gBACD,IAAI,cAAc,KAAK,IAAI,EAAE;oBACzB,cAAc,GAAG,SAAS,CAAC;AAC9B,iBAAA;gBACD,IAAI,cAAc,KAAK,WAAW,EAAE;oBAChC,SAAQ;AACX,iBAAA;gBACD,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;AACT,aAAA;AACJ,SAAA;QACD,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;AACV,SAAA;;AAED,QAAA,KAAK,CAAC,qBAAqB,GAAG,OAAO,CAAC,CAAC;AAC3C,KAAC,CAAC;IAEF,OAAO;QACH,MAAM;QACN,MAAM;AACN,QAAA,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACpD,qBAAqB;KACxB,CAAA;AACL;;;;"}
1
+ {"version":3,"file":"useControl.js","sources":["../../src/hooks/useControl.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { IControl, IOutputs, IParameters } from \"../interfaces\";\nimport { useControlTheme } from \"../utils/theme/hooks/useControlTheme\";\nimport { useControlSizing } from \"./useControlSizing\";\nimport deepEqual from 'fast-deep-equal/es6';\nimport { ITheme } from \"@talxis/react-components\";\nimport dayjs from \"dayjs\";\nimport { IDefaultTranslations, ITranslation, useControlLabels } from \"./useControlLabels\";\n\nexport interface IControlController<TTranslations, TOutputs> {\n labels: Required<ITranslation<TTranslations>>,\n sizing: {\n width?: number,\n height?: number\n },\n className: string;\n theme: ITheme;\n onNotifyOutputChanged: (outputs: TOutputs) => void,\n}\n/**\n * Provides automatic checking if the given outputs are different from the provided inputs. Use the provided method any time you want\n * to notify the framework that you wish to write changes. The hook will notify the framework only if the provided output differs from the current inputs.\n */\nexport const useControl = <TParameters extends IParameters, TOutputs extends IOutputs, TTranslations>(name: string, props: IControl<TParameters, TOutputs, TTranslations, any>, defaultTranslations?: IDefaultTranslations): IControlController<TTranslations, TOutputs> => {\n const context = props.context;\n const parametersRef = useRef<TParameters>(props.parameters);\n const sizing = useControlSizing(props.context.mode);\n const labels = useControlLabels({\n languageId: context.userSettings.languageId,\n translations: props.translations,\n defaultTranslations\n });\n\n useEffect(() => {\n parametersRef.current = props.parameters;\n }, [props.parameters]);\n\n const onNotifyOutputChanged = (outputs: TOutputs) => {\n let isDirty = false;\n for (let [key, outputValue] of Object.entries(outputs)) {\n let parameterValue = parametersRef.current[key]?.raw;\n if(parameterValue instanceof Date) {\n parameterValue = dayjs(parameterValue).startOf('minute').toDate();\n }\n if (!deepEqual(parameterValue, outputValue)) {\n if (outputValue === null) {\n outputValue = undefined;\n //@ts-ignore\n outputs[key] = undefined;\n }\n if (outputValue === \"\") {\n outputValue = undefined\n //@ts-ignore\n outputs[key] = undefined;\n }\n if (parameterValue === null) {\n parameterValue = undefined;\n }\n if (parameterValue === outputValue) {\n continue\n }\n isDirty = true;\n break;\n }\n }\n if (!isDirty) {\n return;\n }\n //console.log(`Change detected, triggering notifyOutputChanged on control ${name}.`);\n props.onNotifyOutputChanged?.(outputs);\n };\n \n return {\n className: `talxis__baseControl__${name}`,\n labels,\n sizing,\n theme: useControlTheme(context.fluentDesignLanguage),\n onNotifyOutputChanged\n }\n};\n"],"names":[],"mappings":";;;;;;;AAmBA;;;AAGG;AACU,MAAA,UAAU,GAAG,CAA4E,IAAY,EAAE,KAA0D,EAAE,mBAA0C,KAAiD;AACvQ,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,aAAa,GAAG,MAAM,CAAc,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAC5B,QAAA,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU;QAC3C,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,mBAAmB;AACtB,KAAA,CAAC,CAAC;IAEH,SAAS,CAAC,MAAK;AACX,QAAA,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC;AAC7C,KAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAEvB,IAAA,MAAM,qBAAqB,GAAG,CAAC,OAAiB,KAAI;QAChD,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,QAAA,KAAK,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACpD,IAAI,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;YACrD,IAAG,cAAc,YAAY,IAAI,EAAE;AAC/B,gBAAA,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;AACrE,aAAA;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE;gBACzC,IAAI,WAAW,KAAK,IAAI,EAAE;oBACtB,WAAW,GAAG,SAAS,CAAC;;AAExB,oBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC5B,iBAAA;gBACD,IAAI,WAAW,KAAK,EAAE,EAAE;oBACpB,WAAW,GAAG,SAAS,CAAA;;AAEvB,oBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC5B,iBAAA;gBACD,IAAI,cAAc,KAAK,IAAI,EAAE;oBACzB,cAAc,GAAG,SAAS,CAAC;AAC9B,iBAAA;gBACD,IAAI,cAAc,KAAK,WAAW,EAAE;oBAChC,SAAQ;AACX,iBAAA;gBACD,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;AACT,aAAA;AACJ,SAAA;QACD,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;AACV,SAAA;;AAED,QAAA,KAAK,CAAC,qBAAqB,GAAG,OAAO,CAAC,CAAC;AAC3C,KAAC,CAAC;IAEF,OAAO;QACH,SAAS,EAAE,CAAwB,qBAAA,EAAA,IAAI,CAAE,CAAA;QACzC,MAAM;QACN,MAAM;AACN,QAAA,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACpD,qBAAqB;KACxB,CAAA;AACL;;;;"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="@types/powerapps-component-framework" />
2
+ /// <reference types="powerapps-component-framework" />
2
3
  export declare const useControlSizing: (mode: ComponentFramework.Mode) => {
3
4
  height?: number;
4
5
  width?: number;
@@ -0,0 +1,2 @@
1
+ import { IEventEmitter } from "@talxis/client-libraries";
2
+ export declare const useEventEmitter: <T extends { [K in keyof T]: (...args: any[]) => any; }>(emitter: IEventEmitter<T>, event: keyof T, callback: T[keyof T]) => void;
@@ -0,0 +1,18 @@
1
+ import { useRef, useCallback, useEffect } from 'react';
2
+
3
+ const useEventEmitter = (emitter, event, callback) => {
4
+ const callbackRef = useRef(callback);
5
+ callbackRef.current = callback;
6
+ const memoizedCallback = useCallback((...args) => {
7
+ callbackRef.current(...args);
8
+ }, []);
9
+ useEffect(() => {
10
+ emitter.addEventListener(event, memoizedCallback);
11
+ return () => {
12
+ emitter.removeEventListener(event, memoizedCallback);
13
+ };
14
+ }, []);
15
+ };
16
+
17
+ export { useEventEmitter };
18
+ //# sourceMappingURL=useEventEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEventEmitter.js","sources":["../../src/hooks/useEventEmitter.ts"],"sourcesContent":["import { IEventEmitter } from \"@talxis/client-libraries\";\nimport { useCallback, useEffect, useRef } from \"react\";\n\nexport const useEventEmitter = <T extends { [K in keyof T]: (...args: any[]) => any }>(emitter: IEventEmitter<T>, event: keyof T, callback: T[keyof T]) => {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n const memoizedCallback = useCallback((...args) => {\n callbackRef.current(...args);\n }, []);\n\n useEffect(() => {\n emitter.addEventListener(event, memoizedCallback as T[keyof T]);\n return () => {\n emitter.removeEventListener(event, memoizedCallback as T[keyof T]);\n };\n }, []);\n};"],"names":[],"mappings":";;AAGa,MAAA,eAAe,GAAG,CAAwD,OAAyB,EAAE,KAAc,EAAE,QAAoB,KAAI;AACtJ,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrC,IAAA,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IAE/B,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,GAAG,IAAI,KAAI;AAC7C,QAAA,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;KAChC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,MAAK;AACX,QAAA,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,gBAA8B,CAAC,CAAC;AAChE,QAAA,OAAO,MAAK;AACR,YAAA,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,gBAA8B,CAAC,CAAC;AACvE,SAAC,CAAC;KACL,EAAE,EAAE,CAAC,CAAC;AACX;;;;"}
@@ -6,7 +6,7 @@ const useInputBasedControl = (name, props, options) => {
6
6
  const rawValue = props.parameters.value.raw;
7
7
  const [value, setValue] = useState(formatter?.(rawValue) ?? rawValue);
8
8
  const valueRef = useRef(rawValue);
9
- const { labels, sizing, theme, onNotifyOutputChanged } = useControl(name, props, options?.defaultTranslations);
9
+ const { labels, sizing, theme, className, onNotifyOutputChanged } = useControl(name, props, options?.defaultTranslations);
10
10
  useEffect(() => {
11
11
  const formattedValue = formatter?.(rawValue);
12
12
  setValue(formattedValue ?? rawValue);
@@ -23,6 +23,7 @@ const useInputBasedControl = (name, props, options) => {
23
23
  };
24
24
  }, []);
25
25
  return {
26
+ className: className,
26
27
  value,
27
28
  labels,
28
29
  sizing,
@@ -1 +1 @@
1
- {"version":3,"file":"useInputBasedControl.js","sources":["../../src/hooks/useInputBasedControl.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { IControl, IOutputs } from \"../interfaces/context\";\nimport { IControlController, useControl } from \"./useControl\";\nimport { IInputParameters } from \"../interfaces/parameters\";\nimport { IDefaultTranslations } from \"./useControlLabels\";\n\n/**\n * Description\n * @param {any} value:any\n * @returns {any}\n */\ninterface IControlOptions {\n defaultTranslations?: IDefaultTranslations;\n /**\n * Formatting function that will format the bound value every time a new one comes from the props.\n */\n formatter?: (value: any) => any,\n valueExtractor?: (value: any) => any\n}\n\n/**\n * Use when working with components that need to store value changes internally before triggering `notifyOutputChanged`.\n * An example of this is a standard Decimal component - we do not want to trigger `notifyOutputChanged` on every value change,\n * since this would trigger decimal validation on every keystroke which would result in a bad UX. In this case, the `notifyOutputChanged` should\n * be triggered when the user looses focus on the component (`onBlur` event).\n * @returns {[]} The hook returns an array with three props. First `value` prop is a value that will will always be in sync with the value that comes from the `value` parameter. \n * Use this for displaying the up-to-date value to the user.\n * Second prop contains the translations for this component.\n * \n * Third prop is a method that can be used to change the current value. The new value will get propagated to the `value` variable returned from this hook. This method wont propagate the value to the framework.\n * \n * The last prop is a method that will notify the framework that you wish to write changes. \n * The method will notify the framework only if the provided output differs from the current inputs.\n */\n\ninterface IInputBasedControlController<TValue, TTranslations, TOutputs> extends IControlController<TTranslations, TOutputs> {\n value: TValue,\n setValue: (value: TValue) => void\n}\n\nexport const useInputBasedControl = <TValue, TParameters extends IInputParameters, TOutputs extends IOutputs, TTranslations>(name: string, props: IControl<TParameters, TOutputs, TTranslations, any>, options?: IControlOptions): IInputBasedControlController<TValue, TTranslations, TOutputs> => {\n const { formatter, valueExtractor } = { ...options };\n const rawValue = props.parameters.value.raw;\n const [value, setValue] = useState<TValue>(formatter?.(rawValue) ?? rawValue);\n const valueRef = useRef<TValue>(rawValue);\n const { labels, sizing, theme, onNotifyOutputChanged } = useControl(name, props, options?.defaultTranslations);\n\n useEffect(() => {\n const formattedValue = formatter?.(rawValue);\n setValue(formattedValue ?? rawValue);\n //console.log(`Updating component ${name} with new value: ${formattedValue ?? rawValue}`);\n }, [rawValue]);\n\n useEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n useEffect(() => {\n return () => {\n onNotifyOutputChanged({\n value: valueExtractor?.(valueRef.current) ?? valueRef.current\n } as any);\n };\n }, []);\n return {\n value,\n labels,\n sizing,\n theme,\n onNotifyOutputChanged,\n setValue\n }\n};"],"names":[],"mappings":";;;AAwCa,MAAA,oBAAoB,GAAG,CAAyF,IAAY,EAAE,KAA0D,EAAE,OAAyB,KAAmE;IAC/R,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5C,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,SAAS,GAAG,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC;AAC9E,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAS,QAAQ,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAE/G,SAAS,CAAC,MAAK;AACX,QAAA,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;AAC7C,QAAA,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,CAAC;;AAEzC,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,SAAS,CAAC,MAAK;AACX,QAAA,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,SAAS,CAAC,MAAK;AACX,QAAA,OAAO,MAAK;AACR,YAAA,qBAAqB,CAAC;gBAClB,KAAK,EAAE,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO;AACzD,aAAA,CAAC,CAAC;AACd,SAAC,CAAC;KACL,EAAE,EAAE,CAAC,CAAC;IACP,OAAO;QACH,KAAK;QACL,MAAM;QACN,MAAM;QACN,KAAK;QACL,qBAAqB;QACrB,QAAQ;KACX,CAAA;AACL;;;;"}
1
+ {"version":3,"file":"useInputBasedControl.js","sources":["../../src/hooks/useInputBasedControl.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { IControl, IOutputs } from \"../interfaces/context\";\nimport { IControlController, useControl } from \"./useControl\";\nimport { IInputParameters } from \"../interfaces/parameters\";\nimport { IDefaultTranslations } from \"./useControlLabels\";\n\n/**\n * Description\n * @param {any} value:any\n * @returns {any}\n */\ninterface IControlOptions {\n defaultTranslations?: IDefaultTranslations;\n /**\n * Formatting function that will format the bound value every time a new one comes from the props.\n */\n formatter?: (value: any) => any,\n valueExtractor?: (value: any) => any\n}\n\n/**\n * Use when working with components that need to store value changes internally before triggering `notifyOutputChanged`.\n * An example of this is a standard Decimal component - we do not want to trigger `notifyOutputChanged` on every value change,\n * since this would trigger decimal validation on every keystroke which would result in a bad UX. In this case, the `notifyOutputChanged` should\n * be triggered when the user looses focus on the component (`onBlur` event).\n * @returns {[]} The hook returns an array with three props. First `value` prop is a value that will will always be in sync with the value that comes from the `value` parameter. \n * Use this for displaying the up-to-date value to the user.\n * Second prop contains the translations for this component.\n * \n * Third prop is a method that can be used to change the current value. The new value will get propagated to the `value` variable returned from this hook. This method wont propagate the value to the framework.\n * \n * The last prop is a method that will notify the framework that you wish to write changes. \n * The method will notify the framework only if the provided output differs from the current inputs.\n */\n\ninterface IInputBasedControlController<TValue, TTranslations, TOutputs> extends IControlController<TTranslations, TOutputs> {\n value: TValue,\n setValue: (value: TValue) => void\n}\n\nexport const useInputBasedControl = <TValue, TParameters extends IInputParameters, TOutputs extends IOutputs, TTranslations>(name: string, props: IControl<TParameters, TOutputs, TTranslations, any>, options?: IControlOptions): IInputBasedControlController<TValue, TTranslations, TOutputs> => {\n const { formatter, valueExtractor } = { ...options };\n const rawValue = props.parameters.value.raw;\n const [value, setValue] = useState<TValue>(formatter?.(rawValue) ?? rawValue);\n const valueRef = useRef<TValue>(rawValue);\n const { labels, sizing, theme, className, onNotifyOutputChanged } = useControl(name, props, options?.defaultTranslations);\n\n useEffect(() => {\n const formattedValue = formatter?.(rawValue);\n setValue(formattedValue ?? rawValue);\n //console.log(`Updating component ${name} with new value: ${formattedValue ?? rawValue}`);\n }, [rawValue]);\n\n useEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n useEffect(() => {\n return () => {\n onNotifyOutputChanged({\n value: valueExtractor?.(valueRef.current) ?? valueRef.current\n } as any);\n };\n }, []);\n return {\n className: className,\n value,\n labels,\n sizing,\n theme,\n onNotifyOutputChanged,\n setValue\n }\n};"],"names":[],"mappings":";;;AAwCa,MAAA,oBAAoB,GAAG,CAAyF,IAAY,EAAE,KAA0D,EAAE,OAAyB,KAAmE;IAC/R,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5C,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,SAAS,GAAG,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC;AAC9E,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAS,QAAQ,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAE1H,SAAS,CAAC,MAAK;AACX,QAAA,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;AAC7C,QAAA,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,CAAC;;AAEzC,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,SAAS,CAAC,MAAK;AACX,QAAA,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,SAAS,CAAC,MAAK;AACX,QAAA,OAAO,MAAK;AACR,YAAA,qBAAqB,CAAC;gBAClB,KAAK,EAAE,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO;AACzD,aAAA,CAAC,CAAC;AACd,SAAC,CAAC;KACL,EAAE,EAAE,CAAC,CAAC;IACP,OAAO;AACH,QAAA,SAAS,EAAE,SAAS;QACpB,KAAK;QACL,MAAM;QACN,MAAM;QACN,KAAK;QACL,qBAAqB;QACrB,QAAQ;KACX,CAAA;AACL;;;;"}