@talxis/base-controls 1.2408.1 → 1.2408.3

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 (254) hide show
  1. package/dist/components/DateTime/DateTime.js +133 -1
  2. package/dist/components/DateTime/DateTime.js.map +1 -0
  3. package/dist/components/DateTime/components/Calendar.js +63 -1
  4. package/dist/components/DateTime/components/Calendar.js.map +1 -0
  5. package/dist/components/DateTime/hooks/useDateTime.js +137 -1
  6. package/dist/components/DateTime/hooks/useDateTime.js.map +1 -0
  7. package/dist/components/DateTime/index.js +3 -1
  8. package/dist/components/DateTime/index.js.map +1 -0
  9. package/dist/components/DateTime/styles.js +37 -1
  10. package/dist/components/DateTime/styles.js.map +1 -0
  11. package/dist/components/DateTime/translations.js +23 -1
  12. package/dist/components/DateTime/translations.js.map +1 -0
  13. package/dist/components/Decimal/Decimal.js +200 -1
  14. package/dist/components/Decimal/Decimal.js.map +1 -0
  15. package/dist/components/Decimal/components/ArrowButtons.js +38 -1
  16. package/dist/components/Decimal/components/ArrowButtons.js.map +1 -0
  17. package/dist/components/Decimal/components/styles.js +26 -1
  18. package/dist/components/Decimal/components/styles.js.map +1 -0
  19. package/dist/components/Decimal/index.js +2 -1
  20. package/dist/components/Decimal/index.js.map +1 -0
  21. package/dist/components/Decimal/interfaces.d.ts +1 -1
  22. package/dist/components/Duration/Duration.js +132 -1
  23. package/dist/components/Duration/Duration.js.map +1 -0
  24. package/dist/components/Duration/durationOptions.d.ts +2 -0
  25. package/dist/components/Duration/durationOptions.js +27 -0
  26. package/dist/components/Duration/durationOptions.js.map +1 -0
  27. package/dist/components/Duration/index.js +2 -1
  28. package/dist/components/Duration/index.js.map +1 -0
  29. package/dist/components/Duration/translations.js +31 -1
  30. package/dist/components/Duration/translations.js.map +1 -0
  31. package/dist/components/Grid/Grid.js +30 -1
  32. package/dist/components/Grid/Grid.js.map +1 -0
  33. package/dist/components/Grid/GridContext.js +6 -1
  34. package/dist/components/Grid/GridContext.js.map +1 -0
  35. package/dist/components/Grid/constants.js +4 -1
  36. package/dist/components/Grid/constants.js.map +1 -0
  37. package/dist/components/Grid/core/components/AgGrid/AgGrid.js +85 -1
  38. package/dist/components/Grid/core/components/AgGrid/AgGrid.js.map +1 -0
  39. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/EmptyRecords.js +12 -1
  40. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/EmptyRecords.js.map +1 -0
  41. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/styles.js +23 -1
  42. package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/styles.js.map +1 -0
  43. package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/LoadingOverlay.js +11 -1
  44. package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/LoadingOverlay.js.map +1 -0
  45. package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/styles.js +82 -1
  46. package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/styles.js.map +1 -0
  47. package/dist/components/Grid/core/components/AgGrid/controllers/useAgGridController.js +169 -1
  48. package/dist/components/Grid/core/components/AgGrid/controllers/useAgGridController.js.map +1 -0
  49. package/dist/components/Grid/core/components/AgGrid/model/AgGrid.js +116 -1
  50. package/dist/components/Grid/core/components/AgGrid/model/AgGrid.js.map +1 -0
  51. package/dist/components/Grid/core/components/AgGrid/styles.js +91 -1
  52. package/dist/components/Grid/core/components/AgGrid/styles.js.map +1 -0
  53. package/dist/components/Grid/core/components/Cell/Commands/Commands.js +29 -1
  54. package/dist/components/Grid/core/components/Cell/Commands/Commands.js.map +1 -0
  55. package/dist/components/Grid/core/components/Cell/Commands/Icon.js +14 -1
  56. package/dist/components/Grid/core/components/Cell/Commands/Icon.js.map +1 -0
  57. package/dist/components/Grid/core/components/Cell/Commands/styles.js +54 -1
  58. package/dist/components/Grid/core/components/Cell/Commands/styles.js.map +1 -0
  59. package/dist/components/Grid/core/components/Cell/Commands/useCommands.js +52 -1
  60. package/dist/components/Grid/core/components/Cell/Commands/useCommands.js.map +1 -0
  61. package/dist/components/Grid/core/components/Cell/EditableCell/EditableCell.js +148 -1
  62. package/dist/components/Grid/core/components/Cell/EditableCell/EditableCell.js.map +1 -0
  63. package/dist/components/Grid/core/components/Cell/ReadOnlyCell/ReadOnlyCell.js +139 -1
  64. package/dist/components/Grid/core/components/Cell/ReadOnlyCell/ReadOnlyCell.js.map +1 -0
  65. package/dist/components/Grid/core/components/Cell/ReadOnlyCell/ReadOnlyOptionSet/ReadOnlyOptionSet.js +49 -1
  66. package/dist/components/Grid/core/components/Cell/ReadOnlyCell/ReadOnlyOptionSet/ReadOnlyOptionSet.js.map +1 -0
  67. package/dist/components/Grid/core/components/Cell/ReadOnlyCell/ReadOnlyOptionSet/styles.js +27 -1
  68. package/dist/components/Grid/core/components/Cell/ReadOnlyCell/ReadOnlyOptionSet/styles.js.map +1 -0
  69. package/dist/components/Grid/core/components/Cell/ReadOnlyCell/styles.js +58 -1
  70. package/dist/components/Grid/core/components/Cell/ReadOnlyCell/styles.js.map +1 -0
  71. package/dist/components/Grid/core/components/ColumnHeader/ColumnHeader.js +60 -1
  72. package/dist/components/Grid/core/components/ColumnHeader/ColumnHeader.js.map +1 -0
  73. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/GlobalCheckbox.js +26 -1
  74. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/GlobalCheckbox.js.map +1 -0
  75. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/styles.js +19 -1
  76. package/dist/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/styles.js.map +1 -0
  77. package/dist/components/Grid/core/components/ColumnHeader/styles.js +44 -1
  78. package/dist/components/Grid/core/components/ColumnHeader/styles.js.map +1 -0
  79. package/dist/components/Grid/core/components/Component/Component.js +53 -1
  80. package/dist/components/Grid/core/components/Component/Component.js.map +1 -0
  81. package/dist/components/Grid/core/components/Component/controller/useComponentController.js +31 -1
  82. package/dist/components/Grid/core/components/Component/controller/useComponentController.js.map +1 -0
  83. package/dist/components/Grid/core/components/Component/model/Component.js +225 -1
  84. package/dist/components/Grid/core/components/Component/model/Component.js.map +1 -0
  85. package/dist/components/Grid/core/components/Dialog/Constants.js +9 -1
  86. package/dist/components/Grid/core/components/Dialog/Constants.js.map +1 -0
  87. package/dist/components/Grid/core/components/Dialog/Styles.js +61 -1
  88. package/dist/components/Grid/core/components/Dialog/Styles.js.map +1 -0
  89. package/dist/components/Grid/core/components/Dialog/index.js +16 -1
  90. package/dist/components/Grid/core/components/Dialog/index.js.map +1 -0
  91. package/dist/components/Grid/core/components/Dialog/interfaces/index.js +1 -0
  92. package/dist/components/Grid/core/components/Dialog/interfaces/index.js.map +1 -0
  93. package/dist/components/Grid/core/components/Save/Save.js +47 -1
  94. package/dist/components/Grid/core/components/Save/Save.js.map +1 -0
  95. package/dist/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.js +39 -1
  96. package/dist/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.js.map +1 -0
  97. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/RecordGrids.js +136 -1
  98. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/RecordGrids.js.map +1 -0
  99. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/styles.js +54 -1
  100. package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/styles.js.map +1 -0
  101. package/dist/components/Grid/core/components/Save/components/ChangeEditor/styles.js +37 -1
  102. package/dist/components/Grid/core/components/Save/components/ChangeEditor/styles.js.map +1 -0
  103. package/dist/components/Grid/core/components/Save/hooks/useSave.js +45 -1
  104. package/dist/components/Grid/core/components/Save/hooks/useSave.js.map +1 -0
  105. package/dist/components/Grid/core/components/Save/styles.js +44 -1
  106. package/dist/components/Grid/core/components/Save/styles.js.map +1 -0
  107. package/dist/components/Grid/core/controllers/useGridController.js +39 -1
  108. package/dist/components/Grid/core/controllers/useGridController.js.map +1 -0
  109. package/dist/components/Grid/core/enums/ConditionOperator.js +50 -1
  110. package/dist/components/Grid/core/enums/ConditionOperator.js.map +1 -0
  111. package/dist/components/Grid/core/enums/DataType.js +30 -1
  112. package/dist/components/Grid/core/enums/DataType.js.map +1 -0
  113. package/dist/components/Grid/core/hooks/useGridInstance.js +9 -1
  114. package/dist/components/Grid/core/hooks/useGridInstance.js.map +1 -0
  115. package/dist/components/Grid/core/hooks/useRefreshCallback.js +20 -1
  116. package/dist/components/Grid/core/hooks/useRefreshCallback.js.map +1 -0
  117. package/dist/components/Grid/core/hooks/useRerender.js +13 -1
  118. package/dist/components/Grid/core/hooks/useRerender.js.map +1 -0
  119. package/dist/components/Grid/core/model/Grid.js +249 -1
  120. package/dist/components/Grid/core/model/Grid.js.map +1 -0
  121. package/dist/components/Grid/core/model/GridDependency.js +28 -1
  122. package/dist/components/Grid/core/model/GridDependency.js.map +1 -0
  123. package/dist/components/Grid/core/model/Metadata.js +22 -1
  124. package/dist/components/Grid/core/model/Metadata.js.map +1 -0
  125. package/dist/components/Grid/core/services/RecordUpdateService/controllers/useRecordUpdateServiceController.js +25 -1
  126. package/dist/components/Grid/core/services/RecordUpdateService/controllers/useRecordUpdateServiceController.js.map +1 -0
  127. package/dist/components/Grid/core/services/RecordUpdateService/model/RecordUpdateService.js +190 -1
  128. package/dist/components/Grid/core/services/RecordUpdateService/model/RecordUpdateService.js.map +1 -0
  129. package/dist/components/Grid/filtering/components/FilterCallout/FilterCallout.js +50 -1
  130. package/dist/components/Grid/filtering/components/FilterCallout/FilterCallout.js.map +1 -0
  131. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionOperator/ConditionOperator.js +58 -1
  132. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionOperator/ConditionOperator.js.map +1 -0
  133. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValue.js +52 -1
  134. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValue.js.map +1 -0
  135. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.js +125 -1
  136. package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.js.map +1 -0
  137. package/dist/components/Grid/filtering/components/FilterCallout/styles.js +40 -1
  138. package/dist/components/Grid/filtering/components/FilterCallout/styles.js.map +1 -0
  139. package/dist/components/Grid/filtering/constants.js +51 -1
  140. package/dist/components/Grid/filtering/constants.js.map +1 -0
  141. package/dist/components/Grid/filtering/controller/useColumnFilterConditionController.js +42 -1
  142. package/dist/components/Grid/filtering/controller/useColumnFilterConditionController.js.map +1 -0
  143. package/dist/components/Grid/filtering/model/Condition.js +297 -1
  144. package/dist/components/Grid/filtering/model/Condition.js.map +1 -0
  145. package/dist/components/Grid/filtering/model/Filtering.js +78 -1
  146. package/dist/components/Grid/filtering/model/Filtering.js.map +1 -0
  147. package/dist/components/Grid/filtering/utils/FilteringUtilts.js +195 -1
  148. package/dist/components/Grid/filtering/utils/FilteringUtilts.js.map +1 -0
  149. package/dist/components/Grid/index.js +2 -1
  150. package/dist/components/Grid/index.js.map +1 -0
  151. package/dist/components/Grid/paging/components/Paging/Paging.js +63 -1
  152. package/dist/components/Grid/paging/components/Paging/Paging.js.map +1 -0
  153. package/dist/components/Grid/paging/components/Paging/styles.js +41 -1
  154. package/dist/components/Grid/paging/components/Paging/styles.js.map +1 -0
  155. package/dist/components/Grid/paging/controllers/usePagingController.js +23 -1
  156. package/dist/components/Grid/paging/controllers/usePagingController.js.map +1 -0
  157. package/dist/components/Grid/paging/model/Paging.js +56 -1
  158. package/dist/components/Grid/paging/model/Paging.js.map +1 -0
  159. package/dist/components/Grid/selection/controllers/useSelectionController.js +17 -1
  160. package/dist/components/Grid/selection/controllers/useSelectionController.js.map +1 -0
  161. package/dist/components/Grid/selection/model/Selection.js +69 -1
  162. package/dist/components/Grid/selection/model/Selection.js.map +1 -0
  163. package/dist/components/Grid/sorting/Sorting.js +33 -1
  164. package/dist/components/Grid/sorting/Sorting.js.map +1 -0
  165. package/dist/components/Grid/sorting/components/SortingContextualMenu/SortingContextualMenu.js +120 -1
  166. package/dist/components/Grid/sorting/components/SortingContextualMenu/SortingContextualMenu.js.map +1 -0
  167. package/dist/components/Grid/sorting/components/SortingContextualMenu/styles.js +15 -1
  168. package/dist/components/Grid/sorting/components/SortingContextualMenu/styles.js.map +1 -0
  169. package/dist/components/Grid/sorting/controllers/useColumnSortingController.js +21 -1
  170. package/dist/components/Grid/sorting/controllers/useColumnSortingController.js.map +1 -0
  171. package/dist/components/Grid/translations.js +81 -1
  172. package/dist/components/Grid/translations.js.map +1 -0
  173. package/dist/components/Grid/validation/controllers/useRecordValidationController.js +25 -1
  174. package/dist/components/Grid/validation/controllers/useRecordValidationController.js.map +1 -0
  175. package/dist/components/Grid/validation/model/ColumnValidation.js +84 -1
  176. package/dist/components/Grid/validation/model/ColumnValidation.js.map +1 -0
  177. package/dist/components/Lookup/Lookup.js +201 -1
  178. package/dist/components/Lookup/Lookup.js.map +1 -0
  179. package/dist/components/Lookup/components/RecordCreator.js +37 -1
  180. package/dist/components/Lookup/components/RecordCreator.js.map +1 -0
  181. package/dist/components/Lookup/components/TargetSelector.js +19 -1
  182. package/dist/components/Lookup/components/TargetSelector.js.map +1 -0
  183. package/dist/components/Lookup/hooks/useFetchXml.js +27 -1
  184. package/dist/components/Lookup/hooks/useFetchXml.js.map +1 -0
  185. package/dist/components/Lookup/hooks/useLoadedEntities.js +20 -1
  186. package/dist/components/Lookup/hooks/useLoadedEntities.js.map +1 -0
  187. package/dist/components/Lookup/hooks/useLookup.js +111 -1
  188. package/dist/components/Lookup/hooks/useLookup.js.map +1 -0
  189. package/dist/components/Lookup/index.js +3 -1
  190. package/dist/components/Lookup/index.js.map +1 -0
  191. package/dist/components/Lookup/styles.js +98 -1
  192. package/dist/components/Lookup/styles.js.map +1 -0
  193. package/dist/components/Lookup/translations.js +33 -1
  194. package/dist/components/Lookup/translations.js.map +1 -0
  195. package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.js +74 -1
  196. package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.js.map +1 -0
  197. package/dist/components/MultiSelectOptionSet/index.js +2 -1
  198. package/dist/components/MultiSelectOptionSet/index.js.map +1 -0
  199. package/dist/components/OptionSet/OptionSet.js +61 -1
  200. package/dist/components/OptionSet/OptionSet.js.map +1 -0
  201. package/dist/components/OptionSet/index.js +2 -1
  202. package/dist/components/OptionSet/index.js.map +1 -0
  203. package/dist/components/TextField/TextField.js +113 -1
  204. package/dist/components/TextField/TextField.js.map +1 -0
  205. package/dist/components/TextField/index.js +2 -1
  206. package/dist/components/TextField/index.js.map +1 -0
  207. package/dist/components/TwoOptions/TwoOptions.js +36 -1
  208. package/dist/components/TwoOptions/TwoOptions.js.map +1 -0
  209. package/dist/components/TwoOptions/index.js +2 -1
  210. package/dist/components/TwoOptions/index.js.map +1 -0
  211. package/dist/constants.js +35 -1
  212. package/dist/constants.js.map +1 -0
  213. package/dist/hooks/index.js +7 -1
  214. package/dist/hooks/index.js.map +1 -0
  215. package/dist/hooks/useControl.js +95 -1
  216. package/dist/hooks/useControl.js.map +1 -0
  217. package/dist/hooks/useControlSizing.js +15 -1
  218. package/dist/hooks/useControlSizing.js.map +1 -0
  219. package/dist/hooks/useControlTheme.js +9 -1
  220. package/dist/hooks/useControlTheme.js.map +1 -0
  221. package/dist/hooks/useFocusIn.js +33 -1
  222. package/dist/hooks/useFocusIn.js.map +1 -0
  223. package/dist/hooks/useInputBasedControl.js +38 -1
  224. package/dist/hooks/useInputBasedControl.js.map +1 -0
  225. package/dist/hooks/useMouseOver.js +23 -1
  226. package/dist/hooks/useMouseOver.js.map +1 -0
  227. package/dist/index.d.ts +1 -1
  228. package/dist/index.js +19 -1
  229. package/dist/index.js.map +1 -0
  230. package/dist/interfaces/index.js +1 -0
  231. package/dist/interfaces/index.js.map +1 -0
  232. package/dist/utils/Numeral.js +64 -1
  233. package/dist/utils/Numeral.js.map +1 -0
  234. package/dist/utils/Theme.js +72 -1
  235. package/dist/utils/Theme.js.map +1 -0
  236. package/dist/utils/index.js +3 -1
  237. package/dist/utils/index.js.map +1 -0
  238. package/package.json +4 -2
  239. package/dist/Grid-b7e6190d.js +0 -1
  240. package/dist/components/DateTime/interfaces.js +0 -1
  241. package/dist/components/Decimal/interfaces.js +0 -1
  242. package/dist/components/Duration/interfaces.js +0 -1
  243. package/dist/components/Grid/core/interfaces/IGridColumn.js +0 -1
  244. package/dist/components/Grid/core/interfaces/IGridContext.js +0 -1
  245. package/dist/components/Grid/interfaces.js +0 -1
  246. package/dist/components/Lookup/interfaces.js +0 -1
  247. package/dist/components/MultiSelectOptionSet/interfaces.js +0 -1
  248. package/dist/components/OptionSet/interfaces.js +0 -1
  249. package/dist/components/TextField/interfaces.js +0 -1
  250. package/dist/components/TwoOptions/interfaces.js +0 -1
  251. package/dist/interfaces/context.js +0 -1
  252. package/dist/interfaces/parameters.js +0 -1
  253. package/dist/interfaces/property.js +0 -1
  254. package/dist/interfaces/theme.js +0 -1
