@gisce/react-ooui 2.0.0-rc.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. package/dist/ConnectionProvider.d.ts +1 -1
  2. package/dist/ConnectionProvider.d.ts.map +1 -1
  3. package/dist/actionbar/ActionButton.d.ts +2 -3
  4. package/dist/actionbar/ActionButton.d.ts.map +1 -1
  5. package/dist/actionbar/AttachmentsButton.d.ts +2 -3
  6. package/dist/actionbar/AttachmentsButton.d.ts.map +1 -1
  7. package/dist/actionbar/AttachmentsButtonWrapper.d.ts +3 -4
  8. package/dist/actionbar/AttachmentsButtonWrapper.d.ts.map +1 -1
  9. package/dist/actionbar/ButtonWithBadge.d.ts +3 -4
  10. package/dist/actionbar/ButtonWithBadge.d.ts.map +1 -1
  11. package/dist/actionbar/ChangeViewButton.d.ts +3 -4
  12. package/dist/actionbar/ChangeViewButton.d.ts.map +1 -1
  13. package/dist/actionbar/DashboardActionBar.d.ts +1 -2
  14. package/dist/actionbar/DashboardActionBar.d.ts.map +1 -1
  15. package/dist/actionbar/DropdownButton.d.ts +4 -3
  16. package/dist/actionbar/DropdownButton.d.ts.map +1 -1
  17. package/dist/actionbar/FormActionBar.d.ts +1 -2
  18. package/dist/actionbar/FormActionBar.d.ts.map +1 -1
  19. package/dist/actionbar/GraphActionBar.d.ts +1 -2
  20. package/dist/actionbar/GraphActionBar.d.ts.map +1 -1
  21. package/dist/actionbar/NewButton.d.ts +2 -3
  22. package/dist/actionbar/NewButton.d.ts.map +1 -1
  23. package/dist/actionbar/SearchBar.d.ts +2 -3
  24. package/dist/actionbar/SearchBar.d.ts.map +1 -1
  25. package/dist/actionbar/TreeActionBar.d.ts +2 -3
  26. package/dist/actionbar/TreeActionBar.d.ts.map +1 -1
  27. package/dist/common/ButtonWithTooltip.d.ts +2 -3
  28. package/dist/common/ButtonWithTooltip.d.ts.map +1 -1
  29. package/dist/common/DatePicker.d.ts +3 -4
  30. package/dist/common/DatePicker.d.ts.map +1 -1
  31. package/dist/common/Field.d.ts +1 -1
  32. package/dist/common/Field.d.ts.map +1 -1
  33. package/dist/common/SelectAllRecordsRow.d.ts +9 -0
  34. package/dist/common/SelectAllRecordsRow.d.ts.map +1 -0
  35. package/dist/common/TimePicker.d.ts +10 -0
  36. package/dist/common/TimePicker.d.ts.map +1 -0
  37. package/dist/context/ActionViewContext.d.ts +4 -4
  38. package/dist/context/ActionViewContext.d.ts.map +1 -1
  39. package/dist/context/ConfigContext.d.ts +9 -1
  40. package/dist/context/ConfigContext.d.ts.map +1 -1
  41. package/dist/context/ContentRootContext.d.ts +2 -2
  42. package/dist/context/ContentRootContext.d.ts.map +1 -1
  43. package/dist/context/DashboardActionContext.d.ts +3 -3
  44. package/dist/context/DashboardActionContext.d.ts.map +1 -1
  45. package/dist/context/FormContext.d.ts +2 -2
  46. package/dist/context/FormContext.d.ts.map +1 -1
  47. package/dist/context/FormModalContext.d.ts +2 -2
  48. package/dist/context/FormModalContext.d.ts.map +1 -1
  49. package/dist/context/LocaleContext.d.ts +2 -2
  50. package/dist/context/LocaleContext.d.ts.map +1 -1
  51. package/dist/context/One2manyContext.d.ts +2 -2
  52. package/dist/context/One2manyContext.d.ts.map +1 -1
  53. package/dist/context/TabManagerContext.d.ts +5 -5
  54. package/dist/context/TabManagerContext.d.ts.map +1 -1
  55. package/dist/helpers/containerHelper.d.ts.map +1 -1
  56. package/dist/helpers/dayjs.d.ts +3 -0
  57. package/dist/helpers/dayjs.d.ts.map +1 -0
  58. package/dist/helpers/dynamicColumnsHelper.d.ts.map +1 -1
  59. package/dist/helpers/errorHelper.d.ts.map +1 -1
  60. package/dist/helpers/filesHelper.d.ts +1 -1
  61. package/dist/helpers/filesHelper.d.ts.map +1 -1
  62. package/dist/helpers/formHelper.d.ts.map +1 -1
  63. package/dist/helpers/iconMapper.d.ts +2 -2
  64. package/dist/helpers/iconMapper.d.ts.map +1 -1
  65. package/dist/helpers/logInfoHelper.d.ts.map +1 -1
  66. package/dist/helpers/one2manyHelper.d.ts +5 -5
  67. package/dist/helpers/one2manyHelper.d.ts.map +1 -1
  68. package/dist/helpers/searchHelper.d.ts.map +1 -1
  69. package/dist/helpers/timeHelper.d.ts.map +1 -1
  70. package/dist/helpers/treeHelper.d.ts +3 -3
  71. package/dist/helpers/treeHelper.d.ts.map +1 -1
  72. package/dist/helpers/viewHelper.d.ts +3 -3
  73. package/dist/helpers/viewHelper.d.ts.map +1 -1
  74. package/dist/hooks/useEffectDebugger.d.ts +3 -0
  75. package/dist/hooks/useEffectDebugger.d.ts.map +1 -0
  76. package/dist/hooks/useExport.d.ts.map +1 -1
  77. package/dist/hooks/useFetchViews.d.ts +1 -0
  78. package/dist/hooks/useFetchViews.d.ts.map +1 -0
  79. package/dist/hooks/useSearch.d.ts +3 -3
  80. package/dist/hooks/useSearch.d.ts.map +1 -1
  81. package/dist/hooks/useWindowDimensions.d.ts.map +1 -1
  82. package/dist/index.d.ts +47 -47
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/locales/ca_ES.d.ts +1 -0
  85. package/dist/locales/ca_ES.d.ts.map +1 -1
  86. package/dist/locales/en_US.d.ts +1 -0
  87. package/dist/locales/en_US.d.ts.map +1 -1
  88. package/dist/locales/es_ES.d.ts +1 -0
  89. package/dist/locales/es_ES.d.ts.map +1 -1
  90. package/dist/react-ooui.es.js +7247 -8856
  91. package/dist/react-ooui.es.js.map +1 -1
  92. package/dist/style.css +1 -1
  93. package/dist/types/index.d.ts +47 -46
  94. package/dist/types/index.d.ts.map +1 -1
  95. package/dist/ui/ActionErrorDialog.d.ts.map +1 -1
  96. package/dist/ui/ConfirmDialog.d.ts +1 -1
  97. package/dist/ui/ConfirmDialog.d.ts.map +1 -1
  98. package/dist/ui/ErrorAlert.d.ts +1 -2
  99. package/dist/ui/ErrorAlert.d.ts.map +1 -1
  100. package/dist/ui/FavouriteButton.d.ts +4 -5
  101. package/dist/ui/FavouriteButton.d.ts.map +1 -1
  102. package/dist/ui/FormErrorsDialog.d.ts.map +1 -1
  103. package/dist/ui/GenericErrorDialog.d.ts.map +1 -1
  104. package/dist/ui/GoToResourceModal.d.ts +3 -4
  105. package/dist/ui/GoToResourceModal.d.ts.map +1 -1
  106. package/dist/ui/InfoDialog.d.ts.map +1 -1
  107. package/dist/ui/RefreshItemDialog.d.ts.map +1 -1
  108. package/dist/ui/RemoveItemDialog.d.ts.map +1 -1
  109. package/dist/ui/TitleHeader.d.ts +2 -3
  110. package/dist/ui/TitleHeader.d.ts.map +1 -1
  111. package/dist/ui/UnlinkItemDialog.d.ts.map +1 -1
  112. package/dist/ui/UnsavedChangesDialog.d.ts.map +1 -1
  113. package/dist/ui/WarningDialog.d.ts +1 -1
  114. package/dist/ui/WarningDialog.d.ts.map +1 -1
  115. package/dist/views/ActionView.d.ts +2 -2
  116. package/dist/views/ActionView.d.ts.map +1 -1
  117. package/dist/views/CurrentTabContent.d.ts +1 -2
  118. package/dist/views/CurrentTabContent.d.ts.map +1 -1
  119. package/dist/views/RootView.d.ts +2 -2
  120. package/dist/views/RootView.d.ts.map +1 -1
  121. package/dist/views/TabContent.d.ts +2 -2
  122. package/dist/views/TabContent.d.ts.map +1 -1
  123. package/dist/views/TabSelector.d.ts +1 -2
  124. package/dist/views/TabSelector.d.ts.map +1 -1
  125. package/dist/views/Welcome.d.ts.map +1 -1
  126. package/dist/views/actionViews/DashboardActionView.d.ts +4 -4
  127. package/dist/views/actionViews/DashboardActionView.d.ts.map +1 -1
  128. package/dist/views/actionViews/FormActionView.d.ts +3 -4
  129. package/dist/views/actionViews/FormActionView.d.ts.map +1 -1
  130. package/dist/views/actionViews/GraphActionView.d.ts +3 -4
  131. package/dist/views/actionViews/GraphActionView.d.ts.map +1 -1
  132. package/dist/views/actionViews/TreeActionView.d.ts +3 -4
  133. package/dist/views/actionViews/TreeActionView.d.ts.map +1 -1
  134. package/dist/views/tabs/Tab.d.ts +2 -3
  135. package/dist/views/tabs/Tab.d.ts.map +1 -1
  136. package/dist/widgets/WidgetFactory.d.ts.map +1 -1
  137. package/dist/widgets/base/Binary.d.ts +3 -4
  138. package/dist/widgets/base/Binary.d.ts.map +1 -1
  139. package/dist/widgets/base/Boolean.d.ts +2 -3
  140. package/dist/widgets/base/Boolean.d.ts.map +1 -1
  141. package/dist/widgets/base/Button.d.ts +2 -3
  142. package/dist/widgets/base/Button.d.ts.map +1 -1
  143. package/dist/widgets/base/Char.d.ts +3 -4
  144. package/dist/widgets/base/Char.d.ts.map +1 -1
  145. package/dist/widgets/base/Date.d.ts +2 -3
  146. package/dist/widgets/base/Date.d.ts.map +1 -1
  147. package/dist/widgets/base/DateTime.d.ts +2 -3
  148. package/dist/widgets/base/DateTime.d.ts.map +1 -1
  149. package/dist/widgets/base/Email.d.ts +2 -3
  150. package/dist/widgets/base/Email.d.ts.map +1 -1
  151. package/dist/widgets/base/Float.d.ts +2 -3
  152. package/dist/widgets/base/Float.d.ts.map +1 -1
  153. package/dist/widgets/base/FloatTime.d.ts +2 -2
  154. package/dist/widgets/base/FloatTime.d.ts.map +1 -1
  155. package/dist/widgets/base/Image.d.ts +3 -4
  156. package/dist/widgets/base/Image.d.ts.map +1 -1
  157. package/dist/widgets/base/Integer.d.ts +3 -4
  158. package/dist/widgets/base/Integer.d.ts.map +1 -1
  159. package/dist/widgets/base/Label.d.ts +3 -4
  160. package/dist/widgets/base/Label.d.ts.map +1 -1
  161. package/dist/widgets/base/LinkInput.d.ts +1 -2
  162. package/dist/widgets/base/LinkInput.d.ts.map +1 -1
  163. package/dist/widgets/base/MultiSelection.d.ts +4 -5
  164. package/dist/widgets/base/MultiSelection.d.ts.map +1 -1
  165. package/dist/widgets/base/ProgressBar.d.ts +3 -4
  166. package/dist/widgets/base/ProgressBar.d.ts.map +1 -1
  167. package/dist/widgets/base/Reference.d.ts +2 -2
  168. package/dist/widgets/base/Reference.d.ts.map +1 -1
  169. package/dist/widgets/base/ReferenceTree.d.ts +1 -1
  170. package/dist/widgets/base/ReferenceTree.d.ts.map +1 -1
  171. package/dist/widgets/base/Selection.d.ts +4 -5
  172. package/dist/widgets/base/Selection.d.ts.map +1 -1
  173. package/dist/widgets/base/Separator.d.ts +2 -3
  174. package/dist/widgets/base/Separator.d.ts.map +1 -1
  175. package/dist/widgets/base/Text.d.ts +2 -3
  176. package/dist/widgets/base/Text.d.ts.map +1 -1
  177. package/dist/widgets/base/Time.d.ts +4 -5
  178. package/dist/widgets/base/Time.d.ts.map +1 -1
  179. package/dist/widgets/base/Url.d.ts +2 -3
  180. package/dist/widgets/base/Url.d.ts.map +1 -1
  181. package/dist/widgets/base/many2one/Many2one.d.ts +2 -2
  182. package/dist/widgets/base/many2one/Many2one.d.ts.map +1 -1
  183. package/dist/widgets/base/many2one/Many2oneSuffix.d.ts +2 -3
  184. package/dist/widgets/base/many2one/Many2oneSuffix.d.ts.map +1 -1
  185. package/dist/widgets/base/many2one/Many2oneSuffixModal.d.ts +2 -3
  186. package/dist/widgets/base/many2one/Many2oneSuffixModal.d.ts.map +1 -1
  187. package/dist/widgets/base/many2one/Many2oneTree.d.ts +1 -1
  188. package/dist/widgets/base/many2one/Many2oneTree.d.ts.map +1 -1
  189. package/dist/widgets/base/one2many/One2many.d.ts +2 -3
  190. package/dist/widgets/base/one2many/One2many.d.ts.map +1 -1
  191. package/dist/widgets/base/one2many/One2manyInput.d.ts +4 -4
  192. package/dist/widgets/base/one2many/One2manyInput.d.ts.map +1 -1
  193. package/dist/widgets/base/one2many/One2manyTopBar.d.ts +3 -4
  194. package/dist/widgets/base/one2many/One2manyTopBar.d.ts.map +1 -1
  195. package/dist/widgets/containers/Container.d.ts +1 -1
  196. package/dist/widgets/containers/Container.d.ts.map +1 -1
  197. package/dist/widgets/containers/Group.d.ts +1 -1
  198. package/dist/widgets/containers/Group.d.ts.map +1 -1
  199. package/dist/widgets/containers/Notebook.d.ts +1 -1
  200. package/dist/widgets/containers/Notebook.d.ts.map +1 -1
  201. package/dist/widgets/custom/Avatar.d.ts +2 -2
  202. package/dist/widgets/custom/Avatar.d.ts.map +1 -1
  203. package/dist/widgets/custom/ButtonGroup.d.ts +2 -3
  204. package/dist/widgets/custom/ButtonGroup.d.ts.map +1 -1
  205. package/dist/widgets/custom/CodeEditor.d.ts +3 -4
  206. package/dist/widgets/custom/CodeEditor.d.ts.map +1 -1
  207. package/dist/widgets/custom/Comments.d.ts +11 -12
  208. package/dist/widgets/custom/Comments.d.ts.map +1 -1
  209. package/dist/widgets/custom/FiberGrid.d.ts +3 -4
  210. package/dist/widgets/custom/FiberGrid.d.ts.map +1 -1
  211. package/dist/widgets/custom/Indicator.d.ts +3 -4
  212. package/dist/widgets/custom/Indicator.d.ts.map +1 -1
  213. package/dist/widgets/custom/Markdown.d.ts +3 -4
  214. package/dist/widgets/custom/Markdown.d.ts.map +1 -1
  215. package/dist/widgets/custom/MultiCheckbox.d.ts +4 -5
  216. package/dist/widgets/custom/MultiCheckbox.d.ts.map +1 -1
  217. package/dist/widgets/custom/Radio.d.ts +4 -5
  218. package/dist/widgets/custom/Radio.d.ts.map +1 -1
  219. package/dist/widgets/custom/Steps.d.ts +4 -5
  220. package/dist/widgets/custom/Steps.d.ts.map +1 -1
  221. package/dist/widgets/custom/Switch.d.ts +2 -3
  222. package/dist/widgets/custom/Switch.d.ts.map +1 -1
  223. package/dist/widgets/custom/Tag.d.ts +5 -6
  224. package/dist/widgets/custom/Tag.d.ts.map +1 -1
  225. package/dist/widgets/custom/Tags.d.ts +5 -6
  226. package/dist/widgets/custom/Tags.d.ts.map +1 -1
  227. package/dist/widgets/custom/Timeline.d.ts +5 -6
  228. package/dist/widgets/custom/Timeline.d.ts.map +1 -1
  229. package/dist/widgets/modals/ExportModal.d.ts +2 -3
  230. package/dist/widgets/modals/ExportModal.d.ts.map +1 -1
  231. package/dist/widgets/modals/FormModal.d.ts +3 -4
  232. package/dist/widgets/modals/FormModal.d.ts.map +1 -1
  233. package/dist/widgets/modals/SearchModal.d.ts +2 -3
  234. package/dist/widgets/modals/SearchModal.d.ts.map +1 -1
  235. package/dist/widgets/modals/TranslationModal.d.ts +2 -3
  236. package/dist/widgets/modals/TranslationModal.d.ts.map +1 -1
  237. package/dist/widgets/views/Dashboard/Dashboard.d.ts +1 -1
  238. package/dist/widgets/views/Dashboard/Dashboard.d.ts.map +1 -1
  239. package/dist/widgets/views/Dashboard/DashboardForm.d.ts +1 -2
  240. package/dist/widgets/views/Dashboard/DashboardForm.d.ts.map +1 -1
  241. package/dist/widgets/views/Dashboard/DashboardTree.d.ts +4 -5
  242. package/dist/widgets/views/Dashboard/DashboardTree.d.ts.map +1 -1
  243. package/dist/widgets/views/Dashboard/dashboardHelper.d.ts.map +1 -1
  244. package/dist/widgets/views/DashboardGrid/DashboardGrid.d.ts +1 -2
  245. package/dist/widgets/views/DashboardGrid/DashboardGrid.d.ts.map +1 -1
  246. package/dist/widgets/views/DashboardGrid/DashboardGrid.types.d.ts +2 -2
  247. package/dist/widgets/views/DashboardGrid/DashboardGrid.types.d.ts.map +1 -1
  248. package/dist/widgets/views/DashboardGrid/DashboardGridItem.d.ts +1 -2
  249. package/dist/widgets/views/DashboardGrid/DashboardGridItem.d.ts.map +1 -1
  250. package/dist/widgets/views/DashboardGrid/DashboardGridItem.types.d.ts +2 -2
  251. package/dist/widgets/views/DashboardGrid/DashboardGridItem.types.d.ts.map +1 -1
  252. package/dist/widgets/views/DashboardGrid/index.d.ts.map +1 -1
  253. package/dist/widgets/views/Form.d.ts +2 -2
  254. package/dist/widgets/views/Form.d.ts.map +1 -1
  255. package/dist/widgets/views/Graph/Graph.d.ts +1 -1
  256. package/dist/widgets/views/Graph/Graph.d.ts.map +1 -1
  257. package/dist/widgets/views/Graph/GraphChart.d.ts +2 -3
  258. package/dist/widgets/views/Graph/GraphChart.d.ts.map +1 -1
  259. package/dist/widgets/views/Graph/GraphDefaults.d.ts.map +1 -1
  260. package/dist/widgets/views/Graph/GraphIndicator.d.ts +2 -3
  261. package/dist/widgets/views/Graph/GraphIndicator.d.ts.map +1 -1
  262. package/dist/widgets/views/Graph/useGraphData.d.ts +2 -2
  263. package/dist/widgets/views/Graph/useGraphData.d.ts.map +1 -1
  264. package/dist/widgets/views/SearchTree.d.ts +5 -5
  265. package/dist/widgets/views/SearchTree.d.ts.map +1 -1
  266. package/dist/widgets/views/{Tree.d.ts → Tree/Tree.d.ts} +8 -7
  267. package/dist/widgets/views/Tree/Tree.d.ts.map +1 -0
  268. package/dist/widgets/views/Tree/index.d.ts +2 -0
  269. package/dist/widgets/views/Tree/index.d.ts.map +1 -0
  270. package/dist/widgets/views/Tree/treeComponents.d.ts +131 -0
  271. package/dist/widgets/views/Tree/treeComponents.d.ts.map +1 -0
  272. package/dist/widgets/views/searchFilter/DateRangePicker.d.ts +2 -3
  273. package/dist/widgets/views/searchFilter/DateRangePicker.d.ts.map +1 -1
  274. package/dist/widgets/views/searchFilter/DateTimeRangePicker.d.ts +2 -3
  275. package/dist/widgets/views/searchFilter/DateTimeRangePicker.d.ts.map +1 -1
  276. package/dist/widgets/views/searchFilter/PairFields.d.ts +1 -1
  277. package/dist/widgets/views/searchFilter/PairFields.d.ts.map +1 -1
  278. package/dist/widgets/views/searchFilter/SearchBottomBar.d.ts +3 -3
  279. package/dist/widgets/views/searchFilter/SearchBottomBar.d.ts.map +1 -1
  280. package/dist/widgets/views/searchFilter/SearchField.d.ts +2 -3
  281. package/dist/widgets/views/searchFilter/SearchField.d.ts.map +1 -1
  282. package/dist/widgets/views/searchFilter/SearchFilter.d.ts +3 -4
  283. package/dist/widgets/views/searchFilter/SearchFilter.d.ts.map +1 -1
  284. package/dist/widgets/views/searchFilter/SearchParams.d.ts +1 -1
  285. package/dist/widgets/views/searchFilter/SearchParams.d.ts.map +1 -1
  286. package/package.json +108 -56
  287. package/dist/react-ooui.umd.js +0 -38
  288. package/dist/react-ooui.umd.js.map +0 -1
  289. package/dist/widgets/views/Tree.d.ts.map +0 -1
  290. package/src/ConnectionProvider.ts +0 -16
  291. package/src/__tests__/iconMapper.test.ts +0 -30
  292. package/src/__tests__/searchFilterHelper.spec.ts +0 -386
  293. package/src/actionbar/ActionButton.tsx +0 -40
  294. package/src/actionbar/AttachmentsButton.tsx +0 -130
  295. package/src/actionbar/AttachmentsButtonWrapper.tsx +0 -157
  296. package/src/actionbar/ButtonWithBadge.tsx +0 -42
  297. package/src/actionbar/ChangeViewButton.tsx +0 -137
  298. package/src/actionbar/DashboardActionBar.tsx +0 -67
  299. package/src/actionbar/DropdownButton.tsx +0 -61
  300. package/src/actionbar/FormActionBar.tsx +0 -485
  301. package/src/actionbar/GraphActionBar.tsx +0 -67
  302. package/src/actionbar/NewButton.tsx +0 -46
  303. package/src/actionbar/SearchBar.tsx +0 -73
  304. package/src/actionbar/TreeActionBar.tsx +0 -376
  305. package/src/common/ButtonWithTooltip.tsx +0 -18
  306. package/src/common/DatePicker.tsx +0 -99
  307. package/src/common/Field.tsx +0 -92
  308. package/src/context/ActionViewContext.tsx +0 -209
  309. package/src/context/ConfigContext.tsx +0 -9
  310. package/src/context/ContentRootContext.tsx +0 -454
  311. package/src/context/DashboardActionContext.tsx +0 -45
  312. package/src/context/FormContext.tsx +0 -79
  313. package/src/context/FormModalContext.tsx +0 -29
  314. package/src/context/LocaleContext.tsx +0 -50
  315. package/src/context/One2manyContext.tsx +0 -46
  316. package/src/context/TabManagerContext.tsx +0 -118
  317. package/src/helpers/containerHelper.ts +0 -145
  318. package/src/helpers/dynamicColumnsHelper.ts +0 -73
  319. package/src/helpers/errorHelper.ts +0 -27
  320. package/src/helpers/filesHelper.ts +0 -41
  321. package/src/helpers/formHelper.ts +0 -302
  322. package/src/helpers/iconMapper.ts +0 -164
  323. package/src/helpers/logInfoHelper.tsx +0 -28
  324. package/src/helpers/one2manyHelper.ts +0 -194
  325. package/src/helpers/searchHelper.ts +0 -193
  326. package/src/helpers/timeHelper.ts +0 -58
  327. package/src/helpers/treeHelper.ts +0 -204
  328. package/src/helpers/viewHelper.ts +0 -23
  329. package/src/hooks/useEffectDebugger.ts +0 -43
  330. package/src/hooks/useExport.ts +0 -438
  331. package/src/hooks/useFetchViews.ts +0 -0
  332. package/src/hooks/useSearch.ts +0 -434
  333. package/src/hooks/useWindowDimensions.ts +0 -33
  334. package/src/index.ts +0 -168
  335. package/src/locales/ca_ES.tsx +0 -98
  336. package/src/locales/en_US.tsx +0 -95
  337. package/src/locales/es_ES.tsx +0 -99
  338. package/src/stories/Binary.stories.tsx +0 -26
  339. package/src/stories/Boolean.stories.tsx +0 -25
  340. package/src/stories/Button.stories.tsx +0 -136
  341. package/src/stories/Char.stories.tsx +0 -52
  342. package/src/stories/FiberGrid.stories.tsx +0 -112
  343. package/src/stories/Float.stories.tsx +0 -25
  344. package/src/stories/FloatTime.stories.tsx +0 -35
  345. package/src/stories/Image.stories.tsx +0 -28
  346. package/src/stories/Integer.stories.tsx +0 -25
  347. package/src/stories/Label.stories.tsx +0 -103
  348. package/src/stories/Many2one.stories.tsx +0 -34
  349. package/src/stories/One2many.stories.tsx +0 -295
  350. package/src/stories/ProgressBar.stories.tsx +0 -25
  351. package/src/stories/Reference.stories.tsx +0 -46
  352. package/src/stories/Selection.stories.tsx +0 -37
  353. package/src/stories/Separator.stories.tsx +0 -57
  354. package/src/stories/Text.stories.tsx +0 -38
  355. package/src/stories/Time.stories.tsx +0 -32
  356. package/src/stories/Utils.stories.tsx +0 -16
  357. package/src/stories/containers/Group.stories.tsx +0 -90
  358. package/src/stories/containers/NewLine.stories.tsx +0 -56
  359. package/src/stories/containers/Notebook.stories.tsx +0 -199
  360. package/src/stories/custom/Avatar.stories.tsx +0 -27
  361. package/src/stories/custom/ButtonGroup.stories.tsx +0 -61
  362. package/src/stories/custom/CodeEditor.stories.tsx +0 -28
  363. package/src/stories/custom/Comments.stories.tsx +0 -190
  364. package/src/stories/custom/Indicator.stories.tsx +0 -44
  365. package/src/stories/custom/Markdown.stories.tsx +0 -42
  366. package/src/stories/custom/MultiCheckbox.stories.tsx +0 -55
  367. package/src/stories/custom/Radio.stories.tsx +0 -71
  368. package/src/stories/custom/Steps.stories.tsx +0 -41
  369. package/src/stories/custom/Switch.stories.tsx +0 -26
  370. package/src/stories/custom/Tag.stories.tsx +0 -60
  371. package/src/stories/custom/Tags.stories.tsx +0 -70
  372. package/src/stories/dashboard/Dashboard.stories.tsx +0 -23
  373. package/src/stories/dashboard/DashboardGrid.stories.tsx +0 -43
  374. package/src/stories/forms/ActivacioContracteForm.stories.tsx +0 -25
  375. package/src/stories/forms/Attachment.stories.tsx +0 -24
  376. package/src/stories/forms/CUPSForm.stories.tsx +0 -25
  377. package/src/stories/forms/Company.stories.tsx +0 -25
  378. package/src/stories/forms/CrmCaseForm.stories.tsx +0 -25
  379. package/src/stories/forms/Documents.stories.tsx +0 -25
  380. package/src/stories/forms/FormWithGridFiber.stories.tsx +0 -25
  381. package/src/stories/forms/FormWithLinks.stories.tsx +0 -31
  382. package/src/stories/forms/Lead.stories.tsx +0 -25
  383. package/src/stories/forms/ModContractForm.stories.tsx +0 -25
  384. package/src/stories/forms/PartnersForm.stories.tsx +0 -25
  385. package/src/stories/forms/PolissaForm.stories.tsx +0 -25
  386. package/src/stories/forms/PreferencesForm.stories.tsx +0 -696
  387. package/src/stories/forms/Signatures.stories.tsx +0 -25
  388. package/src/stories/forms/Switching.stories.tsx +0 -25
  389. package/src/stories/graphs/GraphIndicator.stories.tsx +0 -20
  390. package/src/stories/graphs/PieGraph.stories.tsx +0 -78
  391. package/src/stories/mocks/index.ts +0 -46
  392. package/src/stories/mocks/mockProvider.ts +0 -186
  393. package/src/stories/mocks/models/activacioContracte.ts +0 -112
  394. package/src/stories/mocks/models/attachment.ts +0 -1327
  395. package/src/stories/mocks/models/butlleti.ts +0 -344
  396. package/src/stories/mocks/models/company.ts +0 -137
  397. package/src/stories/mocks/models/crm_case.ts +0 -595
  398. package/src/stories/mocks/models/cups.ts +0 -920
  399. package/src/stories/mocks/models/document.ts +0 -225
  400. package/src/stories/mocks/models/factura.ts +0 -2727
  401. package/src/stories/mocks/models/form_with_gridfiber.ts +0 -143
  402. package/src/stories/mocks/models/hist_autoconsum.ts +0 -148
  403. package/src/stories/mocks/models/lead.ts +0 -2109
  404. package/src/stories/mocks/models/modcontractual.ts +0 -806
  405. package/src/stories/mocks/models/partner.ts +0 -1360
  406. package/src/stories/mocks/models/polissa.ts +0 -3133
  407. package/src/stories/mocks/models/res_partner_category.ts +0 -15
  408. package/src/stories/mocks/models/signatura.ts +0 -618
  409. package/src/stories/mocks/models/switching.ts +0 -769
  410. package/src/stories/modals/FormModal.stories.tsx +0 -36
  411. package/src/stories/modals/SearchModal.stories.tsx +0 -37
  412. package/src/stories/trees/FacturesTree.stories.tsx +0 -16
  413. package/src/stories/ui/ActionBar.stories.tsx +0 -24
  414. package/src/stories/ui/FavouriteButton.stories.tsx +0 -19
  415. package/src/stories/ui/GoToResourceModal.stories.tsx +0 -27
  416. package/src/stories/views/ActionView.stories.tsx +0 -28
  417. package/src/stories/views/SearchTree.stories.tsx +0 -1110
  418. package/src/stories/views/Tab.stories.tsx +0 -96
  419. package/src/stories/views/TabsAndContent.stories.tsx +0 -91
  420. package/src/stories/views/Tree.stories.jsx +0 -184
  421. package/src/stories/views/searchFilter/DateRangePicker.stories.tsx +0 -25
  422. package/src/stories/views/searchFilter/DateTimeRangePicker.stories.tsx +0 -26
  423. package/src/stories/views/searchFilter/PairFields.stories.tsx +0 -26
  424. package/src/stories/views/searchFilter/SearchFilter.stories.tsx +0 -169
  425. package/src/stories/views/searchFilter/examples/PartnersSearchFilter.stories.tsx +0 -428
  426. package/src/tailwind.css +0 -8
  427. package/src/tailwind.generated.css +0 -168533
  428. package/src/types/index.ts +0 -391
  429. package/src/ui/ActionErrorDialog.tsx +0 -24
  430. package/src/ui/ConfirmDialog.tsx +0 -28
  431. package/src/ui/ErrorAlert.tsx +0 -37
  432. package/src/ui/FavouriteButton.tsx +0 -272
  433. package/src/ui/FormErrorsDialog.tsx +0 -17
  434. package/src/ui/GenericErrorDialog.tsx +0 -16
  435. package/src/ui/GoToResourceModal.tsx +0 -75
  436. package/src/ui/InfoDialog.tsx +0 -13
  437. package/src/ui/RefreshItemDialog.tsx +0 -29
  438. package/src/ui/RemoveItemDialog.tsx +0 -20
  439. package/src/ui/TitleHeader.tsx +0 -110
  440. package/src/ui/UnlinkItemDialog.tsx +0 -20
  441. package/src/ui/UnsavedChangesDialog.tsx +0 -29
  442. package/src/ui/WarningDialog.tsx +0 -17
  443. package/src/views/ActionView.tsx +0 -514
  444. package/src/views/CurrentTabContent.tsx +0 -21
  445. package/src/views/RootView.tsx +0 -510
  446. package/src/views/TabContent.tsx +0 -31
  447. package/src/views/TabSelector.tsx +0 -31
  448. package/src/views/Welcome.tsx +0 -18
  449. package/src/views/actionViews/DashboardActionView.tsx +0 -47
  450. package/src/views/actionViews/FormActionView.tsx +0 -70
  451. package/src/views/actionViews/GraphActionView.tsx +0 -152
  452. package/src/views/actionViews/TreeActionView.tsx +0 -87
  453. package/src/views/tabs/Tab.tsx +0 -82
  454. package/src/widgets/WidgetFactory.tsx +0 -142
  455. package/src/widgets/base/Binary.tsx +0 -145
  456. package/src/widgets/base/Boolean.tsx +0 -45
  457. package/src/widgets/base/Button.tsx +0 -77
  458. package/src/widgets/base/Char.tsx +0 -157
  459. package/src/widgets/base/Date.tsx +0 -12
  460. package/src/widgets/base/DateTime.tsx +0 -12
  461. package/src/widgets/base/Email.tsx +0 -27
  462. package/src/widgets/base/Float.tsx +0 -39
  463. package/src/widgets/base/FloatTime.tsx +0 -73
  464. package/src/widgets/base/Image.tsx +0 -120
  465. package/src/widgets/base/Integer.tsx +0 -56
  466. package/src/widgets/base/Label.tsx +0 -56
  467. package/src/widgets/base/LinkInput.tsx +0 -101
  468. package/src/widgets/base/MultiSelection.tsx +0 -91
  469. package/src/widgets/base/ProgressBar.tsx +0 -38
  470. package/src/widgets/base/Reference.tsx +0 -115
  471. package/src/widgets/base/ReferenceTree.tsx +0 -62
  472. package/src/widgets/base/Selection.tsx +0 -65
  473. package/src/widgets/base/Separator.tsx +0 -26
  474. package/src/widgets/base/Text.tsx +0 -162
  475. package/src/widgets/base/Time.tsx +0 -41
  476. package/src/widgets/base/Url.tsx +0 -26
  477. package/src/widgets/base/many2one/Many2one.tsx +0 -323
  478. package/src/widgets/base/many2one/Many2oneSuffix.tsx +0 -221
  479. package/src/widgets/base/many2one/Many2oneSuffixModal.tsx +0 -42
  480. package/src/widgets/base/many2one/Many2oneTree.tsx +0 -18
  481. package/src/widgets/base/one2many/One2many.tsx +0 -100
  482. package/src/widgets/base/one2many/One2manyInput.tsx +0 -724
  483. package/src/widgets/base/one2many/One2manyTopBar.tsx +0 -158
  484. package/src/widgets/containers/Container.tsx +0 -99
  485. package/src/widgets/containers/Group.tsx +0 -37
  486. package/src/widgets/containers/Notebook.tsx +0 -45
  487. package/src/widgets/custom/Avatar.tsx +0 -32
  488. package/src/widgets/custom/ButtonGroup.tsx +0 -166
  489. package/src/widgets/custom/CodeEditor.tsx +0 -28
  490. package/src/widgets/custom/Comments.tsx +0 -144
  491. package/src/widgets/custom/FiberGrid.tsx +0 -48
  492. package/src/widgets/custom/Indicator.tsx +0 -67
  493. package/src/widgets/custom/Markdown.tsx +0 -22
  494. package/src/widgets/custom/MultiCheckbox.tsx +0 -165
  495. package/src/widgets/custom/Radio.tsx +0 -49
  496. package/src/widgets/custom/Steps.tsx +0 -55
  497. package/src/widgets/custom/Switch.tsx +0 -30
  498. package/src/widgets/custom/Tag.tsx +0 -49
  499. package/src/widgets/custom/Tags.tsx +0 -164
  500. package/src/widgets/custom/Timeline.tsx +0 -196
  501. package/src/widgets/modals/ExportModal.tsx +0 -75
  502. package/src/widgets/modals/FormModal.tsx +0 -122
  503. package/src/widgets/modals/SearchModal.tsx +0 -130
  504. package/src/widgets/modals/TranslationModal.tsx +0 -202
  505. package/src/widgets/views/Dashboard/Dashboard.tsx +0 -381
  506. package/src/widgets/views/Dashboard/DashboardForm.tsx +0 -30
  507. package/src/widgets/views/Dashboard/DashboardTree.tsx +0 -236
  508. package/src/widgets/views/Dashboard/dashboardHelper.ts +0 -79
  509. package/src/widgets/views/DashboardGrid/DashboardGrid.tsx +0 -53
  510. package/src/widgets/views/DashboardGrid/DashboardGrid.types.ts +0 -4
  511. package/src/widgets/views/DashboardGrid/DashboardGridItem.tsx +0 -62
  512. package/src/widgets/views/DashboardGrid/DashboardGridItem.types.ts +0 -10
  513. package/src/widgets/views/DashboardGrid/index.ts +0 -4
  514. package/src/widgets/views/Form.tsx +0 -1153
  515. package/src/widgets/views/Graph/Graph.tsx +0 -145
  516. package/src/widgets/views/Graph/GraphChart.tsx +0 -113
  517. package/src/widgets/views/Graph/GraphDefaults.ts +0 -170
  518. package/src/widgets/views/Graph/GraphIndicator.tsx +0 -421
  519. package/src/widgets/views/Graph/useGraphData.tsx +0 -176
  520. package/src/widgets/views/SearchTree.tsx +0 -357
  521. package/src/widgets/views/Tree.tsx +0 -400
  522. package/src/widgets/views/searchFilter/DateRangePicker.tsx +0 -16
  523. package/src/widgets/views/searchFilter/DateTimeRangePicker.tsx +0 -63
  524. package/src/widgets/views/searchFilter/PairFields.tsx +0 -56
  525. package/src/widgets/views/searchFilter/SearchBottomBar.tsx +0 -58
  526. package/src/widgets/views/searchFilter/SearchField.tsx +0 -59
  527. package/src/widgets/views/searchFilter/SearchFilter.tsx +0 -159
  528. package/src/widgets/views/searchFilter/SearchParams.tsx +0 -32
