@talxis/base-controls 0.0.1

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 (516) hide show
  1. package/README.md +41 -0
  2. package/dist/components/DatasetControl/DatasetControl.d.ts +3 -0
  3. package/dist/components/DatasetControl/DatasetControl.js +72 -0
  4. package/dist/components/DatasetControl/DatasetControl.js.map +1 -0
  5. package/dist/components/DatasetControl/Paging/DatasetPaging.d.ts +3 -0
  6. package/dist/components/DatasetControl/Paging/DatasetPaging.js +69 -0
  7. package/dist/components/DatasetControl/Paging/DatasetPaging.js.map +1 -0
  8. package/dist/components/DatasetControl/Paging/Paging.d.ts +26 -0
  9. package/dist/components/DatasetControl/Paging/Paging.js +80 -0
  10. package/dist/components/DatasetControl/Paging/Paging.js.map +1 -0
  11. package/dist/components/DatasetControl/Paging/index.d.ts +3 -0
  12. package/dist/components/DatasetControl/Paging/index.js +3 -0
  13. package/dist/components/DatasetControl/Paging/index.js.map +1 -0
  14. package/dist/components/DatasetControl/Paging/interfaces.d.ts +16 -0
  15. package/dist/components/DatasetControl/Paging/styles.d.ts +35 -0
  16. package/dist/components/DatasetControl/Paging/styles.js +41 -0
  17. package/dist/components/DatasetControl/Paging/styles.js.map +1 -0
  18. package/dist/components/DatasetControl/Paging/translations.d.ts +38 -0
  19. package/dist/components/DatasetControl/Paging/translations.js +14 -0
  20. package/dist/components/DatasetControl/Paging/translations.js.map +1 -0
  21. package/dist/components/DatasetControl/QuickFind/QuickFind.d.ts +13 -0
  22. package/dist/components/DatasetControl/QuickFind/QuickFind.js +59 -0
  23. package/dist/components/DatasetControl/QuickFind/QuickFind.js.map +1 -0
  24. package/dist/components/DatasetControl/QuickFind/styles.d.ts +8 -0
  25. package/dist/components/DatasetControl/QuickFind/styles.js +15 -0
  26. package/dist/components/DatasetControl/QuickFind/styles.js.map +1 -0
  27. package/dist/components/DatasetControl/index.d.ts +3 -0
  28. package/dist/components/DatasetControl/index.js +4 -0
  29. package/dist/components/DatasetControl/index.js.map +1 -0
  30. package/dist/components/DatasetControl/interfaces.d.ts +32 -0
  31. package/dist/components/DatasetControl/styles.d.ts +18 -0
  32. package/dist/components/DatasetControl/styles.js +29 -0
  33. package/dist/components/DatasetControl/styles.js.map +1 -0
  34. package/dist/components/DatasetControl/translations.d.ts +18 -0
  35. package/dist/components/DatasetControl/translations.js +9 -0
  36. package/dist/components/DatasetControl/translations.js.map +1 -0
  37. package/dist/components/DateTime/DateTime.d.ts +3 -0
  38. package/dist/components/DateTime/DateTime.js +149 -0
  39. package/dist/components/DateTime/DateTime.js.map +1 -0
  40. package/dist/components/DateTime/components/Calendar.d.ts +17 -0
  41. package/dist/components/DateTime/components/Calendar.js +63 -0
  42. package/dist/components/DateTime/components/Calendar.js.map +1 -0
  43. package/dist/components/DateTime/hooks/useDateTime.d.ts +32 -0
  44. package/dist/components/DateTime/hooks/useDateTime.js +150 -0
  45. package/dist/components/DateTime/hooks/useDateTime.js.map +1 -0
  46. package/dist/components/DateTime/index.d.ts +3 -0
  47. package/dist/components/DateTime/index.js +3 -0
  48. package/dist/components/DateTime/index.js.map +1 -0
  49. package/dist/components/DateTime/interfaces.d.ts +23 -0
  50. package/dist/components/DateTime/styles.d.ts +31 -0
  51. package/dist/components/DateTime/styles.js +37 -0
  52. package/dist/components/DateTime/styles.js.map +1 -0
  53. package/dist/components/DateTime/translations.d.ts +19 -0
  54. package/dist/components/DateTime/translations.js +23 -0
  55. package/dist/components/DateTime/translations.js.map +1 -0
  56. package/dist/components/Decimal/Decimal.d.ts +3 -0
  57. package/dist/components/Decimal/Decimal.js +204 -0
  58. package/dist/components/Decimal/Decimal.js.map +1 -0
  59. package/dist/components/Decimal/components/ArrowButtons.d.ts +10 -0
  60. package/dist/components/Decimal/components/ArrowButtons.js +38 -0
  61. package/dist/components/Decimal/components/ArrowButtons.js.map +1 -0
  62. package/dist/components/Decimal/components/styles.d.ts +20 -0
  63. package/dist/components/Decimal/components/styles.js +26 -0
  64. package/dist/components/Decimal/components/styles.js.map +1 -0
  65. package/dist/components/Decimal/index.d.ts +2 -0
  66. package/dist/components/Decimal/index.js +2 -0
  67. package/dist/components/Decimal/index.js.map +1 -0
  68. package/dist/components/Decimal/interfaces.d.ts +13 -0
  69. package/dist/components/Duration/Duration.d.ts +3 -0
  70. package/dist/components/Duration/Duration.js +155 -0
  71. package/dist/components/Duration/Duration.js.map +1 -0
  72. package/dist/components/Duration/durationOptions.d.ts +2 -0
  73. package/dist/components/Duration/durationOptions.js +27 -0
  74. package/dist/components/Duration/durationOptions.js.map +1 -0
  75. package/dist/components/Duration/index.d.ts +2 -0
  76. package/dist/components/Duration/index.js +2 -0
  77. package/dist/components/Duration/index.js.map +1 -0
  78. package/dist/components/Duration/interfaces.d.ts +13 -0
  79. package/dist/components/Duration/translations.d.ts +26 -0
  80. package/dist/components/Duration/translations.js +31 -0
  81. package/dist/components/Duration/translations.js.map +1 -0
  82. package/dist/components/Grid/Grid.d.ts +3 -0
  83. package/dist/components/Grid/Grid.js +37 -0
  84. package/dist/components/Grid/Grid.js.map +1 -0
  85. package/dist/components/Grid/GridContext.d.ts +3 -0
  86. package/dist/components/Grid/GridContext.js +6 -0
  87. package/dist/components/Grid/GridContext.js.map +1 -0
  88. package/dist/components/Grid/aggregation/Aggregation.d.ts +18 -0
  89. package/dist/components/Grid/aggregation/Aggregation.js +129 -0
  90. package/dist/components/Grid/aggregation/Aggregation.js.map +1 -0
  91. package/dist/components/Grid/constants.d.ts +1 -0
  92. package/dist/components/Grid/constants.js +4 -0
  93. package/dist/components/Grid/constants.js.map +1 -0
  94. package/dist/components/Grid/core/components/AgGrid/AgGrid.d.ts +5 -0
  95. package/dist/components/Grid/core/components/AgGrid/AgGrid.js +203 -0
  96. package/dist/components/Grid/core/components/AgGrid/AgGrid.js.map +1 -0
  97. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/EmptyRecords.d.ts +2 -0
  98. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/EmptyRecords.js +12 -0
  99. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/EmptyRecords.js.map +1 -0
  100. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/styles.d.ts +18 -0
  101. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/styles.js +23 -0
  102. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/styles.js.map +1 -0
  103. package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/LoadingOverlay.d.ts +2 -0
  104. package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/LoadingOverlay.js +10 -0
  105. package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/LoadingOverlay.js.map +1 -0
  106. package/dist/components/Grid/core/components/AgGrid/context.d.ts +3 -0
  107. package/dist/components/Grid/core/components/AgGrid/context.js +6 -0
  108. package/dist/components/Grid/core/components/AgGrid/context.js.map +1 -0
  109. package/dist/components/Grid/core/components/AgGrid/model/AgGrid.d.ts +52 -0
  110. package/dist/components/Grid/core/components/AgGrid/model/AgGrid.js +343 -0
  111. package/dist/components/Grid/core/components/AgGrid/model/AgGrid.js.map +1 -0
  112. package/dist/components/Grid/core/components/AgGrid/model/Comparator.d.ts +9 -0
  113. package/dist/components/Grid/core/components/AgGrid/model/Comparator.js +86 -0
  114. package/dist/components/Grid/core/components/AgGrid/model/Comparator.js.map +1 -0
  115. package/dist/components/Grid/core/components/AgGrid/styles.d.ts +72 -0
  116. package/dist/components/Grid/core/components/AgGrid/styles.js +78 -0
  117. package/dist/components/Grid/core/components/AgGrid/styles.js.map +1 -0
  118. package/dist/components/Grid/core/components/Cell/Cell.d.ts +13 -0
  119. package/dist/components/Grid/core/components/Cell/Cell.js +158 -0
  120. package/dist/components/Grid/core/components/Cell/Cell.js.map +1 -0
  121. package/dist/components/Grid/core/components/Cell/CellContent/CellContent.d.ts +8 -0
  122. package/dist/components/Grid/core/components/Cell/CellContent/CellContent.js +230 -0
  123. package/dist/components/Grid/core/components/Cell/CellContent/CellContent.js.map +1 -0
  124. package/dist/components/Grid/core/components/Cell/CellContent/styles.d.ts +33 -0
  125. package/dist/components/Grid/core/components/Cell/CellContent/styles.js +39 -0
  126. package/dist/components/Grid/core/components/Cell/CellContent/styles.js.map +1 -0
  127. package/dist/components/Grid/core/components/Cell/Notifications/Notifications.d.ts +12 -0
  128. package/dist/components/Grid/core/components/Cell/Notifications/Notifications.js +112 -0
  129. package/dist/components/Grid/core/components/Cell/Notifications/Notifications.js.map +1 -0
  130. package/dist/components/Grid/core/components/Cell/Notifications/styles.d.ts +39 -0
  131. package/dist/components/Grid/core/components/Cell/Notifications/styles.js +46 -0
  132. package/dist/components/Grid/core/components/Cell/Notifications/styles.js.map +1 -0
  133. package/dist/components/Grid/core/components/Cell/styles.d.ts +40 -0
  134. package/dist/components/Grid/core/components/Cell/styles.js +59 -0
  135. package/dist/components/Grid/core/components/Cell/styles.js.map +1 -0
  136. package/dist/components/Grid/core/components/ColumnHeader/ColumnHeader.d.ts +6 -0
  137. package/dist/components/Grid/core/components/ColumnHeader/ColumnHeader.js +61 -0
  138. package/dist/components/Grid/core/components/ColumnHeader/ColumnHeader.js.map +1 -0
  139. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/GlobalCheckbox.d.ts +2 -0
  140. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/GlobalCheckbox.js +50 -0
  141. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/GlobalCheckbox.js.map +1 -0
  142. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/styles.d.ts +14 -0
  143. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/styles.js +20 -0
  144. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/styles.js.map +1 -0
  145. package/dist/components/Grid/core/components/ColumnHeader/styles.d.ts +42 -0
  146. package/dist/components/Grid/core/components/ColumnHeader/styles.js +48 -0
  147. package/dist/components/Grid/core/components/ColumnHeader/styles.js.map +1 -0
  148. package/dist/components/Grid/core/components/Dialog/Constants.d.ts +2 -0
  149. package/dist/components/Grid/core/components/Dialog/Constants.js +9 -0
  150. package/dist/components/Grid/core/components/Dialog/Constants.js.map +1 -0
  151. package/dist/components/Grid/core/components/Dialog/Styles.d.ts +2 -0
  152. package/dist/components/Grid/core/components/Dialog/Styles.js +61 -0
  153. package/dist/components/Grid/core/components/Dialog/Styles.js.map +1 -0
  154. package/dist/components/Grid/core/components/Dialog/index.d.ts +4 -0
  155. package/dist/components/Grid/core/components/Dialog/index.js +16 -0
  156. package/dist/components/Grid/core/components/Dialog/index.js.map +1 -0
  157. package/dist/components/Grid/core/components/Dialog/interfaces/index.d.ts +6 -0
  158. package/dist/components/Grid/core/components/Dialog/interfaces/index.js +2 -0
  159. package/dist/components/Grid/core/components/Dialog/interfaces/index.js.map +1 -0
  160. package/dist/components/Grid/core/components/Save/Save.d.ts +2 -0
  161. package/dist/components/Grid/core/components/Save/Save.js +59 -0
  162. package/dist/components/Grid/core/components/Save/Save.js.map +1 -0
  163. package/dist/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.d.ts +7 -0
  164. package/dist/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.js +73 -0
  165. package/dist/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.js.map +1 -0
  166. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.d.ts +11 -0
  167. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.js +231 -0
  168. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.js.map +1 -0
  169. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/styles.d.ts +39 -0
  170. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/styles.js +45 -0
  171. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/styles.js.map +1 -0
  172. package/dist/components/Grid/core/components/Save/components/ChangeEditor/styles.d.ts +31 -0
  173. package/dist/components/Grid/core/components/Save/components/ChangeEditor/styles.js +37 -0
  174. package/dist/components/Grid/core/components/Save/components/ChangeEditor/styles.js.map +1 -0
  175. package/dist/components/Grid/core/components/Save/styles.d.ts +35 -0
  176. package/dist/components/Grid/core/components/Save/styles.js +42 -0
  177. package/dist/components/Grid/core/components/Save/styles.js.map +1 -0
  178. package/dist/components/Grid/core/controllers/useGridController.d.ts +7 -0
  179. package/dist/components/Grid/core/controllers/useGridController.js +29 -0
  180. package/dist/components/Grid/core/controllers/useGridController.js.map +1 -0
  181. package/dist/components/Grid/core/enums/ConditionOperator.d.ts +48 -0
  182. package/dist/components/Grid/core/enums/ConditionOperator.js +52 -0
  183. package/dist/components/Grid/core/enums/ConditionOperator.js.map +1 -0
  184. package/dist/components/Grid/core/enums/DataType.d.ts +25 -0
  185. package/dist/components/Grid/core/enums/DataType.js +30 -0
  186. package/dist/components/Grid/core/enums/DataType.js.map +1 -0
  187. package/dist/components/Grid/core/hooks/useGridInstance.d.ts +2 -0
  188. package/dist/components/Grid/core/hooks/useGridInstance.js +9 -0
  189. package/dist/components/Grid/core/hooks/useGridInstance.js.map +1 -0
  190. package/dist/components/Grid/core/hooks/useRefreshCallback.d.ts +2 -0
  191. package/dist/components/Grid/core/hooks/useRefreshCallback.js +20 -0
  192. package/dist/components/Grid/core/hooks/useRefreshCallback.js.map +1 -0
  193. package/dist/components/Grid/core/interfaces/IGridColumn.d.ts +13 -0
  194. package/dist/components/Grid/core/interfaces/IGridContext.d.ts +4 -0
  195. package/dist/components/Grid/core/model/Grid.d.ts +81 -0
  196. package/dist/components/Grid/core/model/Grid.js +513 -0
  197. package/dist/components/Grid/core/model/Grid.js.map +1 -0
  198. package/dist/components/Grid/core/model/GridDependency.d.ts +13 -0
  199. package/dist/components/Grid/core/model/GridDependency.js +28 -0
  200. package/dist/components/Grid/core/model/GridDependency.js.map +1 -0
  201. package/dist/components/Grid/core/services/KeyListener.d.ts +12 -0
  202. package/dist/components/Grid/core/services/KeyListener.js +31 -0
  203. package/dist/components/Grid/core/services/KeyListener.js.map +1 -0
  204. package/dist/components/Grid/filtering/components/FilterCallout/FilterCallout.d.ts +8 -0
  205. package/dist/components/Grid/filtering/components/FilterCallout/FilterCallout.js +59 -0
  206. package/dist/components/Grid/filtering/components/FilterCallout/FilterCallout.js.map +1 -0
  207. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionOperator/ConditionOperator.d.ts +7 -0
  208. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionOperator/ConditionOperator.js +56 -0
  209. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionOperator/ConditionOperator.js.map +1 -0
  210. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValue.d.ts +7 -0
  211. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValue.js +73 -0
  212. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValue.js.map +1 -0
  213. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValueBetween.d.ts +7 -0
  214. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValueBetween.js +90 -0
  215. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValueBetween.js.map +1 -0
  216. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.d.ts +48 -0
  217. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.js +146 -0
  218. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.js.map +1 -0
  219. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/Component.d.ts +11 -0
  220. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/Component.js +53 -0
  221. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/Component.js.map +1 -0
  222. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/controller/useComponentController.d.ts +9 -0
  223. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/controller/useComponentController.js +31 -0
  224. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/controller/useComponentController.js.map +1 -0
  225. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/model/Component.d.ts +10 -0
  226. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/model/Component.js +294 -0
  227. package/dist/components/Grid/filtering/components/FilterCallout/components/LegacyControlRendering/model/Component.js.map +1 -0
  228. package/dist/components/Grid/filtering/components/FilterCallout/styles.d.ts +35 -0
  229. package/dist/components/Grid/filtering/components/FilterCallout/styles.js +40 -0
  230. package/dist/components/Grid/filtering/components/FilterCallout/styles.js.map +1 -0
  231. package/dist/components/Grid/filtering/constants.d.ts +5 -0
  232. package/dist/components/Grid/filtering/constants.js +53 -0
  233. package/dist/components/Grid/filtering/constants.js.map +1 -0
  234. package/dist/components/Grid/filtering/controller/useColumnFilterConditionController.d.ts +21 -0
  235. package/dist/components/Grid/filtering/controller/useColumnFilterConditionController.js +44 -0
  236. package/dist/components/Grid/filtering/controller/useColumnFilterConditionController.js.map +1 -0
  237. package/dist/components/Grid/filtering/model/Condition.d.ts +49 -0
  238. package/dist/components/Grid/filtering/model/Condition.js +347 -0
  239. package/dist/components/Grid/filtering/model/Condition.js.map +1 -0
  240. package/dist/components/Grid/filtering/model/Filtering.d.ts +11 -0
  241. package/dist/components/Grid/filtering/model/Filtering.js +78 -0
  242. package/dist/components/Grid/filtering/model/Filtering.js.map +1 -0
  243. package/dist/components/Grid/filtering/utils/FilteringUtilts.d.ts +34 -0
  244. package/dist/components/Grid/filtering/utils/FilteringUtilts.js +195 -0
  245. package/dist/components/Grid/filtering/utils/FilteringUtilts.js.map +1 -0
  246. package/dist/components/Grid/index.d.ts +2 -0
  247. package/dist/components/Grid/index.js +2 -0
  248. package/dist/components/Grid/index.js.map +1 -0
  249. package/dist/components/Grid/interfaces.d.ts +36 -0
  250. package/dist/components/Grid/selection/model/Selection.d.ts +12 -0
  251. package/dist/components/Grid/selection/model/Selection.js +54 -0
  252. package/dist/components/Grid/selection/model/Selection.js.map +1 -0
  253. package/dist/components/Grid/sorting/Sorting.d.ts +10 -0
  254. package/dist/components/Grid/sorting/Sorting.js +31 -0
  255. package/dist/components/Grid/sorting/Sorting.js.map +1 -0
  256. package/dist/components/Grid/sorting/components/SortingContextualMenu/SortingContextualMenu.d.ts +8 -0
  257. package/dist/components/Grid/sorting/components/SortingContextualMenu/SortingContextualMenu.js +157 -0
  258. package/dist/components/Grid/sorting/components/SortingContextualMenu/SortingContextualMenu.js.map +1 -0
  259. package/dist/components/Grid/sorting/components/SortingContextualMenu/styles.d.ts +9 -0
  260. package/dist/components/Grid/sorting/components/SortingContextualMenu/styles.js +15 -0
  261. package/dist/components/Grid/sorting/components/SortingContextualMenu/styles.js.map +1 -0
  262. package/dist/components/Grid/sorting/controllers/useColumnSortingController.d.ts +9 -0
  263. package/dist/components/Grid/sorting/controllers/useColumnSortingController.js +22 -0
  264. package/dist/components/Grid/sorting/controllers/useColumnSortingController.js.map +1 -0
  265. package/dist/components/Grid/translations.d.ts +366 -0
  266. package/dist/components/Grid/translations.js +99 -0
  267. package/dist/components/Grid/translations.js.map +1 -0
  268. package/dist/components/GridCellRenderer/DefaultContentRenderer/DefaultContentRenderer.d.ts +2 -0
  269. package/dist/components/GridCellRenderer/DefaultContentRenderer/DefaultContentRenderer.js +11 -0
  270. package/dist/components/GridCellRenderer/DefaultContentRenderer/DefaultContentRenderer.js.map +1 -0
  271. package/dist/components/GridCellRenderer/DefaultContentRenderer/index.d.ts +1 -0
  272. package/dist/components/GridCellRenderer/DefaultContentRenderer/index.js +2 -0
  273. package/dist/components/GridCellRenderer/DefaultContentRenderer/index.js.map +1 -0
  274. package/dist/components/GridCellRenderer/GridCellRenderer.d.ts +3 -0
  275. package/dist/components/GridCellRenderer/GridCellRenderer.js +293 -0
  276. package/dist/components/GridCellRenderer/GridCellRenderer.js.map +1 -0
  277. package/dist/components/GridCellRenderer/OptionSet/OptionSet.d.ts +5 -0
  278. package/dist/components/GridCellRenderer/OptionSet/OptionSet.js +75 -0
  279. package/dist/components/GridCellRenderer/OptionSet/OptionSet.js.map +1 -0
  280. package/dist/components/GridCellRenderer/OptionSet/index.d.ts +1 -0
  281. package/dist/components/GridCellRenderer/OptionSet/index.js +2 -0
  282. package/dist/components/GridCellRenderer/OptionSet/index.js.map +1 -0
  283. package/dist/components/GridCellRenderer/OptionSet/styles.d.ts +20 -0
  284. package/dist/components/GridCellRenderer/OptionSet/styles.js +29 -0
  285. package/dist/components/GridCellRenderer/OptionSet/styles.js.map +1 -0
  286. package/dist/components/GridCellRenderer/RecordCommands/Icon.d.ts +7 -0
  287. package/dist/components/GridCellRenderer/RecordCommands/Icon.js +32 -0
  288. package/dist/components/GridCellRenderer/RecordCommands/Icon.js.map +1 -0
  289. package/dist/components/GridCellRenderer/RecordCommands/RecordCommands.d.ts +13 -0
  290. package/dist/components/GridCellRenderer/RecordCommands/RecordCommands.js +103 -0
  291. package/dist/components/GridCellRenderer/RecordCommands/RecordCommands.js.map +1 -0
  292. package/dist/components/GridCellRenderer/RecordCommands/styles.d.ts +13 -0
  293. package/dist/components/GridCellRenderer/RecordCommands/styles.js +32 -0
  294. package/dist/components/GridCellRenderer/RecordCommands/styles.js.map +1 -0
  295. package/dist/components/GridCellRenderer/index.d.ts +2 -0
  296. package/dist/components/GridCellRenderer/index.js +2 -0
  297. package/dist/components/GridCellRenderer/index.js.map +1 -0
  298. package/dist/components/GridCellRenderer/interfaces.d.ts +66 -0
  299. package/dist/components/GridCellRenderer/styles.d.ts +85 -0
  300. package/dist/components/GridCellRenderer/styles.js +119 -0
  301. package/dist/components/GridCellRenderer/styles.js.map +1 -0
  302. package/dist/components/GridCellRenderer/translations.d.ts +30 -0
  303. package/dist/components/GridCellRenderer/translations.js +35 -0
  304. package/dist/components/GridCellRenderer/translations.js.map +1 -0
  305. package/dist/components/GridCellRenderer/useComponentProps.d.ts +6 -0
  306. package/dist/components/GridCellRenderer/useComponentProps.js +10 -0
  307. package/dist/components/GridCellRenderer/useComponentProps.js.map +1 -0
  308. package/dist/components/Lookup/Lookup.d.ts +3 -0
  309. package/dist/components/Lookup/Lookup.js +222 -0
  310. package/dist/components/Lookup/Lookup.js.map +1 -0
  311. package/dist/components/Lookup/components/RecordCreator.d.ts +10 -0
  312. package/dist/components/Lookup/components/RecordCreator.js +37 -0
  313. package/dist/components/Lookup/components/RecordCreator.js.map +1 -0
  314. package/dist/components/Lookup/components/TargetSelector.d.ts +9 -0
  315. package/dist/components/Lookup/components/TargetSelector.js +19 -0
  316. package/dist/components/Lookup/components/TargetSelector.js.map +1 -0
  317. package/dist/components/Lookup/hooks/useFetchXml.d.ts +6 -0
  318. package/dist/components/Lookup/hooks/useFetchXml.js +52 -0
  319. package/dist/components/Lookup/hooks/useFetchXml.js.map +1 -0
  320. package/dist/components/Lookup/hooks/useLoadedEntities.d.ts +6 -0
  321. package/dist/components/Lookup/hooks/useLoadedEntities.js +20 -0
  322. package/dist/components/Lookup/hooks/useLoadedEntities.js.map +1 -0
  323. package/dist/components/Lookup/hooks/useLookup.d.ts +43 -0
  324. package/dist/components/Lookup/hooks/useLookup.js +120 -0
  325. package/dist/components/Lookup/hooks/useLookup.js.map +1 -0
  326. package/dist/components/Lookup/index.d.ts +3 -0
  327. package/dist/components/Lookup/index.js +3 -0
  328. package/dist/components/Lookup/index.js.map +1 -0
  329. package/dist/components/Lookup/interfaces.d.ts +75 -0
  330. package/dist/components/Lookup/styles.d.ts +95 -0
  331. package/dist/components/Lookup/styles.js +112 -0
  332. package/dist/components/Lookup/styles.js.map +1 -0
  333. package/dist/components/Lookup/translations.d.ts +30 -0
  334. package/dist/components/Lookup/translations.js +33 -0
  335. package/dist/components/Lookup/translations.js.map +1 -0
  336. package/dist/components/MultiSelectOptionSet/ColofulOptions/ColorfulOptions.d.ts +8 -0
  337. package/dist/components/MultiSelectOptionSet/ColofulOptions/ColorfulOptions.js +42 -0
  338. package/dist/components/MultiSelectOptionSet/ColofulOptions/ColorfulOptions.js.map +1 -0
  339. package/dist/components/MultiSelectOptionSet/ColofulOptions/styles.d.ts +17 -0
  340. package/dist/components/MultiSelectOptionSet/ColofulOptions/styles.js +24 -0
  341. package/dist/components/MultiSelectOptionSet/ColofulOptions/styles.js.map +1 -0
  342. package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.d.ts +3 -0
  343. package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.js +132 -0
  344. package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.js.map +1 -0
  345. package/dist/components/MultiSelectOptionSet/index.d.ts +2 -0
  346. package/dist/components/MultiSelectOptionSet/index.js +2 -0
  347. package/dist/components/MultiSelectOptionSet/index.js.map +1 -0
  348. package/dist/components/MultiSelectOptionSet/interfaces.d.ts +13 -0
  349. package/dist/components/MultiSelectOptionSet/styles.d.ts +31 -0
  350. package/dist/components/MultiSelectOptionSet/styles.js +42 -0
  351. package/dist/components/MultiSelectOptionSet/styles.js.map +1 -0
  352. package/dist/components/NestedControlRenderer/NestedControl.d.ts +86 -0
  353. package/dist/components/NestedControlRenderer/NestedControl.js +456 -0
  354. package/dist/components/NestedControlRenderer/NestedControl.js.map +1 -0
  355. package/dist/components/NestedControlRenderer/NestedControlError.d.ts +4 -0
  356. package/dist/components/NestedControlRenderer/NestedControlError.js +13 -0
  357. package/dist/components/NestedControlRenderer/NestedControlError.js.map +1 -0
  358. package/dist/components/NestedControlRenderer/NestedControlRenderer.d.ts +3 -0
  359. package/dist/components/NestedControlRenderer/NestedControlRenderer.js +194 -0
  360. package/dist/components/NestedControlRenderer/NestedControlRenderer.js.map +1 -0
  361. package/dist/components/NestedControlRenderer/index.d.ts +1 -0
  362. package/dist/components/NestedControlRenderer/index.js +2 -0
  363. package/dist/components/NestedControlRenderer/index.js.map +1 -0
  364. package/dist/components/NestedControlRenderer/interfaces.d.ts +122 -0
  365. package/dist/components/NestedControlRenderer/manifest/Control.d.ts +16 -0
  366. package/dist/components/NestedControlRenderer/manifest/Control.js +40 -0
  367. package/dist/components/NestedControlRenderer/manifest/Control.js.map +1 -0
  368. package/dist/components/NestedControlRenderer/manifest/Manifest.d.ts +5 -0
  369. package/dist/components/NestedControlRenderer/manifest/Manifest.js +12 -0
  370. package/dist/components/NestedControlRenderer/manifest/Manifest.js.map +1 -0
  371. package/dist/components/NestedControlRenderer/manifest/TypeGroup.d.ts +6 -0
  372. package/dist/components/NestedControlRenderer/manifest/TypeGroup.js +13 -0
  373. package/dist/components/NestedControlRenderer/manifest/TypeGroup.js.map +1 -0
  374. package/dist/components/NestedControlRenderer/manifest/index.d.ts +1 -0
  375. package/dist/components/NestedControlRenderer/manifest/index.js +2 -0
  376. package/dist/components/NestedControlRenderer/manifest/index.js.map +1 -0
  377. package/dist/components/NestedControlRenderer/manifest/property/Property.d.ts +16 -0
  378. package/dist/components/NestedControlRenderer/manifest/property/Property.js +34 -0
  379. package/dist/components/NestedControlRenderer/manifest/property/Property.js.map +1 -0
  380. package/dist/components/NestedControlRenderer/manifest/property/Value.d.ts +8 -0
  381. package/dist/components/NestedControlRenderer/manifest/property/Value.js +12 -0
  382. package/dist/components/NestedControlRenderer/manifest/property/Value.js.map +1 -0
  383. package/dist/components/NestedControlRenderer/properties/DateProperty.d.ts +5 -0
  384. package/dist/components/NestedControlRenderer/properties/DateProperty.js +20 -0
  385. package/dist/components/NestedControlRenderer/properties/DateProperty.js.map +1 -0
  386. package/dist/components/NestedControlRenderer/properties/FileProperty.d.ts +5 -0
  387. package/dist/components/NestedControlRenderer/properties/FileProperty.js +14 -0
  388. package/dist/components/NestedControlRenderer/properties/FileProperty.js.map +1 -0
  389. package/dist/components/NestedControlRenderer/properties/LookupProperty.d.ts +6 -0
  390. package/dist/components/NestedControlRenderer/properties/LookupProperty.js +35 -0
  391. package/dist/components/NestedControlRenderer/properties/LookupProperty.js.map +1 -0
  392. package/dist/components/NestedControlRenderer/properties/NumberProperty.d.ts +5 -0
  393. package/dist/components/NestedControlRenderer/properties/NumberProperty.js +15 -0
  394. package/dist/components/NestedControlRenderer/properties/NumberProperty.js.map +1 -0
  395. package/dist/components/NestedControlRenderer/properties/OptionSetProperty.d.ts +5 -0
  396. package/dist/components/NestedControlRenderer/properties/OptionSetProperty.js +18 -0
  397. package/dist/components/NestedControlRenderer/properties/OptionSetProperty.js.map +1 -0
  398. package/dist/components/NestedControlRenderer/properties/Property.d.ts +17 -0
  399. package/dist/components/NestedControlRenderer/properties/Property.js +46 -0
  400. package/dist/components/NestedControlRenderer/properties/Property.js.map +1 -0
  401. package/dist/components/NestedControlRenderer/properties/TextProperty.d.ts +5 -0
  402. package/dist/components/NestedControlRenderer/properties/TextProperty.js +15 -0
  403. package/dist/components/NestedControlRenderer/properties/TextProperty.js.map +1 -0
  404. package/dist/components/NestedControlRenderer/styles.d.ts +14 -0
  405. package/dist/components/NestedControlRenderer/styles.js +21 -0
  406. package/dist/components/NestedControlRenderer/styles.js.map +1 -0
  407. package/dist/components/NestedControlRenderer/translations.d.ts +14 -0
  408. package/dist/components/NestedControlRenderer/translations.js +19 -0
  409. package/dist/components/NestedControlRenderer/translations.js.map +1 -0
  410. package/dist/components/OptionSet/OptionSet.d.ts +3 -0
  411. package/dist/components/OptionSet/OptionSet.js +80 -0
  412. package/dist/components/OptionSet/OptionSet.js.map +1 -0
  413. package/dist/components/OptionSet/index.d.ts +2 -0
  414. package/dist/components/OptionSet/index.js +2 -0
  415. package/dist/components/OptionSet/index.js.map +1 -0
  416. package/dist/components/OptionSet/interfaces.d.ts +13 -0
  417. package/dist/components/OptionSet/shared.d.ts +5 -0
  418. package/dist/components/OptionSet/shared.js +19 -0
  419. package/dist/components/OptionSet/shared.js.map +1 -0
  420. package/dist/components/OptionSet/styles.d.ts +11 -0
  421. package/dist/components/OptionSet/styles.js +18 -0
  422. package/dist/components/OptionSet/styles.js.map +1 -0
  423. package/dist/components/OptionSet/useComboBoxTheme.d.ts +3 -0
  424. package/dist/components/OptionSet/useComboBoxTheme.js +61 -0
  425. package/dist/components/OptionSet/useComboBoxTheme.js.map +1 -0
  426. package/dist/components/TextField/TextField.d.ts +3 -0
  427. package/dist/components/TextField/TextField.js +120 -0
  428. package/dist/components/TextField/TextField.js.map +1 -0
  429. package/dist/components/TextField/index.d.ts +2 -0
  430. package/dist/components/TextField/index.js +2 -0
  431. package/dist/components/TextField/index.js.map +1 -0
  432. package/dist/components/TextField/interfaces.d.ts +14 -0
  433. package/dist/components/TwoOptions/TwoOptions.d.ts +3 -0
  434. package/dist/components/TwoOptions/TwoOptions.js +55 -0
  435. package/dist/components/TwoOptions/TwoOptions.js.map +1 -0
  436. package/dist/components/TwoOptions/index.d.ts +2 -0
  437. package/dist/components/TwoOptions/index.js +2 -0
  438. package/dist/components/TwoOptions/index.js.map +1 -0
  439. package/dist/components/TwoOptions/interfaces.d.ts +13 -0
  440. package/dist/components/index.d.ts +13 -0
  441. package/dist/components/index.js +17 -0
  442. package/dist/components/index.js.map +1 -0
  443. package/dist/constants.d.ts +15 -0
  444. package/dist/constants.js +35 -0
  445. package/dist/constants.js.map +1 -0
  446. package/dist/hooks/index.d.ts +7 -0
  447. package/dist/hooks/index.js +8 -0
  448. package/dist/hooks/index.js.map +1 -0
  449. package/dist/hooks/useControl.d.ts +17 -0
  450. package/dist/hooks/useControl.js +67 -0
  451. package/dist/hooks/useControl.js.map +1 -0
  452. package/dist/hooks/useControlLabels.d.ts +14 -0
  453. package/dist/hooks/useControlLabels.js +47 -0
  454. package/dist/hooks/useControlLabels.js.map +1 -0
  455. package/dist/hooks/useControlSizing.d.ts +5 -0
  456. package/dist/hooks/useControlSizing.js +15 -0
  457. package/dist/hooks/useControlSizing.js.map +1 -0
  458. package/dist/hooks/useFocusIn.d.ts +1 -0
  459. package/dist/hooks/useFocusIn.js +33 -0
  460. package/dist/hooks/useFocusIn.js.map +1 -0
  461. package/dist/hooks/useInputBasedControl.d.ts +37 -0
  462. package/dist/hooks/useInputBasedControl.js +36 -0
  463. package/dist/hooks/useInputBasedControl.js.map +1 -0
  464. package/dist/hooks/useMouseOver.d.ts +1 -0
  465. package/dist/hooks/useMouseOver.js +23 -0
  466. package/dist/hooks/useMouseOver.js.map +1 -0
  467. package/dist/hooks/usePrevious.d.ts +1 -0
  468. package/dist/index.d.ts +1504 -0
  469. package/dist/index.js +30 -0
  470. package/dist/index.js.map +1 -0
  471. package/dist/interfaces/context.d.ts +27 -0
  472. package/dist/interfaces/index.d.ts +9 -0
  473. package/dist/interfaces/index.js +2 -0
  474. package/dist/interfaces/index.js.map +1 -0
  475. package/dist/interfaces/parameters.d.ts +25 -0
  476. package/dist/interfaces/property.d.ts +67 -0
  477. package/dist/utils/BaseControls.d.ts +16 -0
  478. package/dist/utils/BaseControls.js +82 -0
  479. package/dist/utils/BaseControls.js.map +1 -0
  480. package/dist/utils/dataset/adapters/DatasetAdapter.d.ts +59 -0
  481. package/dist/utils/dataset/adapters/DatasetAdapter.js +229 -0
  482. package/dist/utils/dataset/adapters/DatasetAdapter.js.map +1 -0
  483. package/dist/utils/dataset/adapters/VirtualDatasetAdapter.d.ts +48 -0
  484. package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js +169 -0
  485. package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js.map +1 -0
  486. package/dist/utils/dataset/adapters/index.d.ts +2 -0
  487. package/dist/utils/dataset/adapters/index.js +3 -0
  488. package/dist/utils/dataset/adapters/index.js.map +1 -0
  489. package/dist/utils/dataset/index.d.ts +1 -0
  490. package/dist/utils/dataset/index.js +3 -0
  491. package/dist/utils/dataset/index.js.map +1 -0
  492. package/dist/utils/index.d.ts +3 -0
  493. package/dist/utils/index.js +8 -0
  494. package/dist/utils/index.js.map +1 -0
  495. package/dist/utils/theme/ControlTheme.d.ts +21 -0
  496. package/dist/utils/theme/ControlTheme.js +39 -0
  497. package/dist/utils/theme/ControlTheme.js.map +1 -0
  498. package/dist/utils/theme/components/ThemeWrapper.d.ts +9 -0
  499. package/dist/utils/theme/components/ThemeWrapper.js +11 -0
  500. package/dist/utils/theme/components/ThemeWrapper.js.map +1 -0
  501. package/dist/utils/theme/components/index.d.ts +1 -0
  502. package/dist/utils/theme/components/index.js +2 -0
  503. package/dist/utils/theme/components/index.js.map +1 -0
  504. package/dist/utils/theme/hooks/index.d.ts +2 -0
  505. package/dist/utils/theme/hooks/index.js +3 -0
  506. package/dist/utils/theme/hooks/index.js.map +1 -0
  507. package/dist/utils/theme/hooks/useControlTheme.d.ts +3 -0
  508. package/dist/utils/theme/hooks/useControlTheme.js +12 -0
  509. package/dist/utils/theme/hooks/useControlTheme.js.map +1 -0
  510. package/dist/utils/theme/hooks/useControlThemeGenerator.d.ts +14 -0
  511. package/dist/utils/theme/hooks/useControlThemeGenerator.js +11 -0
  512. package/dist/utils/theme/hooks/useControlThemeGenerator.js.map +1 -0
  513. package/dist/utils/theme/index.d.ts +3 -0
  514. package/dist/utils/theme/index.js +5 -0
  515. package/dist/utils/theme/index.js.map +1 -0
  516. package/package.json +94 -0