@@ -1 +1,53 @@
1
- import{jsx as o,Fragment as t}from"react/jsx-runtime";import{DateTime as s}from"../../../../DateTime/DateTime.js";import{Decimal as e}from"../../../../Decimal/Decimal.js";import{Lookup as i}from"../../../../Lookup/Lookup.js";import{MultiSelectOptionSet as r}from"../../../../MultiSelectOptionSet/MultiSelectOptionSet.js";import{OptionSet as m}from"../../../../OptionSet/OptionSet.js";import{TextField as n}from"../../../../TextField/TextField.js";import{TwoOptions as p}from"../../../../TwoOptions/TwoOptions.js";import{Duration as a}from"../../../../Duration/Duration.js";import{DataType as u}from"../../enums/DataType.js";import{useComponentController as l}from"./controller/useComponentController.js";import"@fluentui/react";import"react";import"../../../../DateTime/styles.js";import"../../../../DateTime/hooks/useDateTime.js";import"../../../../../hooks/useInputBasedControl.js";import"../../../../../hooks/useControl.js";import"fast-deep-equal/es6";import"merge-anything";import"liquidjs";import"../../../../../hooks/useControlTheme.js";import"../../../../../utils/Theme.js";import"@fluentui/react-migration-v8-v9";import"../../../../../hooks/useControlSizing.js";import"dayjs";import"dayjs/plugin/utc";import"dayjs/plugin/customParseFormat";import"../../../../DateTime/translations.js";import"../../../../DateTime/components/Calendar.js";import"@fluentui/react/lib/Calendar";import"@talxis/react-components";import"numeral";import"../../../../../utils/Numeral.js";import"../../../../../constants.js";import"../../../../Decimal/components/ArrowButtons.js";import"../../../../Decimal/components/styles.js";import"tslib";import"../../../../Lookup/hooks/useLookup.js";import"../../../../Lookup/translations.js";import"../../../../Lookup/hooks/useFetchXml.js";import"@talxis/client-libraries";import"../../../../Lookup/components/TargetSelector.js";import"@fluentui/react/lib/Text";import"../../../../Lookup/styles.js";import"../../../../Lookup/hooks/useLoadedEntities.js";import"../../../../../hooks/useMouseOver.js";import"../../../../Lookup/components/RecordCreator.js";import"../../../../../hooks/useFocusIn.js";import"../../../../Duration/translations.js";import"./model/Component.js";import"../../../validation/model/ColumnValidation.js";import"validator/es/lib/isEmail";import"validator/es/lib/isURL";import"../../model/GridDependency.js";import"../../hooks/useGridInstance.js";import"../../../GridContext.js";const c=c=>{const j=l(c),{column:O,componentProps:T}=Object.assign({},j);if(!O)return o(t,{});switch(O.dataType){case u.TWO_OPTIONS:return o(p,Object.assign({},T));case u.OPTIONSET:return o(m,Object.assign({},T));case u.MULTI_SELECT_OPTIONSET:return o(r,Object.assign({},T));case u.DATE_AND_TIME_DATE_AND_TIME:case u.DATE_AND_TIME_DATE_ONLY:return o(s,Object.assign({},T));case u.DECIMAL:case u.WHOLE_NONE:case u.CURRENCY:return o(e,Object.assign({},T));case u.LOOKUP_SIMPLE:case u.LOOKUP_OWNER:case u.LOOKUP_CUSTOMER:return o(i,Object.assign({},T));case u.WHOLE_DURATION:return o(a,Object.assign({},T));default:return o(n,Object.assign({},T))}};export{c as Component};
1
+ import { jsx, Fragment } from 'react/jsx-runtime';
2
+ import { DateTime } from '../../../../DateTime/DateTime.js';
3
+ import { Decimal } from '../../../../Decimal/Decimal.js';
4
+ import { Lookup } from '../../../../Lookup/Lookup.js';
5
+ import { MultiSelectOptionSet } from '../../../../MultiSelectOptionSet/MultiSelectOptionSet.js';
6
+ import { OptionSet } from '../../../../OptionSet/OptionSet.js';
7
+ import { TextField } from '../../../../TextField/TextField.js';
8
+ import { TwoOptions } from '../../../../TwoOptions/TwoOptions.js';
9
+ import { Duration } from '../../../../Duration/Duration.js';
10
+ import { DataType } from '../../enums/DataType.js';
11
+ import { useComponentController } from './controller/useComponentController.js';
12
+
13
+ const Component = (props) => {
14
+ const controller = useComponentController(props);
15
+ const { column, componentProps } = { ...controller };
16
+ if (!column) {
17
+ return jsx(Fragment, {});
18
+ }
19
+ switch (column.dataType) {
20
+ case DataType.TWO_OPTIONS: {
21
+ return jsx(TwoOptions, { ...componentProps });
22
+ }
23
+ case DataType.OPTIONSET: {
24
+ return jsx(OptionSet, { ...componentProps });
25
+ }
26
+ case DataType.MULTI_SELECT_OPTIONSET: {
27
+ return jsx(MultiSelectOptionSet, { ...componentProps });
28
+ }
29
+ case DataType.DATE_AND_TIME_DATE_AND_TIME:
30
+ case DataType.DATE_AND_TIME_DATE_ONLY: {
31
+ return jsx(DateTime, { ...componentProps });
32
+ }
33
+ case DataType.DECIMAL:
34
+ case DataType.WHOLE_NONE:
35
+ case DataType.CURRENCY: {
36
+ return jsx(Decimal, { ...componentProps });
37
+ }
38
+ case DataType.LOOKUP_SIMPLE:
39
+ case DataType.LOOKUP_OWNER:
40
+ case DataType.LOOKUP_CUSTOMER: {
41
+ return jsx(Lookup, { ...componentProps });
42
+ }
43
+ case DataType.WHOLE_DURATION: {
44
+ return jsx(Duration, { ...componentProps });
45
+ }
46
+ default: {
47
+ return jsx(TextField, { ...componentProps });
48
+ }
49
+ }
50
+ };
51
+
52
+ export { Component };
53
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component.js","sources":["../../../../../../src/components/Grid/core/components/Component/Component.tsx"],"sourcesContent":["import { IParameters } from \"../../../../../interfaces/parameters\";\nimport { DateTime } from \"../../../../DateTime/DateTime\";\nimport { Decimal } from \"../../../../Decimal/Decimal\";\nimport { Lookup } from \"../../../../Lookup/Lookup\";\nimport { MultiSelectOptionSet } from \"../../../../MultiSelectOptionSet/MultiSelectOptionSet\";\nimport { OptionSet } from \"../../../../OptionSet/OptionSet\";\nimport { TextField } from \"../../../../TextField/TextField\";\nimport { TwoOptions } from \"../../../../TwoOptions/TwoOptions\";\nimport { Duration } from \"../../../../Duration/Duration\";\nimport { DataType } from \"../../enums/DataType\";\nimport { IGridColumn } from \"../../interfaces/IGridColumn\";\nimport { useComponentController } from \"./controller/useComponentController\";\nimport React from 'react';\nimport { IControl } from \"../../../../../interfaces/context\";\n\nexport interface IControlProps {\n column: IGridColumn;\n value: any;\n formattedValue?: string;\n onNotifyOutputChanged: (value: any) => void;\n onOverrideControlProps?: (props: IControl<any, any, any, any>) => IControl<any, any, any, any>;\n}\n\nexport const Component = (props: IControlProps) => {\n const controller = useComponentController(props);\n const {column, componentProps} = {...controller};\n if(!column) {\n return <></>\n }\n switch(column.dataType) {\n case DataType.TWO_OPTIONS: {\n return <TwoOptions {...componentProps!} />\n }\n case DataType.OPTIONSET: {\n return <OptionSet {...componentProps!} />\n }\n case DataType.MULTI_SELECT_OPTIONSET: {\n return <MultiSelectOptionSet {...componentProps!} />\n }\n case DataType.DATE_AND_TIME_DATE_AND_TIME:\n case DataType.DATE_AND_TIME_DATE_ONLY: {\n return <DateTime {...componentProps!} />\n }\n case DataType.DECIMAL:\n case DataType.WHOLE_NONE:\n case DataType.CURRENCY: {\n return <Decimal {...componentProps!} />\n }\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_OWNER:\n case DataType.LOOKUP_CUSTOMER: {\n return <Lookup {...componentProps!} />\n }\n case DataType.WHOLE_DURATION: {\n return <Duration {...componentProps!} />\n }\n default: {\n return <TextField {...componentProps!} />\n }\n }\n}"],"names":["_jsx"],"mappings":";;;;;;;;;;;;AAuBa,MAAA,SAAS,GAAG,CAAC,KAAoB,KAAI;AAC9C,IAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,EAAC,MAAM,EAAE,cAAc,EAAC,GAAG,EAAC,GAAG,UAAU,EAAC,CAAC;IACjD,IAAG,CAAC,MAAM,EAAE;AACR,QAAA,OAAOA,iBAAK,CAAA;AACf,KAAA;IACD,QAAO,MAAM,CAAC,QAAQ;AAClB,QAAA,KAAK,QAAQ,CAAC,WAAW,EAAE;AACvB,YAAA,OAAOA,GAAC,CAAA,UAAU,EAAK,EAAA,GAAA,cAAe,GAAI,CAAA;AAC7C,SAAA;AACD,QAAA,KAAK,QAAQ,CAAC,SAAS,EAAE;AACrB,YAAA,OAAOA,GAAC,CAAA,SAAS,EAAK,EAAA,GAAA,cAAe,GAAI,CAAA;AAC5C,SAAA;AACD,QAAA,KAAK,QAAQ,CAAC,sBAAsB,EAAE;AAClC,YAAA,OAAOA,GAAC,CAAA,oBAAoB,EAAK,EAAA,GAAA,cAAe,GAAI,CAAA;AACvD,SAAA;QACD,KAAK,QAAQ,CAAC,2BAA2B,CAAC;AAC1C,QAAA,KAAK,QAAQ,CAAC,uBAAuB,EAAE;AACnC,YAAA,OAAOA,GAAC,CAAA,QAAQ,EAAK,EAAA,GAAA,cAAe,GAAI,CAAA;AAC3C,SAAA;QACD,KAAK,QAAQ,CAAC,OAAO,CAAC;QACtB,KAAK,QAAQ,CAAC,UAAU,CAAC;AACzB,QAAA,KAAK,QAAQ,CAAC,QAAQ,EAAE;AACpB,YAAA,OAAOA,GAAC,CAAA,OAAO,EAAK,EAAA,GAAA,cAAe,GAAI,CAAA;AAC1C,SAAA;QACD,KAAK,QAAQ,CAAC,aAAa,CAAC;QAC5B,KAAK,QAAQ,CAAC,YAAY,CAAC;AAC3B,QAAA,KAAK,QAAQ,CAAC,eAAe,EAAE;AAC3B,YAAA,OAAOA,GAAC,CAAA,MAAM,EAAK,EAAA,GAAA,cAAe,GAAI,CAAA;AACzC,SAAA;AACD,QAAA,KAAK,QAAQ,CAAC,cAAc,EAAE;AAC1B,YAAA,OAAOA,GAAC,CAAA,QAAQ,EAAK,EAAA,GAAA,cAAe,GAAI,CAAA;AAC3C,SAAA;AACD,QAAA,SAAS;AACL,YAAA,OAAOA,GAAC,CAAA,SAAS,EAAK,EAAA,GAAA,cAAe,GAAI,CAAA;AAC5C,SAAA;AACJ,KAAA;AACL;;;;"}
@@ -1 +1,31 @@
1
- import{__awaiter as o}from"tslib";import{useMemo as t,useState as i,useRef as r,useEffect as m}from"react";import{Component as n}from"../model/Component.js";import{useGridInstance as e}from"../../../hooks/useGridInstance.js";import"dayjs";import"../../../../validation/model/ColumnValidation.js";import"validator/es/lib/isEmail";import"validator/es/lib/isURL";import"../../../enums/DataType.js";import"../../../model/GridDependency.js";import"../../../../GridContext.js";const s=s=>{const p=e(),d=t((()=>new n(p)),[]),[l,a]=i(),c=r(!0);return m((()=>{o(void 0,void 0,void 0,(function*(){const o=yield d.getControlProps(s);c.current&&a({column:s.column,componentProps:o})}))}),[s]),m((()=>()=>{c.current=!1}),[]),l};export{s as useComponentController};
1
+ import { useMemo, useState, useRef, useEffect } from 'react';
2
+ import { Component } from '../model/Component.js';
3
+ import { useGridInstance } from '../../../hooks/useGridInstance.js';
4
+
5
+ const useComponentController = (props) => {
6
+ const grid = useGridInstance();
7
+ const component = useMemo(() => new Component(grid), []);
8
+ const [controller, setController] = useState();
9
+ const mountedRef = useRef(true);
10
+ useEffect(() => {
11
+ (async () => {
12
+ const componentProps = await component.getControlProps(props);
13
+ if (!mountedRef.current) {
14
+ return;
15
+ }
16
+ setController({
17
+ column: props.column,
18
+ componentProps: componentProps
19
+ });
20
+ })();
21
+ }, [props]);
22
+ useEffect(() => {
23
+ return () => {
24
+ mountedRef.current = false;
25
+ };
26
+ }, []);
27
+ return controller;
28
+ };
29
+
30
+ export { useComponentController };
31
+ //# sourceMappingURL=useComponentController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useComponentController.js","sources":["../../../../../../../src/components/Grid/core/components/Component/controller/useComponentController.ts"],"sourcesContent":["import { useEffect, useMemo,useRef,useState } from \"react\"\nimport { IControlProps } from \"../Component\";\nimport { Component } from '../model/Component';\nimport { useGridInstance } from \"../../../hooks/useGridInstance\";\nimport { IControl } from \"../../../../../../interfaces/context\";\nimport { IGridColumn } from \"../../../interfaces/IGridColumn\";\n\ninterface IControlController {\n column: IGridColumn;\n componentProps: IControl<any, any, any, any>;\n}\n\nexport const useComponentController = (props: IControlProps): IControlController | undefined => {\n const grid = useGridInstance();\n const component = useMemo(() => new Component(grid), []);\n const [controller, setController] = useState<IControlController>();\n const mountedRef = useRef<boolean>(true);\n \n useEffect(() => {\n (async () => {\n const componentProps = await component.getControlProps(props);\n if(!mountedRef.current) {\n return;\n }\n setController({\n column: props.column,\n componentProps: componentProps\n })\n })();\n }, [props]);\n\n useEffect(() => {\n return () => {\n mountedRef.current = false;\n }\n }, []);\n\n return controller;\n}"],"names":[],"mappings":";;;;AAYa,MAAA,sBAAsB,GAAG,CAAC,KAAoB,KAAoC;AAC3F,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,EAAsB,CAAC;AACnE,IAAA,MAAM,UAAU,GAAG,MAAM,CAAU,IAAI,CAAC,CAAC;IAEzC,SAAS,CAAC,MAAK;QACX,CAAC,YAAW;YACR,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC9D,YAAA,IAAG,CAAC,UAAU,CAAC,OAAO,EAAE;gBACpB,OAAO;AACV,aAAA;AACD,YAAA,aAAa,CAAC;gBACV,MAAM,EAAE,KAAK,CAAC,MAAM;AACpB,gBAAA,cAAc,EAAE,cAAc;AACjC,aAAA,CAAC,CAAA;SACL,GAAG,CAAC;AACT,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,SAAS,CAAC,MAAK;AACX,QAAA,OAAO,MAAK;AACR,YAAA,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;AAC/B,SAAC,CAAA;KACJ,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,OAAO,UAAU,CAAC;AACtB;;;;"}
@@ -1 +1,225 @@
1
- import{__awaiter as e}from"tslib";import t from"dayjs";import{ColumnValidation as r}from"../../../../validation/model/ColumnValidation.js";import{DataType as a}from"../../../enums/DataType.js";import{GridDependency as o}from"../../../model/GridDependency.js";import"validator/es/lib/isEmail";import"validator/es/lib/isURL";class Component extends o{constructor(){super(...arguments),this._debouncedGetLookupValue=((t,r)=>{let a=null,o=null;return(...i)=>e(void 0,void 0,void 0,(function*(){return o||(o=t(...i)),a&&clearTimeout(a),a=setTimeout((()=>{o=null}),r),o}))})(this._getLookupValue.bind(this),50)}getControlProps(o){var i,n;return e(this,void 0,void 0,(function*(){const{column:s,value:u,onNotifyOutputChanged:l,formattedValue:d}=Object.assign({},o),[c,p]=new r(this._grid,o.column).validate(u),m=null!==(i=null==o?void 0:o.onOverrideControlProps)&&void 0!==i?i:e=>e;switch(s.dataType){case a.LOOKUP_SIMPLE:case a.LOOKUP_OWNER:case a.LOOKUP_CUSTOMER:{const t=yield this._grid.metadata.get(s),r=null!==(n=t.Attributes.get(s.attributeName).attributeDescriptor.Targets)&&void 0!==n?n:[];s.dataType===a.LOOKUP_OWNER&&r.push("systemuser","team");return m({context:this._pcfContext,parameters:{value:{getAllViews:(t,r=64)=>e(this,void 0,void 0,(function*(){const a=`${t}_${r}`;Component._lookupSavedQueriesCache.get(a)||Component._lookupSavedQueriesCache.set(a,new Promise((a=>e(this,void 0,void 0,(function*(){const e=yield this._pcfContext.webAPI.retrieveMultipleRecords("savedquery",`?$filter=returnedtypecode eq '${t}' and querytype eq ${r} and isdefault eq true&$select=name,savedqueryid,fetchxml`);a(e.entities[0])})))));const o=yield Component._lookupSavedQueriesCache.get(a);return[{isDefault:!0,viewName:o.name,viewId:o.savedqueryid,fetchXml:o.fetchxml}]})),raw:yield this._debouncedGetLookupValue(r,u),attributes:{Targets:r,DisplayName:t.DisplayName},error:!c,errorMessage:p}},onNotifyOutputChanged:e=>l(e.value)})}case a.TWO_OPTIONS:{const e=u,[t,r]=yield this._grid.metadata.getOptions(s);return m({context:this._pcfContext,parameters:{value:{raw:!0===e,error:!c,errorMessage:p,attributes:{Options:r}}},onNotifyOutputChanged:e=>l(e.value)})}case a.OPTIONSET:{const e=u,[t,r]=yield this._grid.metadata.getOptions(s);return m({context:this._pcfContext,parameters:{value:{raw:null!=e?e:null,error:!c,errorMessage:p,attributes:{Options:r}}},onNotifyOutputChanged:e=>l(e.value)})}case a.MULTI_SELECT_OPTIONSET:{const[e,t]=yield this._grid.metadata.getOptions(s),r=u;return m({context:this._pcfContext,parameters:{value:{raw:null!=r?r:null,error:!c,errorMessage:p,attributes:{Options:t}}},onNotifyOutputChanged:e=>l(e.value)})}case a.DATE_AND_TIME_DATE_AND_TIME:case a.DATE_AND_TIME_DATE_ONLY:{const e=u,r=yield this._grid.metadata.get(s),a=t(e);return m({context:this._pcfContext,parameters:{value:{raw:a.isValid()?a.toDate():e,error:!c,errorMessage:p,attributes:{Behavior:r.Attributes.get(s.attributeName).Behavior,Format:s.dataType}}},onNotifyOutputChanged:e=>l(e.value)})}case a.WHOLE_NONE:case a.DECIMAL:case a.CURRENCY:case a.WHOLE_DURATION:{const e=u,t=(yield this._grid.metadata.get(s)).Attributes.get(s.attributeName).Precision;return m({context:this._pcfContext,parameters:{value:{raw:null!=e?e:null,error:!c,formatted:d,errorMessage:p,type:s.dataType,attributes:{Precision:t}},NotifyOutputChangedOnUnmount:{raw:!0}},onNotifyOutputChanged:e=>l(e.value)})}default:return m({context:this._pcfContext,parameters:{isResizable:{raw:!1},NotifyOutputChangedOnUnmount:{raw:!0},value:{raw:u,error:!c,errorMessage:p}},onNotifyOutputChanged:e=>l(e.value)})}}))}_getLookupValue(t,r){return e(this,void 0,void 0,(function*(){if(!r||0===r.length)return[];if(!r[0].entityType)for(const e of r)for(const r of t)try{const t=yield this._pcfContext.utils.getEntityMetadata(r,[]),a=yield this._pcfContext.webAPI.retrieveRecord(r,e.id,`?$select=${t.PrimaryNameAttribute}`);e.entityType=r,e.name=a[t.PrimaryNameAttribute];break}catch(e){continue}return r}))}}Component._lookupSavedQueriesCache=new Map;export{Component};
1
+ import dayjs from 'dayjs';
2
+ import { ColumnValidation } from '../../../../validation/model/ColumnValidation.js';
3
+ import { DataType } from '../../../enums/DataType.js';
4
+ import { GridDependency } from '../../../model/GridDependency.js';
5
+
6
+ const debounce = (func, wait) => {
7
+ let timeout = null;
8
+ let promiseCache = null;
9
+ return async (...args) => {
10
+ if (!promiseCache) {
11
+ promiseCache = func(...args);
12
+ }
13
+ if (timeout)
14
+ clearTimeout(timeout);
15
+ timeout = setTimeout(() => {
16
+ promiseCache = null;
17
+ }, wait);
18
+ return promiseCache;
19
+ };
20
+ };
21
+ class Component extends GridDependency {
22
+ constructor() {
23
+ super(...arguments);
24
+ this._debouncedGetLookupValue = debounce(this._getLookupValue.bind(this), 50);
25
+ }
26
+ async getControlProps(props) {
27
+ const { column, value, onNotifyOutputChanged, formattedValue } = { ...props };
28
+ const [isValid, validationErrorMessage] = new ColumnValidation(this._grid, props.column).validate(value);
29
+ const onOverrideControlProps = props?.onOverrideControlProps ?? ((props) => props);
30
+ switch (column.dataType) {
31
+ case DataType.LOOKUP_SIMPLE:
32
+ case DataType.LOOKUP_OWNER:
33
+ case DataType.LOOKUP_CUSTOMER: {
34
+ const columnMetadata = await this._grid.metadata.get(column);
35
+ const targets = columnMetadata.Attributes.get(column.attributeName).attributeDescriptor.Targets ?? [];
36
+ if (column.dataType === DataType.LOOKUP_OWNER) {
37
+ targets.push('systemuser', 'team');
38
+ }
39
+ const result = {
40
+ context: this._pcfContext,
41
+ parameters: {
42
+ value: {
43
+ getAllViews: async (entityName, __queryType = 64) => {
44
+ const cacheKey = `${entityName}_${__queryType}`;
45
+ if (!Component._lookupSavedQueriesCache.get(cacheKey)) {
46
+ Component._lookupSavedQueriesCache.set(cacheKey, new Promise(async (resolve) => {
47
+ const response = await this._pcfContext.webAPI.retrieveMultipleRecords('savedquery', `?$filter=returnedtypecode eq '${entityName}' and querytype eq ${__queryType} and isdefault eq true&$select=name,savedqueryid,fetchxml`);
48
+ resolve(response.entities[0]);
49
+ }));
50
+ }
51
+ const result = await Component._lookupSavedQueriesCache.get(cacheKey);
52
+ return [
53
+ {
54
+ isDefault: true,
55
+ viewName: result.name,
56
+ viewId: result.savedqueryid,
57
+ fetchXml: result.fetchxml
58
+ }
59
+ ];
60
+ },
61
+ raw: await this._debouncedGetLookupValue(targets, value),
62
+ attributes: {
63
+ Targets: targets,
64
+ DisplayName: columnMetadata.DisplayName
65
+ },
66
+ error: !isValid,
67
+ errorMessage: validationErrorMessage,
68
+ }
69
+ },
70
+ onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)
71
+ };
72
+ return onOverrideControlProps(result);
73
+ }
74
+ case DataType.TWO_OPTIONS: {
75
+ const twoOptionsValue = value;
76
+ const [defaultValue, options] = await this._grid.metadata.getOptions(column);
77
+ return onOverrideControlProps({
78
+ context: this._pcfContext,
79
+ parameters: {
80
+ value: {
81
+ raw: twoOptionsValue === true ? true : false,
82
+ error: !isValid,
83
+ errorMessage: validationErrorMessage,
84
+ attributes: {
85
+ Options: options
86
+ }
87
+ }
88
+ },
89
+ onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)
90
+ });
91
+ }
92
+ case DataType.OPTIONSET: {
93
+ const optionSetValue = value;
94
+ const [defaultValue, options] = await this._grid.metadata.getOptions(column);
95
+ return onOverrideControlProps({
96
+ context: this._pcfContext,
97
+ parameters: {
98
+ value: {
99
+ raw: optionSetValue ?? null,
100
+ error: !isValid,
101
+ errorMessage: validationErrorMessage,
102
+ attributes: {
103
+ Options: options
104
+ }
105
+ },
106
+ },
107
+ onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)
108
+ });
109
+ }
110
+ case DataType.MULTI_SELECT_OPTIONSET: {
111
+ const [defaultValue, options] = await this._grid.metadata.getOptions(column);
112
+ const optionSetValue = value;
113
+ return onOverrideControlProps({
114
+ context: this._pcfContext,
115
+ parameters: {
116
+ value: {
117
+ raw: optionSetValue ?? null,
118
+ error: !isValid,
119
+ errorMessage: validationErrorMessage,
120
+ attributes: {
121
+ Options: options
122
+ }
123
+ }
124
+ },
125
+ onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)
126
+ });
127
+ }
128
+ case DataType.DATE_AND_TIME_DATE_AND_TIME:
129
+ case DataType.DATE_AND_TIME_DATE_ONLY: {
130
+ const dateTimeValue = value;
131
+ const metadata = await this._grid.metadata.get(column);
132
+ const date = dayjs(dateTimeValue);
133
+ return onOverrideControlProps({
134
+ context: this._pcfContext,
135
+ parameters: {
136
+ value: {
137
+ raw: date.isValid() ? date.toDate() : dateTimeValue,
138
+ error: !isValid,
139
+ errorMessage: validationErrorMessage,
140
+ attributes: {
141
+ Behavior: metadata.Attributes.get(column.attributeName).Behavior,
142
+ Format: column.dataType
143
+ }
144
+ }
145
+ },
146
+ onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)
147
+ });
148
+ }
149
+ case DataType.WHOLE_NONE:
150
+ case DataType.DECIMAL:
151
+ case DataType.CURRENCY:
152
+ case DataType.WHOLE_DURATION: {
153
+ const decimalValue = value;
154
+ const metadata = await this._grid.metadata.get(column);
155
+ const precision = metadata.Attributes.get(column.attributeName).Precision;
156
+ return onOverrideControlProps({
157
+ context: this._pcfContext,
158
+ parameters: {
159
+ value: {
160
+ raw: decimalValue ?? null,
161
+ error: !isValid,
162
+ //formatted value is only used for currency => there is no way to get the currency symbol so the formatCurrency method is useless
163
+ formatted: formattedValue,
164
+ errorMessage: validationErrorMessage,
165
+ type: column.dataType,
166
+ attributes: {
167
+ Precision: precision
168
+ }
169
+ },
170
+ NotifyOutputChangedOnUnmount: {
171
+ raw: true,
172
+ }
173
+ },
174
+ onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)
175
+ });
176
+ }
177
+ default: {
178
+ return onOverrideControlProps({
179
+ context: this._pcfContext,
180
+ parameters: {
181
+ isResizable: {
182
+ raw: false
183
+ },
184
+ NotifyOutputChangedOnUnmount: {
185
+ raw: true,
186
+ },
187
+ value: {
188
+ raw: value,
189
+ error: !isValid,
190
+ errorMessage: validationErrorMessage
191
+ }
192
+ },
193
+ onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)
194
+ });
195
+ }
196
+ }
197
+ }
198
+ async _getLookupValue(targets, value) {
199
+ if (!value || value.length === 0) {
200
+ return [];
201
+ }
202
+ //this is case from filters where we only have the id to work it => we need to go through targets and search for the records
203
+ if (!value[0].entityType) {
204
+ for (const lookup of value) {
205
+ for (const target of targets) {
206
+ try {
207
+ const lookupEntityMetadata = await this._pcfContext.utils.getEntityMetadata(target, []);
208
+ const response = await this._pcfContext.webAPI.retrieveRecord(target, lookup.id, `?$select=${lookupEntityMetadata.PrimaryNameAttribute}`);
209
+ lookup.entityType = target;
210
+ lookup.name = response[lookupEntityMetadata.PrimaryNameAttribute];
211
+ break;
212
+ }
213
+ catch (err) {
214
+ continue;
215
+ }
216
+ }
217
+ }
218
+ }
219
+ return value;
220
+ }
221
+ }
222
+ Component._lookupSavedQueriesCache = new Map;
223
+
224
+ export { Component };
225
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component.js","sources":["../../../../../../../src/components/Grid/core/components/Component/model/Component.ts"],"sourcesContent":["import dayjs from \"dayjs\";\nimport { IControl } from \"../../../../../../interfaces/context\";\nimport { IParameters } from \"../../../../../../interfaces/parameters\";\nimport { IDateTime } from \"../../../../../DateTime/interfaces\";\nimport { IDecimal } from \"../../../../../Decimal/interfaces\";\nimport { ILookup } from \"../../../../../Lookup/interfaces\";\nimport { IMultiSelectOptionSet } from \"../../../../../MultiSelectOptionSet/interfaces\";\nimport { IOptionSet } from \"../../../../../OptionSet/interfaces\";\nimport { ITextField } from \"../../../../../TextField/interfaces\";\nimport { ITwoOptions } from \"../../../../../TwoOptions/interfaces\";\nimport { ColumnValidation } from \"../../../../validation/model/ColumnValidation\";\nimport { DataType } from \"../../../enums/DataType\";\nimport { GridDependency } from \"../../../model/GridDependency\";\nimport { IControlProps } from \"../Component\";\n\nconst debounce = (func: (...args: any[]) => Promise<any>, wait: number) => {\n let timeout: NodeJS.Timeout | null = null;\n let promiseCache: Promise<any> | null = null;\n\n return async (...args: any[]) => {\n if (!promiseCache) {\n promiseCache = func(...args);\n }\n\n if (timeout) clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n promiseCache = null;\n }, wait);\n\n return promiseCache;\n };\n};\n\nexport class Component extends GridDependency {\n private _debouncedGetLookupValue = debounce(this._getLookupValue.bind(this), 50);\n private static _lookupSavedQueriesCache = new Map<string, Promise<ComponentFramework.WebApi.Entity>>;\n\n public async getControlProps(props: IControlProps): Promise<IControl<any, any, any, any>> {\n const { column, value, onNotifyOutputChanged, formattedValue } = { ...props };\n const [isValid, validationErrorMessage] = new ColumnValidation(this._grid, props.column).validate(value);\n const onOverrideControlProps = props?.onOverrideControlProps ?? ((props: IControl<any, any, any, any>) => props);\n switch (column.dataType) {\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_OWNER:\n case DataType.LOOKUP_CUSTOMER: {\n const columnMetadata = await this._grid.metadata.get(column);\n const targets = columnMetadata.Attributes.get(column.attributeName).attributeDescriptor.Targets ?? [];\n if (column.dataType === DataType.LOOKUP_OWNER) {\n targets.push('systemuser', 'team')\n }\n const result = {\n context: this._pcfContext,\n parameters: {\n value: {\n getAllViews: async (entityName: string, __queryType: number = 64) => {\n const cacheKey = `${entityName}_${__queryType}`\n if (!Component._lookupSavedQueriesCache.get(cacheKey)) {\n Component._lookupSavedQueriesCache.set(cacheKey, new Promise(async (resolve) => {\n const response = await this._pcfContext.webAPI.retrieveMultipleRecords('savedquery', `?$filter=returnedtypecode eq '${entityName}' and querytype eq ${__queryType} and isdefault eq true&$select=name,savedqueryid,fetchxml`);\n resolve(response.entities[0])\n }))\n }\n const result = await Component._lookupSavedQueriesCache.get(cacheKey)!;\n return [\n {\n isDefault: true,\n viewName: result.name,\n viewId: result.savedqueryid,\n fetchXml: result.fetchxml\n }\n ]\n },\n raw: await this._debouncedGetLookupValue(targets, value),\n attributes: {\n Targets: targets,\n DisplayName: columnMetadata.DisplayName\n },\n error: !isValid,\n errorMessage: validationErrorMessage,\n }\n },\n onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)\n\n } as ILookup;\n return onOverrideControlProps(result);\n }\n case DataType.TWO_OPTIONS: {\n const twoOptionsValue = value as boolean | undefined | null;\n const [defaultValue, options] = await this._grid.metadata.getOptions(column)\n return onOverrideControlProps({\n context: this._pcfContext,\n parameters: {\n value: {\n raw: twoOptionsValue === true ? true : false,\n error: !isValid,\n errorMessage: validationErrorMessage,\n attributes: {\n Options: options\n }\n }\n },\n onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)\n } as ITwoOptions)\n }\n case DataType.OPTIONSET: {\n const optionSetValue = value as number | null | undefined;\n const [defaultValue, options] = await this._grid.metadata.getOptions(column)\n return onOverrideControlProps({\n context: this._pcfContext,\n parameters: {\n value: {\n raw: optionSetValue ?? null,\n error: !isValid,\n errorMessage: validationErrorMessage,\n attributes: {\n Options: options\n }\n },\n },\n onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)\n } as IOptionSet);\n }\n case DataType.MULTI_SELECT_OPTIONSET: {\n const [defaultValue, options] = await this._grid.metadata.getOptions(column)\n const optionSetValue = value as number[] | null | undefined;\n return onOverrideControlProps({\n context: this._pcfContext,\n parameters: {\n value: {\n raw: optionSetValue ?? null,\n error: !isValid,\n errorMessage: validationErrorMessage,\n attributes: {\n Options: options\n }\n }\n },\n onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)\n } as IMultiSelectOptionSet);\n }\n case DataType.DATE_AND_TIME_DATE_AND_TIME:\n case DataType.DATE_AND_TIME_DATE_ONLY: {\n const dateTimeValue = value as Date | null | undefined;\n const metadata = await this._grid.metadata.get(column);\n const date = dayjs(dateTimeValue);\n return onOverrideControlProps({\n context: this._pcfContext,\n parameters: {\n value: {\n raw: date.isValid() ? date.toDate() : dateTimeValue,\n error: !isValid,\n errorMessage: validationErrorMessage,\n attributes: {\n Behavior: metadata.Attributes.get(column.attributeName).Behavior,\n Format: column.dataType\n }\n }\n },\n onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)\n } as IDateTime);\n }\n case DataType.WHOLE_NONE:\n case DataType.DECIMAL:\n case DataType.CURRENCY:\n case DataType.WHOLE_DURATION: {\n const decimalValue = value as number | null | undefined\n const metadata = await this._grid.metadata.get(column);\n const precision = metadata.Attributes.get(column.attributeName).Precision;\n return onOverrideControlProps({\n context: this._pcfContext,\n parameters: {\n value: {\n raw: decimalValue ?? null,\n error: !isValid,\n //formatted value is only used for currency => there is no way to get the currency symbol so the formatCurrency method is useless\n formatted: formattedValue,\n errorMessage: validationErrorMessage,\n type: column.dataType,\n attributes: {\n Precision: precision\n }\n },\n NotifyOutputChangedOnUnmount: {\n raw: true,\n }\n },\n onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)\n\n } as IDecimal);\n }\n default: {\n return onOverrideControlProps({\n context: this._pcfContext,\n parameters: {\n isResizable: {\n raw: false\n },\n NotifyOutputChangedOnUnmount: {\n raw: true,\n },\n value: {\n raw: value,\n error: !isValid,\n errorMessage: validationErrorMessage\n }\n },\n onNotifyOutputChanged: (outputs) => onNotifyOutputChanged(outputs.value)\n } as ITextField);\n }\n }\n }\n private async _getLookupValue(targets: string[], value: ComponentFramework.LookupValue[] | null | undefined): Promise<ComponentFramework.LookupValue[]> {\n if (!value || value.length === 0) {\n return [];\n }\n //this is case from filters where we only have the id to work it => we need to go through targets and search for the records\n if (!value[0].entityType) {\n for (const lookup of value) {\n for (const target of targets) {\n try {\n const lookupEntityMetadata = await this._pcfContext.utils.getEntityMetadata(target, []);\n const response = await this._pcfContext.webAPI.retrieveRecord(target, lookup.id, `?$select=${lookupEntityMetadata.PrimaryNameAttribute}`);\n lookup.entityType = target;\n lookup.name = response[lookupEntityMetadata.PrimaryNameAttribute];\n break;\n }\n catch (err) {\n continue;\n }\n }\n }\n }\n return value;\n }\n}"],"names":[],"mappings":"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"}
@@ -1 +1,9 @@
1
- const o={dialogContentProps:{},modalProps:{className:""}};export{o as defaultProps};
1
+ const defaultProps = {
2
+ dialogContentProps: {},
3
+ modalProps: {
4
+ className: ''
5
+ }
6
+ };
7
+
8
+ export { defaultProps };
9
+ //# sourceMappingURL=Constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constants.js","sources":["../../../../../../src/components/Grid/core/components/Dialog/Constants.tsx"],"sourcesContent":["import { IDialogProps } from \"./interfaces\";\n\nexport const defaultProps: IDialogProps = {\n dialogContentProps: {},\n modalProps: {\n className: ''\n }\n};"],"names":[],"mappings":"AAEa,MAAA,YAAY,GAAiB;AACtC,IAAA,kBAAkB,EAAE,EAAE;AACtB,IAAA,UAAU,EAAE;AACR,QAAA,SAAS,EAAE,EAAE;AAChB,KAAA;;;;;"}
@@ -1 +1,61 @@
1
- import{getTheme as i,mergeStyles as o}from"@fluentui/react";const t=t=>{var e;const l=i();return o({selectors:{".ms-Dialog-main":{width:t.width,minHeight:null!==(e=t.minHeight)&&void 0!==e?e:0,height:t.height},"@media(max-width: 768px)":{".ms-Dialog-main":{width:"100vw",height:"100svh",maxWidth:"100vw",maxHeight:"100svh"}},".ms-Dialog-subText":{color:l.palette.black},".ms-Dialog-content":{overflow:"auto",paddingBottom:24,flex:1},".ms-Dialog-content, .ms-Dialog-actions":{paddingLeft:24,paddingRight:24,width:"initial"},".ms-Dialog-actions":{borderTop:`1px solid ${l.semanticColors.bodyDivider}`,paddingBottom:24,paddingTop:24,margin:"initial",flex:"0 0 auto"},".ms-Dialog-inner":{padding:0,display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"},".ms-Modal-scrollableContent":{overflow:"hidden",display:"flex","> div":{display:"flex",flexDirection:"column"}}}})};export{t as getRootStyles};
1
+ import { getTheme, mergeStyles } from '@fluentui/react';
2
+
3
+ const getRootStyles = (props) => {
4
+ const theme = getTheme();
5
+ const rootStyles = mergeStyles(({
6
+ selectors: {
7
+ '.ms-Dialog-main': {
8
+ width: props.width,
9
+ minHeight: props.minHeight ?? 0,
10
+ height: props.height,
11
+ },
12
+ '@media(max-width: 768px)': {
13
+ '.ms-Dialog-main': {
14
+ width: '100vw',
15
+ height: '100svh',
16
+ maxWidth: '100vw',
17
+ maxHeight: '100svh'
18
+ }
19
+ },
20
+ '.ms-Dialog-subText': {
21
+ color: theme.palette.black
22
+ },
23
+ '.ms-Dialog-content': {
24
+ overflow: 'auto',
25
+ paddingBottom: 24,
26
+ flex: 1
27
+ },
28
+ '.ms-Dialog-content, .ms-Dialog-actions': {
29
+ paddingLeft: 24,
30
+ paddingRight: 24,
31
+ width: 'initial'
32
+ },
33
+ '.ms-Dialog-actions': {
34
+ borderTop: `1px solid ${theme.semanticColors.bodyDivider}`,
35
+ paddingBottom: 24,
36
+ paddingTop: 24,
37
+ margin: 'initial',
38
+ flex: '0 0 auto'
39
+ },
40
+ '.ms-Dialog-inner': {
41
+ padding: 0,
42
+ display: 'flex',
43
+ flexDirection: 'column',
44
+ flexGrow: 1,
45
+ overflow: 'hidden'
46
+ },
47
+ '.ms-Modal-scrollableContent': {
48
+ overflow: 'hidden',
49
+ display: 'flex',
50
+ '> div': {
51
+ display: 'flex',
52
+ flexDirection: 'column'
53
+ }
54
+ },
55
+ }
56
+ }));
57
+ return rootStyles;
58
+ };
59
+
60
+ export { getRootStyles };
61
+ //# sourceMappingURL=Styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Styles.js","sources":["../../../../../../src/components/Grid/core/components/Dialog/Styles.tsx"],"sourcesContent":["import { mergeStyles, getTheme } from \"@fluentui/react\";\nimport { IDialogProps } from './interfaces/index';\n\nexport const getRootStyles = (props: IDialogProps): string => {\n const theme = getTheme();\n const rootStyles = mergeStyles(({\n selectors: {\n '.ms-Dialog-main': {\n width: props.width,\n minHeight: props.minHeight ?? 0,\n height: props.height,\n },\n '@media(max-width: 768px)': {\n '.ms-Dialog-main': {\n width: '100vw',\n height: '100svh',\n maxWidth: '100vw',\n maxHeight: '100svh'\n }\n },\n '.ms-Dialog-subText': {\n color: theme.palette.black\n },\n '.ms-Dialog-content': {\n overflow: 'auto',\n paddingBottom: 24,\n flex: 1\n },\n '.ms-Dialog-content, .ms-Dialog-actions': {\n paddingLeft: 24,\n paddingRight: 24,\n width: 'initial'\n },\n '.ms-Dialog-actions': {\n borderTop: `1px solid ${theme.semanticColors.bodyDivider}`,\n paddingBottom: 24,\n paddingTop: 24,\n margin: 'initial',\n flex: '0 0 auto'\n },\n '.ms-Dialog-inner': {\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n overflow: 'hidden'\n },\n '.ms-Modal-scrollableContent': {\n overflow: 'hidden',\n display: 'flex',\n '> div': {\n display: 'flex',\n flexDirection: 'column'\n }\n\n },\n\n }\n }));\n return rootStyles;\n};"],"names":[],"mappings":";;AAGa,MAAA,aAAa,GAAG,CAAC,KAAmB,KAAY;AACzD,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;AACzB,IAAA,MAAM,UAAU,GAAG,WAAW,EAAE;AAC5B,QAAA,SAAS,EAAE;AACP,YAAA,iBAAiB,EAAE;gBACf,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,gBAAA,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC;gBAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;AACvB,aAAA;AACD,YAAA,0BAA0B,EAAE;AACxB,gBAAA,iBAAiB,EAAE;AACf,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,SAAS,EAAE,QAAQ;AACtB,iBAAA;AACJ,aAAA;AACD,YAAA,oBAAoB,EAAE;AAClB,gBAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;AAC7B,aAAA;AACD,YAAA,oBAAoB,EAAE;AAClB,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,IAAI,EAAE,CAAC;AACV,aAAA;AACD,YAAA,wCAAwC,EAAE;AACtC,gBAAA,WAAW,EAAE,EAAE;AACf,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,KAAK,EAAE,SAAS;AACnB,aAAA;AACD,YAAA,oBAAoB,EAAE;AAClB,gBAAA,SAAS,EAAE,CAAa,UAAA,EAAA,KAAK,CAAC,cAAc,CAAC,WAAW,CAAE,CAAA;AAC1D,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,UAAU;AACnB,aAAA;AACD,YAAA,kBAAkB,EAAE;AAChB,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,aAAa,EAAE,QAAQ;AACvB,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,QAAQ,EAAE,QAAQ;AACrB,aAAA;AACD,YAAA,6BAA6B,EAAE;AAC3B,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,OAAO,EAAE;AACL,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,aAAa,EAAE,QAAQ;AAC1B,iBAAA;AAEJ,aAAA;AAEJ,SAAA;AACJ,KAAA,EAAE,CAAC;AACJ,IAAA,OAAO,UAAU,CAAC;AACtB;;;;"}
@@ -1 +1,16 @@
1
- import{jsx as o}from"react/jsx-runtime";import{Dialog as l}from"@fluentui/react";import{defaultProps as a}from"./Constants.js";import{getRootStyles as r}from"./Styles.js";const s=a=>{var s,t,e;return o(l,Object.assign({},a,{modalProps:Object.assign(Object.assign({},a.modalProps),{allowTouchBodyScroll:!!(null!==(t=null===(s=a.modalProps)||void 0===s?void 0:s.allowTouchBodyScroll)&&void 0!==t?t:matchMedia("(hover: none)").matches)||void 0,className:`${null===(e=a.modalProps)||void 0===e?void 0:e.className} ${r(a)}`})},{children:a.children}))};s.defaultProps=a;export{s as default};
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { Dialog as Dialog$1 } from '@fluentui/react';
3
+ import { defaultProps } from './Constants.js';
4
+ import { getRootStyles } from './Styles.js';
5
+
6
+ const Dialog = (props) => {
7
+ return (jsx(Dialog$1, { ...props, modalProps: {
8
+ ...props.modalProps,
9
+ allowTouchBodyScroll: props.modalProps?.allowTouchBodyScroll ?? matchMedia('(hover: none)').matches ? true : undefined,
10
+ className: `${props.modalProps?.className} ${getRootStyles(props)}`
11
+ }, children: props.children }));
12
+ };
13
+ Dialog.defaultProps = defaultProps;
14
+
15
+ export { Dialog as default };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/components/Grid/core/components/Dialog/index.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { Dialog as DialogBase } from '@fluentui/react';\nimport { IDialogProps } from './interfaces';\nimport { defaultProps } from './Constants';\nimport { getRootStyles } from './Styles';\n\nconst Dialog: React.FC<IDialogProps> = (props) => {\n return (\n <DialogBase\n {...props}\n modalProps={{\n ...props.modalProps,\n allowTouchBodyScroll: props.modalProps?.allowTouchBodyScroll ?? matchMedia('(hover: none)').matches ? true : undefined,\n className: `${props.modalProps?.className} ${getRootStyles(props)}`\n }}\n >\n {props.children}\n </DialogBase>\n );\n};\nexport default Dialog;\nDialog.defaultProps = defaultProps;"],"names":["_jsx","DialogBase"],"mappings":";;;;;AAMA,MAAM,MAAM,GAA2B,CAAC,KAAK,KAAI;AAC7C,IAAA,QACIA,GAAC,CAAAC,QAAU,OACH,KAAK,EACT,UAAU,EAAE;YACR,GAAG,KAAK,CAAC,UAAU;YACnB,oBAAoB,EAAE,KAAK,CAAC,UAAU,EAAE,oBAAoB,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS;AACtH,YAAA,SAAS,EAAE,CAAA,EAAG,KAAK,CAAC,UAAU,EAAE,SAAS,CAAA,CAAA,EAAI,aAAa,CAAC,KAAK,CAAC,CAAE,CAAA;AACtE,SAAA,EAAA,QAAA,EAEA,KAAK,CAAC,QAAQ,EAAA,CACN,EACf;AACN,EAAE;AAEF,MAAM,CAAC,YAAY,GAAG,YAAY;;;;"}
@@ -1 +1,2 @@
1
1
 
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1 +1,47 @@
1
- import"react/jsx-runtime";import"@fluentui/react";import"../../hooks/useGridInstance.js";import"./hooks/useSave.js";import"react";import"./styles.js";export{S as Save}from"../../../../../Grid-b7e6190d.js";import"../../services/RecordUpdateService/controllers/useRecordUpdateServiceController.js";import"../../../GridContext.js";import"tslib";import"../../../../../hooks/useControl.js";import"fast-deep-equal/es6";import"merge-anything";import"liquidjs";import"../../../../../hooks/useControlTheme.js";import"../../../../../utils/Theme.js";import"@fluentui/react-migration-v8-v9";import"../../../../../hooks/useControlSizing.js";import"../../model/Grid.js";import"../../../constants.js";import"../../../filtering/model/Filtering.js";import"../../model/GridDependency.js";import"../../../filtering/model/Condition.js";import"../../enums/ConditionOperator.js";import"../../enums/DataType.js";import"../../../validation/model/ColumnValidation.js";import"validator/es/lib/isEmail";import"validator/es/lib/isURL";import"dayjs";import"../../../filtering/utils/FilteringUtilts.js";import"../../../filtering/constants.js";import"../../../paging/model/Paging.js";import"../../../selection/model/Selection.js";import"../../../sorting/Sorting.js";import"../../services/RecordUpdateService/model/RecordUpdateService.js";import"lodash";import"numeral";import"../../../../../utils/Numeral.js";import"../../model/Metadata.js";import"@ag-grid-community/react";import"../../../selection/controllers/useSelectionController.js";import"../AgGrid/styles.js";import"../AgGrid/controllers/useAgGridController.js";import"../../controllers/useGridController.js";import"../Cell/EditableCell/EditableCell.js";import"../Component/Component.js";import"../../../../DateTime/DateTime.js";import"../../../../DateTime/styles.js";import"../../../../DateTime/hooks/useDateTime.js";import"../../../../../hooks/useInputBasedControl.js";import"dayjs/plugin/utc";import"dayjs/plugin/customParseFormat";import"../../../../DateTime/translations.js";import"../../../../DateTime/components/Calendar.js";import"@fluentui/react/lib/Calendar";import"@talxis/react-components";import"../../../../Decimal/Decimal.js";import"../../../../../constants.js";import"../../../../Decimal/components/ArrowButtons.js";import"../../../../Decimal/components/styles.js";import"../../../../Lookup/Lookup.js";import"../../../../Lookup/hooks/useLookup.js";import"../../../../Lookup/translations.js";import"../../../../Lookup/hooks/useFetchXml.js";import"@talxis/client-libraries";import"../../../../Lookup/components/TargetSelector.js";import"@fluentui/react/lib/Text";import"../../../../Lookup/styles.js";import"../../../../Lookup/hooks/useLoadedEntities.js";import"../../../../../hooks/useMouseOver.js";import"../../../../Lookup/components/RecordCreator.js";import"../../../../../hooks/useFocusIn.js";import"../../../../MultiSelectOptionSet/MultiSelectOptionSet.js";import"../../../../OptionSet/OptionSet.js";import"../../../../TextField/TextField.js";import"../../../../TwoOptions/TwoOptions.js";import"../../../../Duration/Duration.js";import"../../../../Duration/translations.js";import"../Component/controller/useComponentController.js";import"../Component/model/Component.js";import"../Cell/ReadOnlyCell/ReadOnlyCell.js";import"../Cell/ReadOnlyCell/styles.js";import"../Cell/Commands/Commands.js";import"../Cell/Commands/useCommands.js";import"../Cell/Commands/Icon.js";import"external-svg-loader";import"../Cell/Commands/styles.js";import"../Cell/ReadOnlyCell/ReadOnlyOptionSet/ReadOnlyOptionSet.js";import"../Cell/ReadOnlyCell/ReadOnlyOptionSet/styles.js";import"color";import"../../../validation/controllers/useRecordValidationController.js";import"../../hooks/useRerender.js";import"../ColumnHeader/ColumnHeader.js";import"../../../filtering/components/FilterCallout/FilterCallout.js";import"../../../filtering/components/FilterCallout/styles.js";import"../../../filtering/controller/useColumnFilterConditionController.js";import"../../hooks/useRefreshCallback.js";import"../../../filtering/components/FilterCallout/components/ConditionOperator/ConditionOperator.js";import"../../../filtering/components/FilterCallout/components/ConditionValue/ConditionValue.js";import"../../../filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.js";import"../../../sorting/components/SortingContextualMenu/SortingContextualMenu.js";import"../../../sorting/components/SortingContextualMenu/styles.js";import"../../../sorting/controllers/useColumnSortingController.js";import"../ColumnHeader/styles.js";import"../ColumnHeader/components/GlobalCheckbox/GlobalCheckbox.js";import"../ColumnHeader/components/GlobalCheckbox/styles.js";import"../AgGrid/model/AgGrid.js";import"@ag-grid-community/core";import"@ag-grid-community/client-side-row-model";import"use-debounce";import"@ag-grid-community/styles/ag-grid.css";import"@ag-grid-community/styles/ag-theme-balham.css";import"../../../paging/controllers/usePagingController.js";import"../../../paging/components/Paging/Paging.js";import"../../../paging/components/Paging/styles.js";import"../AgGrid/components/EmptyRecordsOverlay/EmptyRecords.js";import"../AgGrid/components/EmptyRecordsOverlay/styles.js";import"../Dialog/index.js";import"../Dialog/Constants.js";import"../Dialog/Styles.js";import"../../../translations.js";import"./components/ChangeEditor/components/RecordGrids/styles.js";import"./components/ChangeEditor/styles.js";import"../AgGrid/components/LoadingOverlay/LoadingOverlay.js";import"../AgGrid/components/LoadingOverlay/styles.js";
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { MessageBar, MessageBarType, CommandBarButton, Spinner, SpinnerSize } from '@fluentui/react';
3
+ import { useGridInstance } from '../../hooks/useGridInstance.js';
4
+ import { useSave } from './hooks/useSave.js';
5
+ import { useState } from 'react';
6
+ import { getSaveStyles } from './styles.js';
7
+ import { ChangeEditor } from './components/ChangeEditor/ChangeEditor.js';
8
+ import { useRecordUpdateServiceController } from '../../services/RecordUpdateService/controllers/useRecordUpdateServiceController.js';
9
+
10
+ const Save = () => {
11
+ const grid = useGridInstance();
12
+ const labels = grid.labels;
13
+ const styles = getSaveStyles();
14
+ const { isDirty, updatedRecords, hasInvalidRecords, clearAll } = useRecordUpdateServiceController();
15
+ const { isSaving, saveBtnProps, save } = useSave();
16
+ const [changeEditorOpened, setChangeEditorOpened] = useState(false);
17
+ const onMessageClick = () => {
18
+ if (!isDirty) {
19
+ return;
20
+ }
21
+ setChangeEditorOpened(true);
22
+ };
23
+ return (jsxs(Fragment, { children: [jsx("div", { onClick: onMessageClick, className: styles.root, "data-dirty": isDirty, children: jsx(MessageBar, { messageBarType: !hasInvalidRecords ? MessageBarType.info : MessageBarType.error, actions: jsxs("div", { className: styles.actions, children: [jsx(CommandBarButton, { text: isSaving ? saveBtnProps.text : undefined, disabled: saveBtnProps.disabled, onRenderIcon: isSaving ? () => jsx(Spinner, { size: SpinnerSize.small }) : undefined, iconProps: {
24
+ iconName: saveBtnProps.iconName,
25
+ }, onClick: (e) => {
26
+ e.stopPropagation();
27
+ save();
28
+ } }), jsx(CommandBarButton, { disabled: saveBtnProps.disabled && !hasInvalidRecords && !grid.props.parameters.ChangeEditorMode, iconProps: {
29
+ iconName: 'Delete'
30
+ }, onClick: (e) => {
31
+ e.stopPropagation();
32
+ clearAll();
33
+ } })] }), isMultiline: false, children: isDirty &&
34
+ jsx("span", { className: styles.notificationText, dangerouslySetInnerHTML: {
35
+ __html: labels["saving-changenotification"]({ numOfChanges: updatedRecords.length })
36
+ } }) }) }), changeEditorOpened &&
37
+ jsx(ChangeEditor, { onDismiss: (e) => {
38
+ //@ts-ignore
39
+ if (e?.code === 'Escape') {
40
+ return;
41
+ }
42
+ setChangeEditorOpened(false);
43
+ } })] }));
44
+ };
45
+
46
+ export { Save };
47
+ //# sourceMappingURL=Save.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Save.js","sources":["../../../../../../src/components/Grid/core/components/Save/Save.tsx"],"sourcesContent":["import { CommandBarButton, MessageBar, MessageBarType, Spinner, SpinnerSize } from \"@fluentui/react\";\nimport { useGridInstance } from \"../../hooks/useGridInstance\";\nimport { useSave } from \"./hooks/useSave\";\nimport React, { useState } from 'react';\nimport { getSaveStyles } from \"./styles\";\nimport { ChangeEditor } from \"./components/ChangeEditor/ChangeEditor\";\nimport { useRecordUpdateServiceController } from \"../../services/RecordUpdateService/controllers/useRecordUpdateServiceController\";\n\nexport const Save = () => {\n const grid = useGridInstance();\n const labels = grid.labels;\n const styles = getSaveStyles();\n const { isDirty, updatedRecords, hasInvalidRecords, clearAll } = useRecordUpdateServiceController();\n const { isSaving, saveBtnProps, save } = useSave();\n const [changeEditorOpened, setChangeEditorOpened] = useState<boolean>(false);\n\n const onMessageClick = () => {\n if (!isDirty) {\n return;\n }\n setChangeEditorOpened(true);\n }\n return (\n <>\n <div onClick={onMessageClick} className={styles.root} data-dirty={isDirty}>\n <MessageBar\n messageBarType={!hasInvalidRecords ? MessageBarType.info : MessageBarType.error}\n actions={\n <div className={styles.actions}>\n <CommandBarButton\n text={isSaving ? saveBtnProps.text : undefined}\n disabled={saveBtnProps.disabled}\n onRenderIcon={isSaving ? () => <Spinner size={SpinnerSize.small} /> : undefined}\n iconProps={{\n iconName: saveBtnProps.iconName,\n }}\n onClick={(e) => {\n e.stopPropagation()\n save();\n }}\n />\n <CommandBarButton\n disabled={saveBtnProps.disabled && !hasInvalidRecords && !grid.props.parameters.ChangeEditorMode}\n iconProps={{\n iconName: 'Delete'\n }}\n onClick={(e) => {\n e.stopPropagation();\n clearAll();\n }}\n />\n </div>\n } isMultiline={false}>\n {isDirty &&\n <span className={styles.notificationText} dangerouslySetInnerHTML={{\n __html: labels[\"saving-changenotification\"]({ numOfChanges: updatedRecords.length })\n }}></span>\n }\n </MessageBar>\n </div>\n {changeEditorOpened &&\n <ChangeEditor onDismiss={(e) => {\n //@ts-ignore\n if(e?.code === 'Escape') {\n return;\n }\n setChangeEditorOpened(false);\n }} />\n }\n </>\n )\n};"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;;;;AAQO,MAAM,IAAI,GAAG,MAAK;AACrB,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,IAAA,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;AAC/B,IAAA,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,gCAAgC,EAAE,CAAC;IACpG,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IACnD,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAE7E,MAAM,cAAc,GAAG,MAAK;QACxB,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;AACV,SAAA;QACD,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAChC,KAAC,CAAA;AACD,IAAA,QACIA,IACI,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAC,GAAA,CAAA,KAAA,EAAA,EAAK,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,gBAAc,OAAO,EAAA,QAAA,EACrEA,IAAC,UAAU,EAAA,EACP,cAAc,EAAE,CAAC,iBAAiB,GAAG,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,KAAK,EAC/E,OAAO,EACHF,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,OAAO,EAC1B,QAAA,EAAA,CAAAE,GAAA,CAAC,gBAAgB,EACb,EAAA,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAC,IAAI,GAAG,SAAS,EAC9C,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAC/B,YAAY,EAAE,QAAQ,GAAG,MAAMA,GAAC,CAAA,OAAO,IAAC,IAAI,EAAE,WAAW,CAAC,KAAK,GAAI,GAAG,SAAS,EAC/E,SAAS,EAAE;oCACP,QAAQ,EAAE,YAAY,CAAC,QAAQ;AAClC,iCAAA,EACD,OAAO,EAAE,CAAC,CAAC,KAAI;oCACX,CAAC,CAAC,eAAe,EAAE,CAAA;AACnB,oCAAA,IAAI,EAAE,CAAC;iCACV,EAAA,CACH,EACFA,GAAA,CAAC,gBAAgB,EAAA,EACb,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,EAChG,SAAS,EAAE;AACP,oCAAA,QAAQ,EAAE,QAAQ;AACrB,iCAAA,EACD,OAAO,EAAE,CAAC,CAAC,KAAI;oCACX,CAAC,CAAC,eAAe,EAAE,CAAC;AACpB,oCAAA,QAAQ,EAAE,CAAC;AACf,iCAAC,GACH,CACA,EAAA,CAAA,EACR,WAAW,EAAE,KAAK,YACnB,OAAO;AACJ,wBAAAA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,EAAE;AAC/D,gCAAA,MAAM,EAAE,MAAM,CAAC,2BAA2B,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC;6BACvF,EAAS,CAAA,EAAA,CAEL,EACX,CAAA,EACL,kBAAkB;AACf,gBAAAA,GAAA,CAAC,YAAY,EAAC,EAAA,SAAS,EAAE,CAAC,CAAC,KAAI;;AAE3B,wBAAA,IAAG,CAAC,EAAE,IAAI,KAAK,QAAQ,EAAE;4BACrB,OAAO;AACV,yBAAA;wBACD,qBAAqB,CAAC,KAAK,CAAC,CAAC;qBAChC,EAAA,CAAI,CAEV,EAAA,CAAA,EACN;AACL;;;;"}