@@ -1,724 +0,0 @@
1
- import React, {
2
- useState,
3
- useRef,
4
- useContext,
5
- useEffect,
6
- useCallback,
7
- } from "react";
8
- import { One2many as One2manyOoui } from "@gisce/ooui";
9
- import { Alert, Spin } from "antd";
10
- import { Form } from "@/index";
11
- import { Tree } from "@/index";
12
- import { Graph } from "@/widgets/views/Graph/Graph";
13
- import {
14
- Form as FormOoui,
15
- Tree as TreeOoui,
16
- parseGraph,
17
- transformDomainForChildWidget,
18
- } from "@gisce/ooui";
19
- import { Views, ViewType } from "@/types";
20
- import ConnectionProvider from "@/ConnectionProvider";
21
- import { FormModal } from "@/widgets/modals/FormModal";
22
- import showUnsavedChangesDialog from "@/ui/UnsavedChangesDialog";
23
- import showRemoveItemDialog from "@/ui/RemoveItemDialog";
24
- import showUnlinkItemDialog from "@/ui/UnlinkItemDialog";
25
- import {
26
- One2manyContext,
27
- One2manyContextType,
28
- } from "@/context/One2manyContext";
29
- import { FormContext, FormContextType } from "@/context/FormContext";
30
- import { One2manyTopBar } from "@/widgets/base/one2many/One2manyTopBar";
31
- import { readObjectValues, getNextPendingId } from "@/helpers/one2manyHelper";
32
- import { SearchModal } from "@/widgets/modals/SearchModal";
33
- import { LocaleContext, LocaleContextType } from "@/context/LocaleContext";
34
- import { getColorMap, getTree, sortResults } from "@/helpers/treeHelper";
35
- import { transformPlainMany2Ones } from "@/helpers/formHelper";
36
-
37
- type One2manyValue = {
38
- fields?: any;
39
- items: Array<One2manyItem>;
40
- };
41
-
42
- const ViewObjects = {
43
- form: FormOoui,
44
- tree: TreeOoui,
45
- graph: Graph,
46
- };
47
-
48
- type One2manyItem = {
49
- operation?:
50
- | "original"
51
- | "pendingRemove"
52
- | "pendingUpdate"
53
- | "pendingCreate"
54
- | "pendingLink";
55
- id?: number;
56
- values?: any;
57
- treeValues?: any;
58
- defaultValues?: any;
59
- };
60
-
61
- interface One2manyInputProps {
62
- ooui: One2manyOoui;
63
- value?: One2manyValue;
64
- onChange?: (value: One2manyValue) => void;
65
- views: Views;
66
- }
67
-
68
- function filterDuplicateItems(items: any) {
69
- const ids = items.map((o: any) => o.id);
70
- const filtered = items.filter((item: any, index: number) => {
71
- const { id } = item;
72
- return !ids.includes(id, index + 1);
73
- });
74
- return filtered;
75
- }
76
-
77
- const One2manyInput: React.FC<One2manyInputProps> = (
78
- props: One2manyInputProps
79
- ) => {
80
- const { value, onChange, ooui, views } = props;
81
- const { items = [] } = value || {};
82
-
83
- const { currentView, setCurrentView, itemIndex, setItemIndex } = useContext(
84
- One2manyContext
85
- ) as One2manyContextType;
86
-
87
- const formContext = useContext(FormContext) as FormContextType;
88
- const { activeId, getFields, getValues, getContext, domain } =
89
- formContext || {};
90
- const { lang, t } = useContext(LocaleContext) as LocaleContextType;
91
-
92
- const [formHasChanges, setFormHasChanges] = useState<boolean>(false);
93
- const [isLoading, setIsLoading] = useState<boolean>(false);
94
- const [error, setError] = useState<string>();
95
- const [showFormModal, setShowFormModal] = useState<boolean>(false);
96
- const [showSearchModal, setShowSearchModal] = useState<boolean>(false);
97
- const [modalItem, setModalItem] = useState<One2manyItem>();
98
- const [selectedRowKeys, setSelectedRowKeys] = useState<any[]>([]);
99
- const [continuousEntryMode, setContinuousEntryMode] =
100
- useState<boolean>(false);
101
- const transformedDomain = useRef<any[]>([]);
102
- const [sorter, setSorter] = useState<any>();
103
- const originalSortItemIds = useRef<number[]>();
104
- const [colorsForResults, setColorsForResults] = useState<any>(undefined);
105
-
106
- const {
107
- readOnly,
108
- relation,
109
- context,
110
- domain: widgetDomain,
111
- } = ooui as One2manyOoui;
112
- const isMany2many = ooui.type === "many2many";
113
- const { id: fieldName } = ooui;
114
- const itemsToShow = items.filter(
115
- (item) =>
116
- (item.values || item.treeValues) && item.operation !== "pendingRemove"
117
- );
118
- const previousCurrentView = useRef<ViewType>();
119
-
120
- useEffect(() => {
121
- if (previousCurrentView.current !== currentView) {
122
- previousCurrentView.current = currentView;
123
- fetchDataIfNeeded();
124
- return;
125
- }
126
-
127
- fetchDataIfNeeded();
128
- }, [items, currentView]);
129
-
130
- const fetchDataIfNeeded = useCallback(() => {
131
- if (currentView === "form" && items.some((item) => !item.values)) {
132
- fetchData();
133
- } else if (
134
- currentView === "tree" &&
135
- items.some((item) => !item.treeValues)
136
- ) {
137
- fetchData();
138
- }
139
- }, [items, currentView]);
140
-
141
- useEffect(() => {
142
- parseDomain();
143
- }, [domain]);
144
-
145
- const triggerChange = (changedValue: Array<One2manyItem>) => {
146
- onChange?.({
147
- fields: views.get("form")?.fields || views.get("tree")?.fields,
148
- items: filterDuplicateItems(changedValue),
149
- });
150
- };
151
-
152
- const fetchData = async () => {
153
- await fetchOriginalItemsFromApi();
154
- if (itemIndex > itemsToShow.length - 1 && itemIndex !== 0) {
155
- setItemIndex(0);
156
- }
157
- };
158
-
159
- const fetchOriginalItemsFromApi = async (mode?: ViewType) => {
160
- setIsLoading(true);
161
- setFormHasChanges(false);
162
- setError(undefined);
163
-
164
- try {
165
- const [itemsWithValues, evaluatedColorsForTree] = await readObjectValues({
166
- treeView: {
167
- arch: views.get("tree")?.arch,
168
- fields: views.get("tree")?.fields,
169
- },
170
- formView: {
171
- fields: views.get("form")?.fields || {},
172
- },
173
- model: relation,
174
- items,
175
- context: { ...getContext?.(), ...context },
176
- currentView: mode || currentView,
177
- });
178
-
179
- if (!originalSortItemIds.current) {
180
- originalSortItemIds.current = itemsWithValues.map((item) => item.id!);
181
- }
182
-
183
- if ((currentView || mode) === "tree" && evaluatedColorsForTree) {
184
- setColorsForResults(evaluatedColorsForTree);
185
- }
186
-
187
- triggerChange(itemsWithValues);
188
- return itemsWithValues;
189
- } catch (err) {
190
- setError(err as any);
191
- } finally {
192
- setIsLoading(false);
193
- }
194
- };
195
-
196
- async function parseDomain() {
197
- if (widgetDomain) {
198
- transformedDomain.current =
199
- await ConnectionProvider.getHandler().evalDomain({
200
- domain: widgetDomain,
201
- values: transformPlainMany2Ones({
202
- fields: getFields(),
203
- values: getValues(),
204
- }),
205
- fields: getFields(),
206
- context: getContext(),
207
- });
208
- }
209
-
210
- if (domain && domain.length > 0) {
211
- transformedDomain.current = transformedDomain.current.concat(
212
- transformDomainForChildWidget({
213
- domain,
214
- widgetFieldName: fieldName,
215
- })
216
- );
217
- }
218
- }
219
-
220
- const toggleViewMode = () => {
221
- const keys = Array.from(views.keys());
222
- const nextView = keys[
223
- (keys.indexOf(currentView) + 1) % keys.length
224
- ] as ViewType;
225
- if (currentView === "form") {
226
- showFormChangesDialogIfNeeded(() => {
227
- setCurrentView(nextView);
228
- });
229
- } else {
230
- setCurrentView(nextView);
231
- }
232
- };
233
-
234
- const previousItem = () => {
235
- if (itemIndex > 0) {
236
- if (currentView === "form") {
237
- showFormChangesDialogIfNeeded(() => {
238
- setItemIndex(itemIndex - 1);
239
- });
240
- } else {
241
- setItemIndex(itemIndex - 1);
242
- }
243
- }
244
- };
245
-
246
- const nextItem = () => {
247
- const totalItems = itemsToShow.length;
248
- if (itemIndex < totalItems - 1) {
249
- if (currentView === "form") {
250
- showFormChangesDialogIfNeeded(() => {
251
- setItemIndex(itemIndex + 1);
252
- });
253
- } else {
254
- setItemIndex(itemIndex + 1);
255
- }
256
- }
257
- };
258
-
259
- const reloadOriginalValuesForFormItem = async () => {
260
- const currentId = itemsToShow[itemIndex].id!;
261
-
262
- const updatedFormObject = (
263
- await ConnectionProvider.getHandler().readObjects({
264
- model: relation,
265
- ids: [currentId],
266
- fields: views.get("form").fields,
267
- context: { ...getContext?.(), ...context },
268
- })
269
- )[0];
270
- const updatedTreeObject = (
271
- await ConnectionProvider.getHandler().readObjects({
272
- model: relation,
273
- ids: [currentId],
274
- fields: views.get("tree").fields,
275
- context: { ...getContext?.(), ...context },
276
- })
277
- )[0];
278
-
279
- const updatedItems: One2manyItem[] = items.map((item) => {
280
- if (item.id === currentId) {
281
- return {
282
- ...item,
283
- operation: "original",
284
- values: updatedFormObject,
285
- treeValues: updatedTreeObject,
286
- };
287
- }
288
- return item;
289
- });
290
-
291
- triggerChange(updatedItems);
292
- };
293
-
294
- const showFormChangesDialogIfNeeded = (callback: () => void) => {
295
- if (formHasChanges) {
296
- showUnsavedChangesDialog({
297
- lang,
298
- onOk: () => {
299
- reloadOriginalValuesForFormItem();
300
- callback();
301
- setFormHasChanges(false);
302
- },
303
- });
304
- } else {
305
- callback();
306
- }
307
- };
308
-
309
- const showRemoveConfirm = () => {
310
- if (isMany2many) {
311
- showUnlinkItemDialog({
312
- lang,
313
- onOk: () => {
314
- if (currentView === "form") {
315
- removeCurrentItem();
316
- } else {
317
- removeSelectedItems();
318
- }
319
- },
320
- });
321
- return;
322
- }
323
-
324
- showRemoveItemDialog({
325
- lang,
326
- onOk: () => {
327
- if (currentView === "form") {
328
- removeCurrentItem();
329
- } else {
330
- removeSelectedItems();
331
- }
332
- },
333
- });
334
- };
335
-
336
- const createItem = async () => {
337
- const { inv_field } = ooui;
338
- let defaultValues: any;
339
-
340
- if (inv_field && activeId) {
341
- defaultValues = { [inv_field]: activeId };
342
- }
343
-
344
- if (currentView === "form") {
345
- showFormChangesDialogIfNeeded(() => {
346
- setContinuousEntryMode(true);
347
- setModalItem({ defaultValues });
348
- setShowFormModal(true);
349
- });
350
- } else {
351
- setContinuousEntryMode(true);
352
- setModalItem({ defaultValues });
353
- setShowFormModal(true);
354
- }
355
- };
356
-
357
- const searchItem = async () => {
358
- if (currentView === "form") {
359
- showFormChangesDialogIfNeeded(() => {
360
- setShowSearchModal(true);
361
- });
362
- } else {
363
- setShowSearchModal(true);
364
- }
365
- };
366
-
367
- const removeCurrentItem = async () => {
368
- setIsLoading(true);
369
- setFormHasChanges(false);
370
- setError(undefined);
371
-
372
- try {
373
- if (itemsToShow[itemIndex].id! > 0) {
374
- const updatedItems = items.map((item) => {
375
- if (item.id === itemsToShow[itemIndex].id!) {
376
- return {
377
- ...item,
378
- operation: "pendingRemove",
379
- } as One2manyItem;
380
- } else {
381
- return item;
382
- }
383
- });
384
- triggerChange(updatedItems);
385
- } else {
386
- triggerChange(
387
- items.filter((item) => item.id !== itemsToShow[itemIndex].id!)
388
- );
389
- }
390
- } catch (err) {
391
- setError(err as any);
392
- }
393
-
394
- setItemIndex(0);
395
- setIsLoading(false);
396
- };
397
-
398
- const removeSelectedItems = async () => {
399
- const itemsToRemove = itemsToShow.filter((item) => {
400
- return selectedRowKeys.includes(item.id);
401
- });
402
-
403
- setIsLoading(true);
404
- setFormHasChanges(false);
405
- setError(undefined);
406
-
407
- try {
408
- const idsToRemove: number[] = itemsToRemove.map((item) => item.id!);
409
-
410
- const updatedItems = items
411
- .filter((item) => {
412
- if (idsToRemove.includes(item.id!) && item.id! < 0) {
413
- return false;
414
- }
415
- return true;
416
- })
417
- .map((item) => {
418
- if (idsToRemove.includes(item.id!)) {
419
- return {
420
- ...item,
421
- operation: "pendingRemove",
422
- } as One2manyItem;
423
- } else {
424
- return item;
425
- }
426
- });
427
- triggerChange(updatedItems);
428
- } catch (err) {
429
- setError(err as any);
430
- }
431
-
432
- setItemIndex(0);
433
- setIsLoading(false);
434
- };
435
-
436
- // This is the callback called when a modal is done creating/updating the object
437
- const onFormModalSubmitSucceed = (
438
- id: number | undefined,
439
- _: any,
440
- values: any,
441
- x2manyPendingLink: boolean = false
442
- ) => {
443
- let updatedItems: One2manyItem[];
444
-
445
- if (x2manyPendingLink) {
446
- updatedItems = items.concat({
447
- id,
448
- operation: "pendingLink",
449
- values: { ...values, id },
450
- treeValues: { ...values, id },
451
- });
452
- } else if (id) {
453
- updatedItems = items.map((item: One2manyItem) => {
454
- if (item.id === id) {
455
- return {
456
- id,
457
- operation: id > 0 ? "pendingUpdate" : "pendingCreate",
458
- values: { ...values, id },
459
- treeValues: { ...values, id },
460
- };
461
- }
462
- return item;
463
- });
464
- } else {
465
- const nextId = getNextPendingId(items);
466
- updatedItems = items.concat({
467
- id: nextId,
468
- operation: "pendingCreate",
469
- values: { ...values, id: nextId },
470
- treeValues: { ...values, id: nextId },
471
- });
472
- }
473
-
474
- triggerChange(updatedItems);
475
-
476
- if (!continuousEntryMode) {
477
- setShowFormModal(false);
478
- }
479
- };
480
-
481
- const onTreeRowClicked = async (record: any) => {
482
- const { id: itemId } = record;
483
-
484
- let itemsToLoadFrom: One2manyItem[] | undefined = items;
485
-
486
- // We should fetch the form data if needed in order to get the form values
487
- const modalItem = items.find((item) => item.id === itemId);
488
- if (modalItem?.values === undefined) {
489
- itemsToLoadFrom = await fetchOriginalItemsFromApi("form");
490
- }
491
-
492
- // We show the detail for the clicked item in a Form modal
493
- setModalItem(itemsToLoadFrom!.find((item) => item.id === itemId));
494
- setContinuousEntryMode(false);
495
- setShowFormModal(true);
496
- };
497
-
498
- const onSearchModalSelectValue = async (ids: number[]) => {
499
- setIsLoading(true);
500
-
501
- let updatedItems = items;
502
- const filteredIds = ids.filter((id) => {
503
- return !items.find((item) => item.id === id);
504
- });
505
-
506
- try {
507
- for (const id of filteredIds) {
508
- const updatedFormObject = (
509
- await ConnectionProvider.getHandler().readObjects({
510
- model: relation,
511
- ids: [id],
512
- fields: views.get("form").fields,
513
- context: { ...getContext?.(), ...context },
514
- })
515
- )[0];
516
- const updatedTreeObject = (
517
- await ConnectionProvider.getHandler().readObjects({
518
- model: relation,
519
- ids: [id],
520
- fields: views.get("tree").fields,
521
- context: { ...getContext?.(), ...context },
522
- })
523
- )[0];
524
- updatedItems.push({
525
- id,
526
- operation: "pendingLink",
527
- values: updatedFormObject,
528
- treeValues: updatedTreeObject,
529
- });
530
- }
531
-
532
- triggerChange(updatedItems);
533
- } catch (e) {
534
- setError(e as any);
535
- } finally {
536
- setIsLoading(false);
537
- }
538
- };
539
-
540
- // TODO: improve this. Do we really have to parse the entire object just to get the title?
541
- function getTitle() {
542
- const ViewType: any = (ViewObjects as any)[currentView];
543
- if (currentView === "graph") {
544
- const parsedGraph = parseGraph(views.get("graph").arch);
545
- return parsedGraph.string!;
546
- } else {
547
- const ooui = new ViewType(views.get(currentView).fields);
548
- ooui.parse(views.get(currentView).arch);
549
- return ooui.string!;
550
- }
551
- }
552
-
553
- const content = () => {
554
- if (currentView === "form") {
555
- if (itemsToShow.length === 0) {
556
- return t("noCurrentEntries");
557
- }
558
-
559
- if (
560
- currentView !== previousCurrentView.current &&
561
- items.some((item) => !item.values)
562
- ) {
563
- return <Spin />;
564
- }
565
-
566
- return (
567
- <Form
568
- formView={views.get("form")}
569
- values={itemsToShow[itemIndex]?.values}
570
- parentContext={{ ...getContext?.(), ...context }}
571
- model={relation}
572
- id={itemsToShow[itemIndex]?.id}
573
- submitMode={"values"}
574
- onFieldsChange={(values: any) => {
575
- const currentItemId = itemsToShow[itemIndex]?.id;
576
-
577
- const updatedItems = items.map((item) => {
578
- if (item.id === currentItemId) {
579
- return {
580
- ...item,
581
- operation:
582
- item.operation === "original"
583
- ? "pendingUpdate"
584
- : item.operation,
585
- values: { ...values, id: currentItemId },
586
- treeValues: { ...values, id: currentItemId },
587
- };
588
- }
589
- return item;
590
- });
591
-
592
- triggerChange(updatedItems);
593
-
594
- setFormHasChanges(true);
595
- }}
596
- readOnly={readOnly}
597
- />
598
- );
599
- }
600
-
601
- let resultsToShow = [];
602
-
603
- if (itemsToShow.some((item) => item.treeValues)) {
604
- resultsToShow = sorter
605
- ? sortResults({
606
- resultsToSort: itemsToShow.map((item) => item.treeValues),
607
- sorter,
608
- fields: {
609
- ...views.get("tree").fields,
610
- ...(views.get("form")?.fields || {}),
611
- },
612
- })
613
- : itemsToShow.map((item) => item.treeValues);
614
- }
615
-
616
- if (currentView === "tree") {
617
- return (
618
- <Tree
619
- total={itemsToShow.length}
620
- limit={itemsToShow.length}
621
- treeView={views.get("tree")}
622
- results={resultsToShow}
623
- loading={isLoading}
624
- onRowClicked={
625
- views.get("form")?.fields !== undefined
626
- ? onTreeRowClicked
627
- : undefined
628
- }
629
- showPagination={false}
630
- rowSelection={{
631
- selectedRowKeys,
632
- onChange: setSelectedRowKeys,
633
- }}
634
- sorter={sorter}
635
- onChangeSort={setSorter}
636
- context={{ ...getContext?.(), ...context }}
637
- colorsForResults={colorsForResults}
638
- readonly={readOnly}
639
- />
640
- );
641
- }
642
- if (currentView === "graph") {
643
- const domain = [[`${ooui.inv_field}`, "=", activeId]];
644
- return (
645
- <Graph
646
- view_id={views.get("graph").view_id}
647
- model={ooui.relation}
648
- domain={domain}
649
- context={{ ...getContext?.(), ...context }}
650
- limit={0}
651
- />
652
- );
653
- }
654
- };
655
-
656
- if (error) {
657
- return <Alert className="mt-10" message={error} type="error" banner />;
658
- }
659
-
660
- // If we are in create mode we have to show the modal in continuous mode.
661
- // This means the modal won't close after clicking OK, the modal will add the new item
662
- // and will reset to defaults to let the user add a new item.
663
- const mustClearAfterSave = continuousEntryMode;
664
-
665
- if (isLoading) {
666
- return <Spin />;
667
- }
668
-
669
- return (
670
- <>
671
- <One2manyTopBar
672
- mode={currentView}
673
- title={getTitle()}
674
- readOnly={readOnly}
675
- isMany2Many={isMany2many}
676
- formHasChanges={formHasChanges}
677
- totalItems={itemsToShow.length}
678
- currentItemIndex={itemIndex}
679
- onDelete={showRemoveConfirm}
680
- onCreateItem={createItem}
681
- onToggleViewMode={toggleViewMode}
682
- onPreviousItem={previousItem}
683
- onNextItem={nextItem}
684
- onSearchItem={searchItem}
685
- selectedRowKeys={selectedRowKeys}
686
- showCreateButton={views.get("form")?.fields !== undefined}
687
- showToggleButton={views.size > 1}
688
- />
689
- {content()}
690
- <FormModal
691
- formView={views.get("form")}
692
- model={relation}
693
- id={modalItem?.id}
694
- submitMode={"2many"}
695
- values={modalItem?.values}
696
- defaultValues={modalItem?.defaultValues}
697
- visible={showFormModal}
698
- onSubmitSucceed={onFormModalSubmitSucceed}
699
- parentContext={{ ...getContext?.(), ...context }}
700
- onCancel={() => {
701
- setContinuousEntryMode(false);
702
- setShowFormModal(false);
703
- }}
704
- readOnly={readOnly}
705
- mustClearAfterSave={mustClearAfterSave}
706
- />
707
- <SearchModal
708
- domain={transformedDomain.current}
709
- model={relation}
710
- context={{ ...getContext?.(), ...context }}
711
- visible={showSearchModal}
712
- onSelectValues={async (ids: number[]) => {
713
- setShowSearchModal(false);
714
- onSearchModalSelectValue(ids);
715
- }}
716
- onCloseModal={() => {
717
- setShowSearchModal(false);
718
- }}
719
- />
720
- </>
721
- );
722
- };
723
-
724
- export { One2manyInput, One2manyItem, One2manyValue };