@@ -0,0 +1,222 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { useLookup } from './hooks/useLookup.js';
3
+ import { useRef, useMemo, useState, useEffect } from 'react';
4
+ import { ThemeProvider } from '@fluentui/react';
5
+ import { TagPicker } from '@talxis/react-components';
6
+ import { TargetSelector } from './components/TargetSelector.js';
7
+ import { useMouseOver } from '../../hooks/useMouseOver.js';
8
+ import { getLookupStyles, getSuggestionsCalloutStyles } from './styles.js';
9
+ import { RecordCreator } from './components/RecordCreator.js';
10
+ import { useFocusIn } from '../../hooks/useFocusIn.js';
11
+ import { useControlSizing } from '../../hooks/useControlSizing.js';
12
+ import dayjs from 'dayjs';
13
+
14
+ const Lookup = (props) => {
15
+ const context = props.context;
16
+ const ref = useRef(null);
17
+ const componentRef = useRef(null);
18
+ const itemLimit = props.parameters.MultipleEnabled?.raw === true ? Infinity : 1;
19
+ const { height } = useControlSizing(props.context.mode);
20
+ const [value, entities, labels, records, selectEntity, getSearchResults, theme] = useLookup(props);
21
+ const styles = getLookupStyles(theme, itemLimit === 1, height);
22
+ const suggestionsCalloutTheme = props.context.fluentDesignLanguage?.applicationTheme ?? theme;
23
+ const suggestionsCalloutStyles = useMemo(() => getSuggestionsCalloutStyles(suggestionsCalloutTheme), [suggestionsCalloutTheme]);
24
+ const mouseOver = useMouseOver(ref);
25
+ const isFocused = useFocusIn(ref, 100);
26
+ const firstRenderRef = useRef(true);
27
+ const shouldFocusRef = useRef(false);
28
+ const [placeholder, setPlaceholder] = useState('---');
29
+ const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);
30
+ useEffect(() => {
31
+ if (firstRenderRef.current) {
32
+ firstRenderRef.current = false;
33
+ return;
34
+ }
35
+ //@ts-ignore
36
+ if (componentRef.current.state.suggestionsVisible) {
37
+ //if the suggestions callout is open and the selected target changes, refresh the results
38
+ forceSearch();
39
+ }
40
+ }, [entities]);
41
+ useEffect(() => {
42
+ const onKeyPress = (ev) => {
43
+ if (context.mode.isControlDisabled) {
44
+ return;
45
+ }
46
+ if (ev.key === 'Backspace') {
47
+ const picker = ref.current?.querySelector('[class*="TALXIS__tag-picker__root"]');
48
+ if ((document.activeElement === picker) && value.length === 1) {
49
+ records.select(undefined);
50
+ setTimeout(() => {
51
+ componentRef.current?.focusInput();
52
+ }, 200);
53
+ }
54
+ }
55
+ };
56
+ document.addEventListener('keydown', onKeyPress);
57
+ return () => {
58
+ document.removeEventListener('keydown', onKeyPress);
59
+ };
60
+ }, [value]);
61
+ useEffect(() => {
62
+ if (props.parameters.AutoFocus?.raw === true) {
63
+ focus();
64
+ }
65
+ }, []);
66
+ const focus = () => {
67
+ if (componentRef.current?.items?.length === itemLimit) {
68
+ const el = ref.current?.querySelector(':scope>div');
69
+ el?.click();
70
+ el?.focus();
71
+ return;
72
+ }
73
+ componentRef.current?.focusInput();
74
+ };
75
+ const forceSearch = async () => {
76
+ //@ts-ignore - We need to use internal methods to show and fill the suggestions on entity change
77
+ componentRef.current.suggestionStore.updateSuggestions([]);
78
+ //@ts-ignore - ^^same as above
79
+ componentRef.current.setState({
80
+ suggestionsVisible: true,
81
+ suggestionsLoading: true,
82
+ });
83
+ //@ts-ignore - ^^same as above
84
+ const results = await onResolveSuggestions(componentRef.current.input.current.value);
85
+ //@ts-ignore - ^^same as above
86
+ componentRef.current.updateSuggestionsList(results);
87
+ //@ts-ignore - ^^same above
88
+ componentRef.current.setState({
89
+ isMostRecentlyUsedVisible: false,
90
+ suggestionsVisible: true,
91
+ moreSuggestionsAvailable: false,
92
+ });
93
+ };
94
+ const isComponentActive = () => {
95
+ return mouseOver || isFocused;
96
+ };
97
+ const getSecondaryName = (result, metadata) => {
98
+ //polymorphic, selected all
99
+ if (!entities.find(x => x.selected)) {
100
+ return metadata?.DisplayName;
101
+ }
102
+ else {
103
+ let text = result.entityData[result.layout?.Rows?.[0]?.Cells?.[1]?.Name];
104
+ const dateRegex = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/;
105
+ if (typeof text === 'string' && text.match(dateRegex)) {
106
+ text = props.context.formatting.formatTime(dayjs(text).toDate(), 1);
107
+ }
108
+ return text;
109
+ }
110
+ };
111
+ const onResolveSuggestions = async (filter, selectedItems) => {
112
+ //TODO: onResolveSuggestions gets called when the record gets selected resulting in unnecessary call
113
+ const results = await getSearchResults(filter);
114
+ const suggestions = [];
115
+ for (const result of results) {
116
+ if (selectedItems?.find(x => x.key === result.id)) {
117
+ continue;
118
+ }
119
+ const metadata = await entities.find(x => x.entityName === result.entityType)?.metadata;
120
+ suggestions.push({
121
+ key: result.id,
122
+ text: result.name,
123
+ secondaryText: getSecondaryName(result, metadata),
124
+ 'data-entity': result.entityType
125
+ });
126
+ }
127
+ return suggestions;
128
+ };
129
+ const componentProps = onOverrideComponentProps({
130
+ ref: componentRef,
131
+ readOnly: context.mode.isControlDisabled,
132
+ resolveDelay: 200,
133
+ stackItems: itemLimit === 1,
134
+ errorMessage: props.parameters.value.errorMessage,
135
+ hideErrorMessage: !props.parameters.ShowErrorMessage?.raw,
136
+ pickerCalloutProps: {
137
+ layerProps: {
138
+ eventBubblingEnabled: true
139
+ },
140
+ className: suggestionsCalloutStyles.suggestionsCallout,
141
+ theme: suggestionsCalloutTheme,
142
+ },
143
+ inputProps: {
144
+ placeholder: placeholder,
145
+ onMouseEnter: () => {
146
+ if (context.mode.isControlDisabled) {
147
+ return;
148
+ }
149
+ setPlaceholder(`${labels.placeholder()} ${props.parameters.value.attributes.DisplayName}`);
150
+ },
151
+ onMouseLeave: () => {
152
+ setPlaceholder("---");
153
+ }
154
+ },
155
+ pickerSuggestionsProps: {
156
+ loadingText: labels.searching(),
157
+ theme: suggestionsCalloutTheme,
158
+ noResultsFoundText: labels.noRecordsFound(),
159
+ className: suggestionsCalloutStyles.suggestionsContainer,
160
+ // @ts-ignore
161
+ suggestionsHeaderText: (jsxs(Fragment, { children: [props.parameters.IsInlineNewEnabled?.raw !== false && (jsx(RecordCreator, { labels: labels, entities: entities, onCreateRecord: records.create })), props.parameters.value.attributes.Targets.length > 1 && (jsx(TargetSelector, { labels: labels, entities: entities, onEntitySelected: (entityName) => {
162
+ selectEntity(entityName);
163
+ } }))] }))
164
+ },
165
+ transparent: itemLimit === 1,
166
+ onChange: (items) => {
167
+ records.select(items?.map((item) => {
168
+ return {
169
+ entityType: item['data-entity'],
170
+ id: item.key,
171
+ name: item.text
172
+ };
173
+ }));
174
+ },
175
+ searchBtnProps: {
176
+ key: 'search',
177
+ iconProps: {
178
+ iconName: 'Search'
179
+ },
180
+ showOnlyOnHover: true
181
+ },
182
+ selectedItems: value.map((lookup) => {
183
+ return {
184
+ key: lookup.id,
185
+ text: lookup.name || labels.noName(),
186
+ 'data-entity': lookup.entityType,
187
+ 'data-navigation-enabled': props.parameters.EnableNavigation?.raw !== false,
188
+ onClick: () => {
189
+ if (props.parameters.EnableNavigation?.raw === false) {
190
+ return;
191
+ }
192
+ context.navigation.openForm({
193
+ entityName: lookup.entityType,
194
+ entityId: lookup.id
195
+ });
196
+ },
197
+ deleteButtonProps: isComponentActive() || itemLimit > 1
198
+ ? {
199
+ key: 'delete',
200
+ iconProps: {
201
+ iconName: 'Cancel',
202
+ },
203
+ onClick: () => {
204
+ shouldFocusRef.current = false;
205
+ records.deselect(lookup);
206
+ setTimeout(() => {
207
+ focus();
208
+ }, 200);
209
+ }
210
+ }
211
+ : undefined
212
+ };
213
+ }),
214
+ itemLimit: itemLimit,
215
+ onEmptyResolveSuggestions: !context.mode.isControlDisabled ? (selectedItems) => onResolveSuggestions("", selectedItems) : undefined,
216
+ onResolveSuggestions: onResolveSuggestions,
217
+ });
218
+ return (jsx(ThemeProvider, { applyTo: "none", theme: theme, className: `talxis__lookupControl ${styles.root}`, ref: ref, children: jsx(TagPicker, { ...componentProps }) }));
219
+ };
220
+
221
+ export { Lookup };
222
+ //# sourceMappingURL=Lookup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lookup.js","sources":["../../../src/components/Lookup/Lookup.tsx"],"sourcesContent":["\nimport { ILayout, ILookup, IMetadata } from \"./interfaces\";\nimport { useLookup } from \"./hooks/useLookup\";\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { ThemeProvider } from \"@fluentui/react\";\nimport { IItemProps, TagPicker } from \"@talxis/react-components\";\nimport { TargetSelector } from \"./components/TargetSelector\";\nimport { useMouseOver } from \"../../hooks/useMouseOver\";\nimport { getLookupStyles, getSuggestionsCalloutStyles } from \"./styles\";\nimport { IBasePicker } from \"@fluentui/react/lib/components/pickers/BasePicker.types\";\nimport { ITag } from \"@fluentui/react/lib/components/pickers/TagPicker/TagPicker.types\";\nimport { RecordCreator } from \"./components/RecordCreator\";\nimport { useFocusIn } from \"../../hooks/useFocusIn\";\nimport { useControlSizing } from \"../../hooks/useControlSizing\";\nimport dayjs from \"dayjs\";\n\nexport const Lookup = (props: ILookup) => {\n const context = props.context;\n const ref = useRef<HTMLDivElement>(null);\n const componentRef = useRef<IBasePicker<ITag>>(null);\n const itemLimit = props.parameters.MultipleEnabled?.raw === true ? Infinity : 1\n const { height } = useControlSizing(props.context.mode);\n const [value, entities, labels, records, selectEntity, getSearchResults, theme] = useLookup(props);\n const styles = getLookupStyles(theme, itemLimit === 1, height);\n const suggestionsCalloutTheme = props.context.fluentDesignLanguage?.applicationTheme ?? theme;\n const suggestionsCalloutStyles = useMemo(() => getSuggestionsCalloutStyles(suggestionsCalloutTheme), [suggestionsCalloutTheme])\n const mouseOver = useMouseOver(ref);\n const isFocused = useFocusIn(ref, 100);\n const firstRenderRef = useRef(true);\n const shouldFocusRef = useRef(false);\n const [placeholder, setPlaceholder] = useState('---');\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n\n\n useEffect(() => {\n if (firstRenderRef.current) {\n firstRenderRef.current = false;\n return;\n }\n //@ts-ignore\n if (componentRef.current.state.suggestionsVisible) {\n //if the suggestions callout is open and the selected target changes, refresh the results\n forceSearch();\n }\n }, [entities])\n\n useEffect(() => {\n const onKeyPress = (ev: KeyboardEvent) => {\n if (context.mode.isControlDisabled) {\n return;\n }\n if (ev.key === 'Backspace') {\n const picker = ref.current?.querySelector('[class*=\"TALXIS__tag-picker__root\"]');\n if ((document.activeElement === picker) && value.length === 1) {\n records.select(undefined);\n setTimeout(() => {\n componentRef.current?.focusInput()\n }, 200)\n }\n }\n }\n document.addEventListener('keydown', onKeyPress)\n return () => {\n document.removeEventListener('keydown', onKeyPress);\n }\n }, [value]);\n\n useEffect(() => {\n if (props.parameters.AutoFocus?.raw === true) {\n focus();\n }\n }, []);\n\n const focus = () => {\n if (componentRef.current?.items?.length === itemLimit) {\n const el = ref.current?.querySelector(':scope>div') as HTMLDivElement;\n el?.click();\n el?.focus();\n return;\n }\n componentRef.current?.focusInput();\n }\n\n const forceSearch = async () => {\n //@ts-ignore - We need to use internal methods to show and fill the suggestions on entity change\n componentRef.current.suggestionStore.updateSuggestions([]);\n //@ts-ignore - ^^same as above\n componentRef.current.setState({\n suggestionsVisible: true,\n suggestionsLoading: true,\n });\n //@ts-ignore - ^^same as above\n const results = await onResolveSuggestions(componentRef.current.input.current.value)\n //@ts-ignore - ^^same as above\n componentRef.current.updateSuggestionsList(results);\n //@ts-ignore - ^^same above\n componentRef.current.setState({\n isMostRecentlyUsedVisible: false,\n suggestionsVisible: true,\n moreSuggestionsAvailable: false,\n });\n }\n\n const isComponentActive = () => {\n return mouseOver || isFocused;\n }\n\n const getSecondaryName = (result: ComponentFramework.LookupValue & {\n entityData: {\n [key: string]: any;\n };\n layout: ILayout;\n }, metadata?: IMetadata) => {\n //polymorphic, selected all\n if (!entities.find(x => x.selected)) {\n return metadata?.DisplayName;\n }\n else {\n let text: string | undefined = result.entityData[result.layout?.Rows?.[0]?.Cells?.[1]?.Name];\n const dateRegex = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z/;\n if (typeof text === 'string' && text.match(dateRegex)) {\n text = props.context.formatting.formatTime(dayjs(text).toDate(), 1);\n }\n return text;\n }\n }\n\n const onResolveSuggestions = async (filter: string, selectedItems?: IItemProps[] | undefined): Promise<IItemProps[]> => {\n //TODO: onResolveSuggestions gets called when the record gets selected resulting in unnecessary call\n const results = await getSearchResults(filter);\n const suggestions: IItemProps[] = [];\n for (const result of results) {\n if (selectedItems?.find(x => x.key === result.id)) {\n continue;\n }\n const metadata = await entities.find(x => x.entityName === result.entityType)?.metadata;\n suggestions.push({\n key: result.id,\n text: result.name,\n secondaryText: getSecondaryName(result, metadata),\n 'data-entity': result.entityType\n })\n }\n return suggestions;\n }\n\n const componentProps = onOverrideComponentProps({\n ref: componentRef,\n readOnly: context.mode.isControlDisabled,\n resolveDelay: 200,\n stackItems: itemLimit === 1,\n errorMessage: props.parameters.value.errorMessage,\n hideErrorMessage: !props.parameters.ShowErrorMessage?.raw,\n pickerCalloutProps: {\n layerProps: {\n eventBubblingEnabled: true\n },\n className: suggestionsCalloutStyles.suggestionsCallout,\n theme: suggestionsCalloutTheme,\n },\n inputProps: {\n placeholder: placeholder,\n onMouseEnter: () => {\n if (context.mode.isControlDisabled) {\n return;\n }\n setPlaceholder(`${labels.placeholder()} ${props.parameters.value.attributes.DisplayName}`);\n },\n onMouseLeave: () => {\n setPlaceholder(\"---\");\n }\n\n },\n pickerSuggestionsProps: {\n loadingText: labels.searching(),\n theme: suggestionsCalloutTheme,\n noResultsFoundText: labels.noRecordsFound(),\n className: suggestionsCalloutStyles.suggestionsContainer,\n // @ts-ignore\n suggestionsHeaderText: (\n <>\n {props.parameters.IsInlineNewEnabled?.raw !== false && (\n <RecordCreator labels={labels} entities={entities} onCreateRecord={records.create} />\n )}\n {props.parameters.value.attributes.Targets.length > 1 && (\n <TargetSelector\n labels={labels}\n entities={entities}\n onEntitySelected={(entityName) => {\n selectEntity(entityName);\n }}\n />\n )}\n </>\n )\n },\n transparent: itemLimit === 1,\n onChange: (items) => {\n records.select(\n items?.map((item) => {\n return {\n entityType: item['data-entity'],\n id: item.key,\n name: item.text\n };\n })\n );\n },\n searchBtnProps: {\n key: 'search',\n iconProps: {\n iconName: 'Search'\n },\n showOnlyOnHover: true\n },\n selectedItems: value.map((lookup) => {\n return {\n key: lookup.id,\n text: lookup.name || labels.noName(),\n 'data-entity': lookup.entityType,\n 'data-navigation-enabled': props.parameters.EnableNavigation?.raw !== false,\n onClick: () => {\n if (props.parameters.EnableNavigation?.raw === false) {\n return;\n }\n context.navigation.openForm({\n entityName: lookup.entityType,\n entityId: lookup.id\n });\n },\n deleteButtonProps:\n isComponentActive() || itemLimit > 1\n ? {\n key: 'delete',\n iconProps: {\n iconName: 'Cancel',\n },\n onClick: () => {\n shouldFocusRef.current = false;\n records.deselect(lookup);\n setTimeout(() => {\n focus();\n }, 200);\n }\n }\n : undefined\n };\n }),\n itemLimit: itemLimit,\n onEmptyResolveSuggestions: !context.mode.isControlDisabled ? (selectedItems) => onResolveSuggestions(\"\", selectedItems as IItemProps[]) as any : undefined,\n onResolveSuggestions: onResolveSuggestions,\n });\n\n return (\n <ThemeProvider applyTo=\"none\" theme={theme} className={`talxis__lookupControl ${styles.root}`} ref={ref}>\n <TagPicker {...componentProps} />\n </ThemeProvider>\n );\n};"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import { IEntity, ILookupTranslations } from "../interfaces";
3
+ import { StringProps } from '../../../types';
4
+ interface IRecordCreator {
5
+ labels: Required<StringProps<ILookupTranslations>>;
6
+ entities: IEntity[];
7
+ onCreateRecord: (entityName: string) => void;
8
+ }
9
+ export declare const RecordCreator: (props: IRecordCreator) => JSX.Element;
10
+ export {};
@@ -0,0 +1,37 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useTheme, CommandBarButton, ContextualMenuItemType } from '@fluentui/react';
3
+ import { getLookupStyles } from '../styles.js';
4
+ import { useLoadedEntities } from '../hooks/useLoadedEntities.js';
5
+
6
+ const RecordCreator = (props) => {
7
+ const { labels, entities, onCreateRecord } = { ...props };
8
+ const [loadedEntities] = useLoadedEntities(entities);
9
+ const theme = useTheme();
10
+ const styles = getLookupStyles(theme, 0);
11
+ const selectedEntity = entities.find(x => x.selected);
12
+ return (jsx(CommandBarButton, { className: styles.createRecordBtn, iconProps: {
13
+ iconName: 'Add'
14
+ }, onClick: selectedEntity ? () => onCreateRecord(selectedEntity.entityName) : undefined, menuProps: !selectedEntity ? {
15
+ calloutProps: {
16
+ coverTarget: false
17
+ },
18
+ isBeakVisible: true,
19
+ items: loadedEntities ? (() => {
20
+ const items = [{
21
+ key: 'header',
22
+ itemType: ContextualMenuItemType.Header,
23
+ text: 'Vyberte tabulku'
24
+ }];
25
+ return [...items, ...loadedEntities.map(entity => {
26
+ return {
27
+ key: entity.entityName,
28
+ text: entity.metadata.DisplayName,
29
+ onClick: () => onCreateRecord(entity.entityName)
30
+ };
31
+ })];
32
+ })() : []
33
+ } : undefined, text: labels.newRecord() }));
34
+ };
35
+
36
+ export { RecordCreator };
37
+ //# sourceMappingURL=RecordCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordCreator.js","sources":["../../../../src/components/Lookup/components/RecordCreator.tsx"],"sourcesContent":["\n//@ts-nocheck - typescript\nimport { ContextualMenuItemType, IContextualMenuItem, useTheme } from \"@fluentui/react\";\nimport { CommandBarButton } from \"@fluentui/react\";\nimport { IEntity, ILookupTranslations } from \"../interfaces\";\nimport { getLookupStyles } from \"../styles\";\nimport { StringProps } from '../../../types';\nimport { useLoadedEntities } from \"../hooks/useLoadedEntities\";\nimport React from 'react';\n\ninterface IRecordCreator {\n labels: Required<StringProps<ILookupTranslations>>,\n entities: IEntity[];\n onCreateRecord: (entityName: string) => void;\n}\n\nexport const RecordCreator = (props: IRecordCreator) => {\n const {labels, entities, onCreateRecord} = {...props};\n const [loadedEntities] = useLoadedEntities(entities);\n const theme = useTheme();\n const styles = getLookupStyles(theme, 0)\n const selectedEntity = entities.find(x => x.selected);\n\n return (\n <CommandBarButton\n className={styles.createRecordBtn}\n iconProps={{\n iconName: 'Add'\n }}\n onClick={selectedEntity ? () => onCreateRecord(selectedEntity.entityName) : undefined}\n menuProps={!selectedEntity ? {\n calloutProps: {\n coverTarget: false \n },\n isBeakVisible: true,\n items: loadedEntities ? (() => {\n const items: IContextualMenuItem[] = [{\n key: 'header',\n itemType: ContextualMenuItemType.Header,\n text: 'Vyberte tabulku'\n }]\n return [...items, ...loadedEntities.map(entity => {\n return {\n key: entity.entityName,\n text: entity.metadata.DisplayName,\n onClick: () => onCreateRecord(entity.entityName)\n }\n })];\n })() : []\n }: undefined} \n text={labels.newRecord()} />\n )\n}"],"names":["_jsx"],"mappings":";;;;;AAgBa,MAAA,aAAa,GAAG,CAAC,KAAqB,KAAI;AACnD,IAAA,MAAM,EAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAC,GAAG,EAAC,GAAG,KAAK,EAAC,CAAC;IACtD,MAAM,CAAC,cAAc,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrD,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AACxC,IAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEtD,QACIA,GAAC,CAAA,gBAAgB,EACb,EAAA,SAAS,EAAE,MAAM,CAAC,eAAe,EACjC,SAAS,EAAE;AACP,YAAA,QAAQ,EAAE,KAAK;SAClB,EACD,OAAO,EAAE,cAAc,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,SAAS,EACrF,SAAS,EAAE,CAAC,cAAc,GAAG;AACzB,YAAA,YAAY,EAAE;AACV,gBAAA,WAAW,EAAE,KAAK;AACrB,aAAA;AACD,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,KAAK,EAAE,cAAc,GAAG,CAAC,MAAK;gBAC1B,MAAM,KAAK,GAA0B,CAAC;AAClC,wBAAA,GAAG,EAAE,QAAQ;wBACb,QAAQ,EAAE,sBAAsB,CAAC,MAAM;AACvC,wBAAA,IAAI,EAAE,iBAAiB;AACvB,qBAAA,CAAC,CAAA;gBACF,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,IAAG;wBAC7C,OAAO;4BACH,GAAG,EAAE,MAAM,CAAC,UAAU;AACtB,4BAAA,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW;4BACjC,OAAO,EAAE,MAAM,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC;yBACnD,CAAA;qBACJ,CAAC,CAAC,CAAC;AACX,aAAC,GAAG,GAAG,EAAE;AACZ,SAAA,GAAE,SAAS,EACZ,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,EAAI,CAAA,EACnC;AACL;;;;"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { IEntity } from '../interfaces';
3
+ interface ITargetSelector {
4
+ labels: any;
5
+ entities: IEntity[];
6
+ onEntitySelected: (entityName: string | null) => void;
7
+ }
8
+ export declare const TargetSelector: (props: ITargetSelector) => JSX.Element;
9
+ export {};
@@ -0,0 +1,19 @@
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import { Text } from '@fluentui/react/lib/Text';
3
+ import { useTheme, Link } from '@fluentui/react';
4
+ import { getTargetSelectorStyles } from '../styles.js';
5
+ import { useLoadedEntities } from '../hooks/useLoadedEntities.js';
6
+
7
+ const TargetSelector = (props) => {
8
+ const { labels, entities, onEntitySelected } = { ...props };
9
+ const [loadedEntities] = useLoadedEntities(entities);
10
+ const theme = useTheme();
11
+ const styles = getTargetSelectorStyles(theme);
12
+ return (jsxs("div", { className: styles.targetSelector, children: [jsxs(Text, { variant: 'small', children: [labels.resultsFrom(), " "] }), jsxs("div", { className: styles.targetSelectorLinks, children: [jsx(Link, { onClick: () => onEntitySelected(null), className: styles.targetSelectorLink, "data-selected": !entities.find(x => x.selected), children: "All" }), loadedEntities &&
13
+ jsx(Fragment, { children: loadedEntities.map((entity) => {
14
+ return jsx(Link, { className: styles.targetSelectorLink, "data-selected": entity.selected, onClick: () => onEntitySelected(entity.entityName), children: entity.metadata.DisplayName });
15
+ }) })] })] }));
16
+ };
17
+
18
+ export { TargetSelector };
19
+ //# sourceMappingURL=TargetSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TargetSelector.js","sources":["../../../../src/components/Lookup/components/TargetSelector.tsx"],"sourcesContent":["import React from 'react';\nimport { IEntity } from '../interfaces';\nimport { Text } from '@fluentui/react/lib/Text';\nimport { Link, useTheme } from '@fluentui/react';\nimport { getTargetSelectorStyles } from '../styles';\nimport { useLoadedEntities } from '../hooks/useLoadedEntities';\n\ninterface ITargetSelector {\n labels: any;\n entities: IEntity[];\n onEntitySelected: (entityName: string | null) => void;\n}\n\n\nexport const TargetSelector = (props: ITargetSelector) => {\n const { labels, entities, onEntitySelected } = { ...props };\n const [loadedEntities] = useLoadedEntities(entities);\n const theme = useTheme();\n const styles = getTargetSelectorStyles(theme);\n\n return (\n <div className={styles.targetSelector}>\n <Text variant='small'>{labels.resultsFrom()} </Text>\n <div className={styles.targetSelectorLinks}>\n <Link\n onClick={() => onEntitySelected(null)}\n className={styles.targetSelectorLink}\n data-selected={!entities.find(x => x.selected)}>All</Link>\n {loadedEntities &&\n <>\n {loadedEntities.map((entity) => {\n return <Link\n className={styles.targetSelectorLink}\n data-selected={entity.selected}\n onClick={() => onEntitySelected(entity.entityName)}>{entity.metadata.DisplayName}</Link>\n })}\n </>\n }\n </div>\n </div>\n )\n}"],"names":["_jsxs","_jsx","_Fragment"],"mappings":";;;;;;AAca,MAAA,cAAc,GAAG,CAAC,KAAsB,KAAI;AACrD,IAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC5D,MAAM,CAAC,cAAc,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrD,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;AACzB,IAAA,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAE9C,IAAA,QACIA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,cAAc,EAAA,QAAA,EAAA,CACjCA,IAAC,CAAA,IAAI,EAAC,EAAA,OAAO,EAAC,OAAO,EAAE,QAAA,EAAA,CAAA,MAAM,CAAC,WAAW,EAAE,EAAA,GAAA,CAAA,EAAA,CAAS,EACpDA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,EAAA,QAAA,EAAA,CACtCC,IAAC,IAAI,EAAA,EACD,OAAO,EAAE,MAAM,gBAAgB,CAAC,IAAI,CAAC,EACrC,SAAS,EAAE,MAAM,CAAC,kBAAkB,EAAA,eAAA,EACrB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAA,KAAA,EAAA,CAAY,EAC7D,cAAc;AACX,wBAAAA,GAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EACK,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AAC3B,gCAAA,OAAOD,GAAC,CAAA,IAAI,EACR,EAAA,SAAS,EAAE,MAAM,CAAC,kBAAkB,EACrB,eAAA,EAAA,MAAM,CAAC,QAAQ,EAC9B,OAAO,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAG,QAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAQ,CAAA;AAChG,6BAAC,CAAC,EAAA,CACH,CAEL,EAAA,CAAA,CAAA,EAAA,CACJ,EACT;AACL;;;;"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="@types/powerapps-component-framework" />
2
+ import { IEntity } from "../interfaces";
3
+ export declare const useFetchXml: (context: ComponentFramework.Context<any>) => [(viewId: string) => Promise<{
4
+ fetchxml: string;
5
+ layoutjson: string;
6
+ }>, (entity: IEntity, fetchXml: string, query: string) => Promise<string>];
@@ -0,0 +1,52 @@
1
+ import { useRef } from 'react';
2
+ import { FetchXmlBuilder } from '@talxis/client-libraries';
3
+
4
+ const useFetchXml = (context) => {
5
+ const cachedFetchXml = useRef({});
6
+ const get = async (viewId) => {
7
+ if (!cachedFetchXml.current[viewId]) {
8
+ cachedFetchXml.current[viewId] = context.webAPI.retrieveRecord('savedquery', viewId, '?$select=fetchxml,layoutjson');
9
+ }
10
+ return cachedFetchXml.current[viewId];
11
+ };
12
+ const applyLookupQuery = async (entity, fetchXml, query) => {
13
+ const parser = new DOMParser();
14
+ const parsedFetchXml = parser.parseFromString(fetchXml, "application/xml");
15
+ const conditions = parsedFetchXml.getElementsByTagName("condition");
16
+ const placeholderConditions = [];
17
+ for (const cond of conditions) {
18
+ if (cond.getAttribute('value') === "{0}") {
19
+ if (query) {
20
+ cond.setAttribute('value', `%${query}%`);
21
+ }
22
+ placeholderConditions.push(cond);
23
+ }
24
+ }
25
+ if (!query) {
26
+ for (const cond of placeholderConditions) {
27
+ const parentFilter = cond.parentElement;
28
+ parentFilter?.removeChild(cond);
29
+ if (parentFilter?.children.length === 0) {
30
+ const grandParent = parentFilter.parentElement;
31
+ grandParent?.removeChild(parentFilter);
32
+ }
33
+ }
34
+ return new XMLSerializer().serializeToString(parsedFetchXml);
35
+ }
36
+ if (placeholderConditions.length > 0) {
37
+ return new XMLSerializer().serializeToString(parsedFetchXml);
38
+ }
39
+ else {
40
+ const metadata = await entity.metadata;
41
+ const xmlObject = FetchXmlBuilder.fetch.fromXml(fetchXml);
42
+ xmlObject.entity.addFilter(new FetchXmlBuilder.filter(FetchXmlBuilder.FilterType.Or, [
43
+ new FetchXmlBuilder.condition(metadata.PrimaryNameAttribute, FetchXmlBuilder.Operator.Like, [new FetchXmlBuilder.value(`%${query}%`)])
44
+ ]));
45
+ return xmlObject.toXml();
46
+ }
47
+ };
48
+ return [get, applyLookupQuery];
49
+ };
50
+
51
+ export { useFetchXml };
52
+ //# sourceMappingURL=useFetchXml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchXml.js","sources":["../../../../src/components/Lookup/hooks/useFetchXml.ts"],"sourcesContent":["import { useRef } from \"react\"\nimport { IEntity } from \"../interfaces\";\nimport { FetchXmlBuilder } from \"@talxis/client-libraries\";\n\nexport const useFetchXml = (context: ComponentFramework.Context<any>): [\n (viewId: string) => Promise<{ fetchxml: string, layoutjson: string }>,\n (entity: IEntity, fetchXml: string, query: string) => Promise<string>\n] => {\n const cachedFetchXml = useRef<{\n [viewId: string]: Promise<any>\n }>({});\n\n const get = async (viewId: string): Promise<{ fetchxml: string, layoutjson: string }> => {\n if (!cachedFetchXml.current[viewId]) {\n cachedFetchXml.current[viewId] = context.webAPI.retrieveRecord('savedquery', viewId, '?$select=fetchxml,layoutjson');\n }\n\n return cachedFetchXml.current[viewId];\n }\n const applyLookupQuery = async (entity: IEntity, fetchXml: string, query: string): Promise<string> => {\n const parser = new DOMParser();\n const parsedFetchXml = parser.parseFromString(fetchXml, \"application/xml\");\n const conditions = parsedFetchXml.getElementsByTagName(\"condition\");\n const placeholderConditions: Element[] = [];\n for (const cond of conditions) {\n if (cond.getAttribute('value') === \"{0}\") {\n if(query) {\n cond.setAttribute('value', `%${query}%`);\n }\n placeholderConditions.push(cond);\n }\n }\n if (!query) {\n for (const cond of placeholderConditions) {\n const parentFilter = cond.parentElement;\n parentFilter?.removeChild(cond);\n if(parentFilter?.children.length === 0) {\n const grandParent = parentFilter.parentElement;\n grandParent?.removeChild(parentFilter);\n }\n }\n return new XMLSerializer().serializeToString(parsedFetchXml);\n }\n if (placeholderConditions.length > 0) {\n return new XMLSerializer().serializeToString(parsedFetchXml);\n }\n else {\n const metadata = await entity.metadata;\n const xmlObject = FetchXmlBuilder.fetch.fromXml(fetchXml);\n xmlObject.entity.addFilter(new FetchXmlBuilder.filter(FetchXmlBuilder.FilterType.Or, [\n new FetchXmlBuilder.condition(metadata.PrimaryNameAttribute, FetchXmlBuilder.Operator.Like, [new FetchXmlBuilder.value(`%${query}%`)])\n ]))\n return xmlObject.toXml();\n }\n }\n return [get, applyLookupQuery]\n}"],"names":[],"mappings":";;;AAIa,MAAA,WAAW,GAAG,CAAC,OAAwC,KAGhE;AACA,IAAA,MAAM,cAAc,GAAG,MAAM,CAE1B,EAAE,CAAC,CAAC;AAEP,IAAA,MAAM,GAAG,GAAG,OAAO,MAAc,KAAuD;AACpF,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACjC,YAAA,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,8BAA8B,CAAC,CAAC;AACxH,SAAA;AAED,QAAA,OAAO,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1C,KAAC,CAAA;IACD,MAAM,gBAAgB,GAAG,OAAO,MAAe,EAAE,QAAgB,EAAE,KAAa,KAAqB;AACjG,QAAA,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,cAAc,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,qBAAqB,GAAc,EAAE,CAAC;AAC5C,QAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;YAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE;AACtC,gBAAA,IAAG,KAAK,EAAE;oBACN,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAI,CAAA,EAAA,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;AAC5C,iBAAA;AACD,gBAAA,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,aAAA;AACJ,SAAA;QACD,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE;AACtC,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;AACxC,gBAAA,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AAChC,gBAAA,IAAG,YAAY,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,oBAAA,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC;AAC/C,oBAAA,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;AAC1C,iBAAA;AACJ,aAAA;YACD,OAAO,IAAI,aAAa,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AAChE,SAAA;AACD,QAAA,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,OAAO,IAAI,aAAa,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AAChE,SAAA;AACI,aAAA;AACD,YAAA,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACvC,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1D,YAAA,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE;gBACjF,IAAI,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC,CAAC;AACzI,aAAA,CAAC,CAAC,CAAA;AACH,YAAA,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC;AAC5B,SAAA;AACL,KAAC,CAAA;AACD,IAAA,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;AAClC;;;;"}
@@ -0,0 +1,6 @@
1
+ import { IEntity, IMetadata } from "../interfaces";
2
+ interface ILoadedEntity extends Omit<IEntity, 'metadata'> {
3
+ metadata: IMetadata;
4
+ }
5
+ export declare const useLoadedEntities: (entities: IEntity[]) => [ILoadedEntity[] | null];
6
+ export {};
@@ -0,0 +1,20 @@
1
+ import { useState, useEffect } from 'react';
2
+
3
+ const useLoadedEntities = (entities) => {
4
+ const [loadedEntities, setLoadedEntities] = useState(null);
5
+ useEffect(() => {
6
+ (async () => {
7
+ setLoadedEntities(await Promise.all(entities.map(async (entity) => {
8
+ return {
9
+ entityName: entity.entityName,
10
+ selected: entity.selected,
11
+ metadata: await entity.metadata
12
+ };
13
+ })));
14
+ })();
15
+ }, [entities]);
16
+ return [loadedEntities];
17
+ };
18
+
19
+ export { useLoadedEntities };
20
+ //# sourceMappingURL=useLoadedEntities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLoadedEntities.js","sources":["../../../../src/components/Lookup/hooks/useLoadedEntities.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { IEntity, IMetadata } from \"../interfaces\";\n\ninterface ILoadedEntity extends Omit<IEntity, 'metadata'> {\n metadata: IMetadata\n}\n\nexport const useLoadedEntities = (entities: IEntity[]): [ILoadedEntity[] | null] => {\n const [loadedEntities, setLoadedEntities] = useState<ILoadedEntity[] | null>(null);\n useEffect(() => {\n (async () => {\n setLoadedEntities(await Promise.all(entities.map(async entity => {\n return {\n entityName: entity.entityName,\n selected: entity.selected,\n metadata: await entity.metadata\n }\n })))\n })();\n }, [entities]);\n\n return [loadedEntities]\n}"],"names":[],"mappings":";;AAOa,MAAA,iBAAiB,GAAG,CAAC,QAAmB,KAA8B;IAC/E,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAyB,IAAI,CAAC,CAAC;IACnF,SAAS,CAAC,MAAK;QACX,CAAC,YAAW;AACR,YAAA,iBAAiB,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAM,MAAM,KAAG;gBAC5D,OAAO;oBACH,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,oBAAA,QAAQ,EAAE,MAAM,MAAM,CAAC,QAAQ;iBAClC,CAAA;aACJ,CAAC,CAAC,CAAC,CAAA;SACP,GAAG,CAAC;AACT,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CAAC,cAAc,CAAC,CAAA;AAC3B;;;;"}
@@ -0,0 +1,43 @@
1
+ /// <reference types="@types/powerapps-component-framework" />
2
+ import { ITranslation } from "../../../hooks";
3
+ import { IEntity, ILayout, ILookup } from "../interfaces";
4
+ import { ITheme } from "@talxis/react-components";
5
+ export declare const useLookup: (props: ILookup) => [ComponentFramework.LookupValue[], IEntity[], ITranslation<Partial<import("../../..").ITranslations<{
6
+ search: {
7
+ 1033: string;
8
+ 1029: string;
9
+ };
10
+ newRecord: {
11
+ 1033: string;
12
+ 1029: string;
13
+ };
14
+ searching: {
15
+ 1033: string;
16
+ 1029: string;
17
+ };
18
+ noRecordsFound: {
19
+ 1033: string;
20
+ 1029: string;
21
+ };
22
+ resultsFrom: {
23
+ 1033: string;
24
+ 1029: string;
25
+ };
26
+ noName: {
27
+ 1033: string;
28
+ 1029: string;
29
+ };
30
+ placeholder: {
31
+ 1033: string;
32
+ 1029: string;
33
+ };
34
+ }>>>, {
35
+ create: (entityName: string) => void;
36
+ select: (record: ComponentFramework.LookupValue[] | undefined) => void;
37
+ deselect: (record: ComponentFramework.LookupValue) => void;
38
+ }, (entityName: string | null) => void, (query: string) => Promise<(ComponentFramework.LookupValue & {
39
+ entityData: {
40
+ [key: string]: any;
41
+ };
42
+ layout: ILayout;
43
+ })[]>, ITheme];
@@ -0,0 +1,120 @@
1
+ import { useState } from 'react';
2
+ import { lookupTranslations } from '../translations.js';
3
+ import { useFetchXml } from './useFetchXml.js';
4
+ import { useControl } from '../../../hooks/useControl.js';
5
+
6
+ const useLookup = (props) => {
7
+ const targets = props.parameters.value.attributes.Targets;
8
+ const boundValue = props.parameters.value.raw;
9
+ const context = props.context;
10
+ const { labels, theme, onNotifyOutputChanged } = useControl('Lookup', props, lookupTranslations);
11
+ const [getFetchXml, applyLookupQuery] = useFetchXml(context);
12
+ const [entities, setEntities] = useState(() => {
13
+ return targets.map(target => {
14
+ return {
15
+ entityName: target,
16
+ selected: targets.length === 1 ? true : false,
17
+ metadata: props.context.utils.getEntityMetadata(target, []),
18
+ };
19
+ });
20
+ });
21
+ const selectedEntity = entities.find(x => x.selected);
22
+ const selectEntity = (entityName) => {
23
+ setEntities([...entities].map(entity => {
24
+ return {
25
+ entityName: entity.entityName,
26
+ metadata: entity.metadata,
27
+ selected: entity.entityName === entityName
28
+ };
29
+ }));
30
+ };
31
+ const selectRecords = (records) => {
32
+ onNotifyOutputChanged({
33
+ value: records
34
+ });
35
+ };
36
+ const getSearchFetchXml = async (entityName, query, viewIdCallBack) => {
37
+ const response = (await props.parameters.value.getAllViews(entityName)).find(x => x.isDefault);
38
+ if (!response?.viewId) {
39
+ throw new Error(`Entity ${entityName} does not have a default view id!`);
40
+ }
41
+ viewIdCallBack(response.viewId);
42
+ let fetchXml = response?.fetchXml;
43
+ if (!fetchXml) {
44
+ fetchXml = (await getFetchXml(response.viewId)).fetchxml;
45
+ }
46
+ return applyLookupQuery(entities.find(x => x.entityName === entityName), fetchXml, query);
47
+ };
48
+ const getSearchResults = async (query) => {
49
+ if (props.onSearch) {
50
+ return props.onSearch(selectedEntity ? [selectedEntity?.entityName] : targets, query);
51
+ }
52
+ const fetchXmlMap = new Map();
53
+ const entityViewIdMap = new Map();
54
+ if (selectedEntity) {
55
+ fetchXmlMap.set(selectedEntity.entityName, getSearchFetchXml(selectedEntity.entityName, query, (viewId) => entityViewIdMap.set(selectedEntity.entityName, viewId)));
56
+ }
57
+ else {
58
+ for (const entity of targets) {
59
+ fetchXmlMap.set(entity, getSearchFetchXml(entity, query, (viewId) => entityViewIdMap.set(entity, viewId)));
60
+ }
61
+ }
62
+ await Promise.all(fetchXmlMap.values());
63
+ const responsePromiseMap = new Map();
64
+ for (const [entityName, fetchXml] of fetchXmlMap) {
65
+ responsePromiseMap.set(entityName, context.webAPI.retrieveMultipleRecords(entityName, `?$top=25&fetchXml=${encodeURIComponent((await fetchXml))}`));
66
+ }
67
+ await Promise.all(responsePromiseMap.values());
68
+ const result = [];
69
+ for (const [entityName, response] of responsePromiseMap) {
70
+ const layout = JSON.parse((await getFetchXml(entityViewIdMap.get(entityName))).layoutjson ?? "{}");
71
+ for (const entity of (await response).entities) {
72
+ const entityMetadata = await entities.find(x => x.entityName === entityName).metadata;
73
+ result.push({
74
+ entityType: entityName,
75
+ id: entity[entityMetadata.PrimaryIdAttribute],
76
+ name: entity[layout.Rows?.[0]?.Cells?.[0]?.Name] ?? entity[entityMetadata.PrimaryNameAttribute] ?? labels.noName(),
77
+ entityData: entity,
78
+ layout: layout
79
+ });
80
+ }
81
+ }
82
+ return result;
83
+ };
84
+ const createRecord = async (entityName) => {
85
+ const formParameters = props.onGetOnCreateFormParameters?.(entityName);
86
+ const result = await context.navigation.openForm({
87
+ entityName: entityName,
88
+ useQuickCreateForm: true
89
+ }, formParameters);
90
+ if (!result.savedEntityReference) {
91
+ return;
92
+ }
93
+ onNotifyOutputChanged({
94
+ value: [
95
+ ...boundValue,
96
+ ...result.savedEntityReference
97
+ ]
98
+ });
99
+ };
100
+ const deselectRecord = (record) => {
101
+ const map = new Map(boundValue.map(value => [value.id, value]));
102
+ map.delete(record.id);
103
+ onNotifyOutputChanged({
104
+ value: [...map.values()]
105
+ });
106
+ };
107
+ return [
108
+ boundValue, entities, labels, {
109
+ create: createRecord,
110
+ deselect: deselectRecord,
111
+ select: selectRecords
112
+ },
113
+ selectEntity,
114
+ getSearchResults,
115
+ theme
116
+ ];
117
+ };
118
+
119
+ export { useLookup };
120
+ //# sourceMappingURL=useLookup.js.map