@gisce/react-ooui 1.2.0-rc.9 → 1.2.0-rc.91

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 (355) hide show
  1. package/README.md +0 -6
  2. package/dist/actionbar/ActionButton.d.ts +2 -2
  3. package/dist/actionbar/ActionButton.d.ts.map +1 -1
  4. package/dist/actionbar/AttachmentsButton.d.ts +2 -2
  5. package/dist/actionbar/AttachmentsButton.d.ts.map +1 -1
  6. package/dist/actionbar/AttachmentsButtonWrapper.d.ts +2 -2
  7. package/dist/actionbar/AttachmentsButtonWrapper.d.ts.map +1 -1
  8. package/dist/actionbar/ButtonWithBadge.d.ts +2 -2
  9. package/dist/actionbar/ButtonWithBadge.d.ts.map +1 -1
  10. package/dist/actionbar/ChangeViewButton.d.ts +2 -2
  11. package/dist/actionbar/ChangeViewButton.d.ts.map +1 -1
  12. package/dist/actionbar/DashboardActionBar.d.ts +2 -2
  13. package/dist/actionbar/DashboardActionBar.d.ts.map +1 -1
  14. package/dist/actionbar/DropdownButton.d.ts +2 -2
  15. package/dist/actionbar/DropdownButton.d.ts.map +1 -1
  16. package/dist/actionbar/FormActionBar.d.ts +2 -2
  17. package/dist/actionbar/FormActionBar.d.ts.map +1 -1
  18. package/dist/actionbar/GraphActionBar.d.ts +2 -2
  19. package/dist/actionbar/GraphActionBar.d.ts.map +1 -1
  20. package/dist/actionbar/NewButton.d.ts +2 -2
  21. package/dist/actionbar/NewButton.d.ts.map +1 -1
  22. package/dist/actionbar/SearchBar.d.ts +2 -2
  23. package/dist/actionbar/SearchBar.d.ts.map +1 -1
  24. package/dist/actionbar/TreeActionBar.d.ts +2 -2
  25. package/dist/actionbar/TreeActionBar.d.ts.map +1 -1
  26. package/dist/common/ButtonWithTooltip.d.ts +2 -2
  27. package/dist/common/ButtonWithTooltip.d.ts.map +1 -1
  28. package/dist/common/DatePicker.d.ts +14 -2
  29. package/dist/common/DatePicker.d.ts.map +1 -1
  30. package/dist/common/Field.d.ts +1 -1
  31. package/dist/common/Field.d.ts.map +1 -1
  32. package/dist/context/ActionViewContext.d.ts +5 -1
  33. package/dist/context/ActionViewContext.d.ts.map +1 -1
  34. package/dist/context/ConfigContext.d.ts +7 -0
  35. package/dist/context/ConfigContext.d.ts.map +1 -0
  36. package/dist/context/ContentRootContext.d.ts.map +1 -1
  37. package/dist/context/FormContext.d.ts +4 -2
  38. package/dist/context/FormContext.d.ts.map +1 -1
  39. package/dist/helpers/errorHelper.d.ts +6 -0
  40. package/dist/helpers/errorHelper.d.ts.map +1 -0
  41. package/dist/helpers/filesHelper.d.ts.map +1 -1
  42. package/dist/helpers/formHelper.d.ts +5 -3
  43. package/dist/helpers/formHelper.d.ts.map +1 -1
  44. package/dist/helpers/iconMapper.d.ts +11 -2
  45. package/dist/helpers/iconMapper.d.ts.map +1 -1
  46. package/dist/helpers/one2manyHelper.d.ts +12 -4
  47. package/dist/helpers/one2manyHelper.d.ts.map +1 -1
  48. package/dist/helpers/searchHelper.d.ts +1 -1
  49. package/dist/helpers/searchHelper.d.ts.map +1 -1
  50. package/dist/helpers/treeHelper.d.ts +1 -1
  51. package/dist/helpers/treeHelper.d.ts.map +1 -1
  52. package/dist/hooks/useExport.d.ts +44 -0
  53. package/dist/hooks/useExport.d.ts.map +1 -0
  54. package/dist/index.d.ts +4 -1
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/locales/ca_ES.d.ts +2 -0
  57. package/dist/locales/ca_ES.d.ts.map +1 -1
  58. package/dist/locales/en_US.d.ts +2 -0
  59. package/dist/locales/en_US.d.ts.map +1 -1
  60. package/dist/locales/es_ES.d.ts +2 -0
  61. package/dist/locales/es_ES.d.ts.map +1 -1
  62. package/dist/react-ooui.es.js +9360 -29063
  63. package/dist/react-ooui.es.js.map +1 -1
  64. package/dist/react-ooui.umd.js +16 -265
  65. package/dist/react-ooui.umd.js.map +1 -1
  66. package/dist/style.css +1 -0
  67. package/dist/types/index.d.ts +1 -0
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/dist/ui/ActionErrorDialog.d.ts.map +1 -1
  70. package/dist/ui/ErrorAlert.d.ts +6 -0
  71. package/dist/ui/ErrorAlert.d.ts.map +1 -0
  72. package/dist/ui/FavouriteButton.d.ts +2 -2
  73. package/dist/ui/FavouriteButton.d.ts.map +1 -1
  74. package/dist/ui/GoToResourceModal.d.ts +2 -2
  75. package/dist/ui/GoToResourceModal.d.ts.map +1 -1
  76. package/dist/ui/TitleHeader.d.ts +2 -2
  77. package/dist/ui/TitleHeader.d.ts.map +1 -1
  78. package/dist/views/ActionView.d.ts.map +1 -1
  79. package/dist/views/CurrentTabContent.d.ts +2 -2
  80. package/dist/views/CurrentTabContent.d.ts.map +1 -1
  81. package/dist/views/RootView.d.ts.map +1 -1
  82. package/dist/views/TabContent.d.ts +1 -1
  83. package/dist/views/TabContent.d.ts.map +1 -1
  84. package/dist/views/TabSelector.d.ts +2 -2
  85. package/dist/views/TabSelector.d.ts.map +1 -1
  86. package/dist/views/actionViews/DashboardActionView.d.ts +2 -2
  87. package/dist/views/actionViews/DashboardActionView.d.ts.map +1 -1
  88. package/dist/views/actionViews/FormActionView.d.ts +2 -2
  89. package/dist/views/actionViews/FormActionView.d.ts.map +1 -1
  90. package/dist/views/actionViews/GraphActionView.d.ts +2 -2
  91. package/dist/views/actionViews/GraphActionView.d.ts.map +1 -1
  92. package/dist/views/actionViews/TreeActionView.d.ts +2 -2
  93. package/dist/views/actionViews/TreeActionView.d.ts.map +1 -1
  94. package/dist/views/tabs/Tab.d.ts +2 -2
  95. package/dist/views/tabs/Tab.d.ts.map +1 -1
  96. package/dist/widgets/WidgetFactory.d.ts.map +1 -1
  97. package/dist/widgets/base/Binary.d.ts +3 -3
  98. package/dist/widgets/base/Binary.d.ts.map +1 -1
  99. package/dist/widgets/base/Boolean.d.ts +2 -2
  100. package/dist/widgets/base/Boolean.d.ts.map +1 -1
  101. package/dist/widgets/base/Button.d.ts +2 -2
  102. package/dist/widgets/base/Button.d.ts.map +1 -1
  103. package/dist/widgets/base/Char.d.ts +2 -2
  104. package/dist/widgets/base/Char.d.ts.map +1 -1
  105. package/dist/widgets/base/Date.d.ts +2 -2
  106. package/dist/widgets/base/Date.d.ts.map +1 -1
  107. package/dist/widgets/base/DateTime.d.ts +2 -2
  108. package/dist/widgets/base/DateTime.d.ts.map +1 -1
  109. package/dist/widgets/base/Email.d.ts +2 -2
  110. package/dist/widgets/base/Email.d.ts.map +1 -1
  111. package/dist/widgets/base/Float.d.ts +2 -2
  112. package/dist/widgets/base/Float.d.ts.map +1 -1
  113. package/dist/widgets/base/FloatTime.d.ts +1 -1
  114. package/dist/widgets/base/FloatTime.d.ts.map +1 -1
  115. package/dist/widgets/base/Image.d.ts +3 -3
  116. package/dist/widgets/base/Image.d.ts.map +1 -1
  117. package/dist/widgets/base/Integer.d.ts +2 -2
  118. package/dist/widgets/base/Integer.d.ts.map +1 -1
  119. package/dist/widgets/base/Label.d.ts +2 -2
  120. package/dist/widgets/base/Label.d.ts.map +1 -1
  121. package/dist/widgets/base/LinkInput.d.ts +2 -2
  122. package/dist/widgets/base/LinkInput.d.ts.map +1 -1
  123. package/dist/widgets/base/MultiSelection.d.ts +3 -3
  124. package/dist/widgets/base/MultiSelection.d.ts.map +1 -1
  125. package/dist/widgets/base/ProgressBar.d.ts +3 -3
  126. package/dist/widgets/base/ProgressBar.d.ts.map +1 -1
  127. package/dist/widgets/base/Reference.d.ts +1 -1
  128. package/dist/widgets/base/Reference.d.ts.map +1 -1
  129. package/dist/widgets/base/ReferenceTree.d.ts +8 -0
  130. package/dist/widgets/base/ReferenceTree.d.ts.map +1 -0
  131. package/dist/widgets/base/Selection.d.ts +3 -3
  132. package/dist/widgets/base/Selection.d.ts.map +1 -1
  133. package/dist/widgets/base/Separator.d.ts +2 -2
  134. package/dist/widgets/base/Separator.d.ts.map +1 -1
  135. package/dist/widgets/base/Text.d.ts +2 -2
  136. package/dist/widgets/base/Text.d.ts.map +1 -1
  137. package/dist/widgets/base/Url.d.ts +2 -2
  138. package/dist/widgets/base/Url.d.ts.map +1 -1
  139. package/dist/widgets/base/many2one/Many2one.d.ts +1 -1
  140. package/dist/widgets/base/many2one/Many2one.d.ts.map +1 -1
  141. package/dist/widgets/base/many2one/Many2oneSuffix.d.ts +2 -2
  142. package/dist/widgets/base/many2one/Many2oneSuffix.d.ts.map +1 -1
  143. package/dist/widgets/base/many2one/Many2oneSuffixModal.d.ts +2 -2
  144. package/dist/widgets/base/many2one/Many2oneSuffixModal.d.ts.map +1 -1
  145. package/dist/widgets/base/many2one/Many2oneTree.d.ts +6 -0
  146. package/dist/widgets/base/many2one/Many2oneTree.d.ts.map +1 -0
  147. package/dist/widgets/base/one2many/One2many.d.ts +2 -2
  148. package/dist/widgets/base/one2many/One2many.d.ts.map +1 -1
  149. package/dist/widgets/base/one2many/One2manyInput.d.ts.map +1 -1
  150. package/dist/widgets/base/one2many/One2manyTopBar.d.ts +2 -2
  151. package/dist/widgets/base/one2many/One2manyTopBar.d.ts.map +1 -1
  152. package/dist/widgets/containers/Group.d.ts.map +1 -1
  153. package/dist/widgets/custom/Avatar.d.ts +10 -0
  154. package/dist/widgets/custom/Avatar.d.ts.map +1 -0
  155. package/dist/widgets/custom/ButtonGroup.d.ts +2 -2
  156. package/dist/widgets/custom/ButtonGroup.d.ts.map +1 -1
  157. package/dist/widgets/custom/CodeEditor.d.ts +2 -2
  158. package/dist/widgets/custom/CodeEditor.d.ts.map +1 -1
  159. package/dist/widgets/custom/FiberGrid.d.ts +3 -3
  160. package/dist/widgets/custom/FiberGrid.d.ts.map +1 -1
  161. package/dist/widgets/custom/Indicator.d.ts +2 -2
  162. package/dist/widgets/custom/Indicator.d.ts.map +1 -1
  163. package/dist/widgets/custom/Markdown.d.ts +5 -0
  164. package/dist/widgets/custom/Markdown.d.ts.map +1 -0
  165. package/dist/widgets/custom/MultiCheckbox.d.ts +3 -3
  166. package/dist/widgets/custom/MultiCheckbox.d.ts.map +1 -1
  167. package/dist/widgets/custom/Radio.d.ts +3 -3
  168. package/dist/widgets/custom/Radio.d.ts.map +1 -1
  169. package/dist/widgets/custom/Steps.d.ts +3 -3
  170. package/dist/widgets/custom/Steps.d.ts.map +1 -1
  171. package/dist/widgets/custom/Switch.d.ts +2 -2
  172. package/dist/widgets/custom/Switch.d.ts.map +1 -1
  173. package/dist/widgets/custom/Tag.d.ts +5 -0
  174. package/dist/widgets/custom/Tag.d.ts.map +1 -0
  175. package/dist/widgets/custom/Tags.d.ts +3 -3
  176. package/dist/widgets/custom/Tags.d.ts.map +1 -1
  177. package/dist/widgets/custom/Timeline.d.ts +3 -3
  178. package/dist/widgets/custom/Timeline.d.ts.map +1 -1
  179. package/dist/widgets/modals/ExportModal.d.ts +4 -3
  180. package/dist/widgets/modals/ExportModal.d.ts.map +1 -1
  181. package/dist/widgets/modals/FormModal.d.ts +2 -2
  182. package/dist/widgets/modals/FormModal.d.ts.map +1 -1
  183. package/dist/widgets/modals/SearchModal.d.ts +2 -2
  184. package/dist/widgets/modals/SearchModal.d.ts.map +1 -1
  185. package/dist/widgets/modals/TranslationModal.d.ts +2 -2
  186. package/dist/widgets/modals/TranslationModal.d.ts.map +1 -1
  187. package/dist/widgets/views/Dashboard/Dashboard.d.ts.map +1 -1
  188. package/dist/widgets/views/Dashboard/DashboardForm.d.ts +2 -2
  189. package/dist/widgets/views/Dashboard/DashboardForm.d.ts.map +1 -1
  190. package/dist/widgets/views/Dashboard/DashboardTree.d.ts +2 -2
  191. package/dist/widgets/views/Dashboard/DashboardTree.d.ts.map +1 -1
  192. package/dist/widgets/views/DashboardGrid/DashboardGrid.d.ts +2 -2
  193. package/dist/widgets/views/DashboardGrid/DashboardGrid.d.ts.map +1 -1
  194. package/dist/widgets/views/DashboardGrid/DashboardGridItem.d.ts +2 -2
  195. package/dist/widgets/views/DashboardGrid/DashboardGridItem.d.ts.map +1 -1
  196. package/dist/widgets/views/Form.d.ts.map +1 -1
  197. package/dist/widgets/views/Graph/GraphChart.d.ts +2 -2
  198. package/dist/widgets/views/Graph/GraphChart.d.ts.map +1 -1
  199. package/dist/widgets/views/Graph/GraphDefaults.d.ts +36 -0
  200. package/dist/widgets/views/Graph/GraphDefaults.d.ts.map +1 -1
  201. package/dist/widgets/views/Graph/GraphIndicator.d.ts +2 -2
  202. package/dist/widgets/views/Graph/GraphIndicator.d.ts.map +1 -1
  203. package/dist/widgets/views/SearchTree.d.ts.map +1 -1
  204. package/dist/widgets/views/Tree.d.ts +2 -0
  205. package/dist/widgets/views/Tree.d.ts.map +1 -1
  206. package/dist/widgets/views/searchFilter/DateRangePicker.d.ts +2 -2
  207. package/dist/widgets/views/searchFilter/DateRangePicker.d.ts.map +1 -1
  208. package/dist/widgets/views/searchFilter/DateTimeRangePicker.d.ts +2 -2
  209. package/dist/widgets/views/searchFilter/DateTimeRangePicker.d.ts.map +1 -1
  210. package/dist/widgets/views/searchFilter/SearchField.d.ts +2 -2
  211. package/dist/widgets/views/searchFilter/SearchField.d.ts.map +1 -1
  212. package/dist/widgets/views/searchFilter/SearchFilter.d.ts +3 -2
  213. package/dist/widgets/views/searchFilter/SearchFilter.d.ts.map +1 -1
  214. package/package.json +14 -15
  215. package/src/__tests__/iconMapper.test.ts +20 -5
  216. package/src/__tests__/searchFilterHelper.spec.ts +7 -7
  217. package/src/actionbar/AttachmentsButton.tsx +22 -24
  218. package/src/actionbar/AttachmentsButtonWrapper.tsx +15 -12
  219. package/src/actionbar/ButtonWithBadge.tsx +5 -2
  220. package/src/actionbar/ChangeViewButton.tsx +13 -7
  221. package/src/actionbar/FormActionBar.tsx +73 -11
  222. package/src/actionbar/SearchBar.tsx +8 -4
  223. package/src/actionbar/TreeActionBar.tsx +99 -97
  224. package/src/common/DatePicker.tsx +18 -13
  225. package/src/context/ActionViewContext.tsx +7 -4
  226. package/src/context/ConfigContext.tsx +9 -0
  227. package/src/context/ContentRootContext.tsx +111 -76
  228. package/src/context/FormContext.tsx +1 -4
  229. package/src/helpers/errorHelper.ts +27 -0
  230. package/src/helpers/filesHelper.ts +2 -3
  231. package/src/helpers/formHelper.ts +26 -5
  232. package/src/helpers/iconMapper.ts +141 -108
  233. package/src/helpers/one2manyHelper.ts +94 -39
  234. package/src/helpers/searchHelper.ts +8 -7
  235. package/src/helpers/treeHelper.ts +17 -5
  236. package/src/hooks/useExport.ts +439 -0
  237. package/src/index.ts +6 -0
  238. package/src/locales/ca_ES.tsx +2 -0
  239. package/src/locales/en_US.tsx +2 -0
  240. package/src/locales/es_ES.tsx +2 -0
  241. package/src/stories/Binary.stories.tsx +4 -1
  242. package/src/stories/Boolean.stories.tsx +4 -1
  243. package/src/stories/Button.stories.tsx +4 -1
  244. package/src/stories/Char.stories.tsx +4 -1
  245. package/src/stories/FiberGrid.stories.tsx +4 -1
  246. package/src/stories/Float.stories.tsx +4 -1
  247. package/src/stories/FloatTime.stories.tsx +4 -1
  248. package/src/stories/Image.stories.tsx +4 -1
  249. package/src/stories/Integer.stories.tsx +4 -1
  250. package/src/stories/Label.stories.tsx +11 -9
  251. package/src/stories/Many2one.stories.tsx +4 -1
  252. package/src/stories/One2many.stories.tsx +4 -1
  253. package/src/stories/ProgressBar.stories.tsx +4 -1
  254. package/src/stories/Reference.stories.tsx +4 -1
  255. package/src/stories/Selection.stories.tsx +4 -1
  256. package/src/stories/Separator.stories.tsx +37 -1
  257. package/src/stories/Text.stories.tsx +4 -1
  258. package/src/stories/containers/Group.stories.tsx +28 -1
  259. package/src/stories/containers/NewLine.stories.tsx +4 -1
  260. package/src/stories/containers/Notebook.stories.tsx +31 -1
  261. package/src/stories/custom/Avatar.stories.tsx +27 -0
  262. package/src/stories/custom/ButtonGroup.stories.tsx +4 -1
  263. package/src/stories/custom/CodeEditor.stories.tsx +4 -1
  264. package/src/stories/custom/Indicator.stories.tsx +4 -1
  265. package/src/stories/custom/Markdown.stories.tsx +42 -0
  266. package/src/stories/custom/MultiCheckbox.stories.tsx +4 -1
  267. package/src/stories/custom/Radio.stories.tsx +4 -1
  268. package/src/stories/custom/Steps.stories.tsx +4 -1
  269. package/src/stories/custom/Switch.stories.tsx +4 -1
  270. package/src/stories/custom/Tag.stories.tsx +60 -0
  271. package/src/stories/custom/Tags.stories.tsx +4 -1
  272. package/src/stories/forms/PreferencesForm.stories.tsx +4 -1
  273. package/src/stories/mocks/models/company.ts +2 -2
  274. package/src/stories/mocks/models/crm_case.ts +7 -10
  275. package/src/stories/ui/ActionBar.stories.tsx +2 -1
  276. package/src/stories/ui/FavouriteButton.stories.tsx +2 -1
  277. package/src/stories/ui/GoToResourceModal.stories.tsx +2 -1
  278. package/src/stories/views/SearchTree.stories.tsx +3 -1
  279. package/src/stories/views/Tab.stories.tsx +3 -1
  280. package/src/stories/views/TabsAndContent.stories.tsx +3 -1
  281. package/src/stories/views/Tree.stories.jsx +20 -6
  282. package/src/stories/views/searchFilter/DateRangePicker.stories.tsx +3 -1
  283. package/src/stories/views/searchFilter/DateTimeRangePicker.stories.tsx +4 -1
  284. package/src/stories/views/searchFilter/PairFields.stories.tsx +4 -1
  285. package/src/stories/views/searchFilter/SearchFilter.stories.tsx +4 -1
  286. package/src/stories/views/searchFilter/examples/PartnersSearchFilter.stories.tsx +4 -1
  287. package/src/types/index.ts +1 -0
  288. package/src/ui/ActionErrorDialog.tsx +4 -21
  289. package/src/ui/ErrorAlert.tsx +37 -0
  290. package/src/ui/FavouriteButton.tsx +20 -9
  291. package/src/ui/GoToResourceModal.tsx +3 -3
  292. package/src/ui/TitleHeader.tsx +18 -4
  293. package/src/views/ActionView.tsx +6 -2
  294. package/src/views/RootView.tsx +7 -1
  295. package/src/views/actionViews/GraphActionView.tsx +1 -0
  296. package/src/views/actionViews/TreeActionView.tsx +10 -1
  297. package/src/views/tabs/Tab.tsx +12 -6
  298. package/src/widgets/WidgetFactory.tsx +6 -0
  299. package/src/widgets/base/Binary.tsx +8 -5
  300. package/src/widgets/base/Boolean.tsx +8 -7
  301. package/src/widgets/base/Char.tsx +14 -12
  302. package/src/widgets/base/Float.tsx +11 -5
  303. package/src/widgets/base/FloatTime.tsx +9 -5
  304. package/src/widgets/base/Integer.tsx +10 -5
  305. package/src/widgets/base/Label.tsx +12 -12
  306. package/src/widgets/base/LinkInput.tsx +11 -6
  307. package/src/widgets/base/MultiSelection.tsx +6 -2
  308. package/src/widgets/base/Reference.tsx +13 -3
  309. package/src/widgets/base/ReferenceTree.tsx +62 -0
  310. package/src/widgets/base/Selection.tsx +6 -2
  311. package/src/widgets/base/Separator.tsx +11 -3
  312. package/src/widgets/base/Text.tsx +14 -12
  313. package/src/widgets/base/many2one/Many2one.tsx +27 -33
  314. package/src/widgets/base/many2one/Many2oneSuffixModal.tsx +3 -3
  315. package/src/widgets/base/many2one/Many2oneTree.tsx +18 -0
  316. package/src/widgets/base/one2many/One2manyInput.tsx +82 -28
  317. package/src/widgets/base/one2many/One2manyTopBar.tsx +10 -1
  318. package/src/widgets/containers/Group.tsx +7 -4
  319. package/src/widgets/custom/Avatar.tsx +33 -0
  320. package/src/widgets/custom/ButtonGroup.tsx +31 -21
  321. package/src/widgets/custom/FiberGrid.tsx +2 -5
  322. package/src/widgets/custom/Indicator.tsx +16 -15
  323. package/src/widgets/custom/Markdown.tsx +22 -0
  324. package/src/widgets/custom/MultiCheckbox.tsx +1 -0
  325. package/src/widgets/custom/Tag.tsx +24 -0
  326. package/src/widgets/custom/Tags.tsx +27 -28
  327. package/src/widgets/custom/Timeline.tsx +9 -3
  328. package/src/widgets/modals/ExportModal.tsx +33 -134
  329. package/src/widgets/modals/FormModal.tsx +3 -3
  330. package/src/widgets/modals/SearchModal.tsx +29 -31
  331. package/src/widgets/modals/TranslationModal.tsx +3 -3
  332. package/src/widgets/views/Dashboard/Dashboard.tsx +15 -4
  333. package/src/widgets/views/Dashboard/DashboardTree.tsx +1 -0
  334. package/src/widgets/views/DashboardGrid/DashboardGridItem.tsx +10 -6
  335. package/src/widgets/views/Form.tsx +41 -39
  336. package/src/widgets/views/Graph/GraphChart.tsx +6 -1
  337. package/src/widgets/views/Graph/GraphDefaults.ts +113 -0
  338. package/src/widgets/views/Graph/GraphIndicator.tsx +19 -7
  339. package/src/widgets/views/SearchTree.tsx +3 -0
  340. package/src/widgets/views/Tree.tsx +118 -26
  341. package/src/widgets/views/searchFilter/SearchField.tsx +9 -23
  342. package/src/widgets/views/searchFilter/SearchFilter.tsx +17 -8
  343. package/dist/Config.d.ts +0 -6
  344. package/dist/Config.d.ts.map +0 -1
  345. package/dist/helpers/icons/antd_icons.d.ts +0 -4
  346. package/dist/helpers/icons/antd_icons.d.ts.map +0 -1
  347. package/dist/helpers/icons/tabler_icons.d.ts +0 -4
  348. package/dist/helpers/icons/tabler_icons.d.ts.map +0 -1
  349. package/dist/main.css +0 -1
  350. package/dist/ui/Fieldset.d.ts +0 -8
  351. package/dist/ui/Fieldset.d.ts.map +0 -1
  352. package/src/Config.ts +0 -4
  353. package/src/helpers/icons/antd_icons.ts +0 -1583
  354. package/src/helpers/icons/tabler_icons.ts +0 -5367
  355. package/src/ui/Fieldset.tsx +0 -31
@@ -11,6 +11,8 @@ import {
11
11
  ApiOutlined,
12
12
  } from "@ant-design/icons";
13
13
  import { ViewType } from "@/types";
14
+ import { theme } from "antd";
15
+ const { useToken } = theme;
14
16
 
15
17
  type One2manyTopBarProps = {
16
18
  title: string;
@@ -49,6 +51,7 @@ export const One2manyTopBar = (props: One2manyTopBarProps) => {
49
51
  showCreateButton,
50
52
  showToggleButton,
51
53
  } = props;
54
+ const { token } = useToken();
52
55
 
53
56
  function separator() {
54
57
  return <div className="inline-block w-3" />;
@@ -56,7 +59,13 @@ export const One2manyTopBar = (props: One2manyTopBarProps) => {
56
59
 
57
60
  function title() {
58
61
  return (
59
- <div className="flex flex-grow h-8 text-gray-200 bg-gray-700">
62
+ <div
63
+ className="flex flex-grow h-8 text-white"
64
+ style={{
65
+ borderRadius: token.borderRadius,
66
+ backgroundColor: token.colorPrimaryActive,
67
+ }}
68
+ >
60
69
  <div className="flex flex-col items-center justify-center h-full">
61
70
  <span className="pl-2 font-bold">{titleString}</span>
62
71
  </div>
@@ -1,7 +1,9 @@
1
1
  import React from "react";
2
2
  import { Group as GroupOoui } from "@gisce/ooui";
3
3
  import Container from "./Container";
4
- import Fieldset from "@/ui/Fieldset";
4
+ import { FieldSet } from "@gisce/react-formiga-components";
5
+ import { Space } from "antd";
6
+ import iconMapper from "@/helpers/iconMapper";
5
7
 
6
8
  type Props = {
7
9
  ooui: GroupOoui;
@@ -11,16 +13,17 @@ type Props = {
11
13
 
12
14
  function Group(props: Props): React.ReactElement {
13
15
  const { ooui, showLabel = true, responsiveBehaviour } = props;
16
+ const icon: React.ElementType | undefined = iconMapper(ooui.icon || "");
14
17
 
15
18
  return (
16
19
  <>
17
- {ooui.label && showLabel ? (
18
- <Fieldset label={ooui.label}>
20
+ {(ooui.label || icon) && showLabel ? (
21
+ <FieldSet label={ooui.label} icon={icon}>
19
22
  <Container
20
23
  container={ooui!.container}
21
24
  responsiveBehaviour={responsiveBehaviour}
22
25
  />
23
- </Fieldset>
26
+ </FieldSet>
24
27
  ) : (
25
28
  <Container
26
29
  container={ooui!.container}
@@ -0,0 +1,33 @@
1
+ import React from "react";
2
+ import {WidgetProps} from "@/types";
3
+ import { Avatar as AntdAvatar, Tooltip } from "antd";
4
+ import { Avatar as AvatarOoui} from "@gisce/ooui";
5
+ import { colorFromString } from "@/helpers/formHelper";
6
+
7
+ type AvatarProps = WidgetProps & {
8
+ ooui: AvatarOoui
9
+ value?: any;
10
+ };
11
+
12
+ const Avatar = (props: AvatarProps): React.ReactElement | null => {
13
+ console.log("Avatar Props", props);
14
+ const {ooui, value} = props;
15
+ if (!value) {
16
+ return null;
17
+ }
18
+ let formattedValue = value;
19
+ if (ooui.selectionValues.size) {
20
+ formattedValue = ooui.selectionValues.get(value);
21
+ } else if (Array.isArray(value)) {
22
+ formattedValue = value[1];
23
+ }
24
+ const text = formattedValue.toString().split(" ").filter((word:string) => word.length > 1).slice(0, 3).map((word:string) => word[0].toUpperCase()).join("");
25
+ const backgroundColor = colorFromString(formattedValue);
26
+ return (
27
+ <Tooltip title={formattedValue}>
28
+ <AntdAvatar alt={formattedValue} style={{backgroundColor}}>{text}</AntdAvatar>
29
+ </Tooltip>
30
+ );
31
+ }
32
+
33
+ export default Avatar;
@@ -2,6 +2,7 @@ import React, { useContext, useState } from "react";
2
2
  import Field from "@/common/Field";
3
3
  import { DownOutlined } from "@ant-design/icons";
4
4
  import { Dropdown, Menu } from "antd";
5
+ import { Button } from "@/widgets/base/Button";
5
6
  import {
6
7
  ButtonGroup as ButtonGroupOoui,
7
8
  Button as ButtonOoui,
@@ -20,6 +21,8 @@ type ButtonGroupProps = {
20
21
 
21
22
  type ItemsProps = {
22
23
  ooui: ButtonOoui[];
24
+ executeButtonAction: any,
25
+ lang: string
23
26
  };
24
27
 
25
28
  export const ButtonGroup = (props: ButtonGroupProps) => {
@@ -73,27 +76,37 @@ export const ButtonGroup = (props: ButtonGroupProps) => {
73
76
 
74
77
  onClick_confirm();
75
78
  }
76
-
77
- return (
78
- <Field ooui={new FieldOoui({ ...{ ooui } })}>
79
- <Dropdown.Button
80
- disabled={!activated || readOnly}
81
- onClick={onClick}
82
- icon={<DownOutlined />}
83
- type={primary ? "primary" : undefined}
84
- //danger={danger ? true : undefined} This works but typescript
85
- // doesn't accept
86
- overlay={<Items ooui={secondaryButtons} />}
87
- >
88
- {getButtonIcon()}
89
- {caption}
90
- </Dropdown.Button>
91
- </Field>
92
- );
79
+ if (ooui.buttons.length === 0) {
80
+ return null;
81
+ } else if (ooui.buttons.length > 1) {
82
+ return (
83
+ <Field ooui={new FieldOoui({ ...{ ooui } })}>
84
+ <Dropdown.Button
85
+ disabled={!activated || readOnly}
86
+ onClick={onClick}
87
+ icon={<DownOutlined />}
88
+ type={primary ? "primary" : undefined}
89
+ //danger={danger ? true : undefined} This works but typescript
90
+ // doesn't accept
91
+ overlay={<Items ooui={secondaryButtons} executeButtonAction={executeButtonAction} lang={lang} /> }
92
+ >
93
+ {getButtonIcon()}
94
+ {caption}
95
+ </Dropdown.Button>
96
+ </Field>
97
+ );
98
+ } else if (defaultButton) {
99
+ return (
100
+ <Button ooui={defaultButton} />
101
+ )
102
+ }
93
103
  };
94
104
 
95
105
  const Items = (props: ItemsProps) => {
96
- const { ooui } = props;
106
+ const { ooui, executeButtonAction, lang } = props;
107
+ if (!ooui) {
108
+ return null;
109
+ }
97
110
  const items = ooui.map((button) => {
98
111
  const {
99
112
  id,
@@ -106,10 +119,7 @@ const Items = (props: ItemsProps) => {
106
119
  readOnly,
107
120
  danger,
108
121
  } = button;
109
- const formContext = useContext(FormContext) as FormContextType;
110
- const { executeButtonAction } = formContext || {};
111
122
  const [isRunning, setIsRunning] = useState<boolean>(false);
112
- const { lang } = useContext(LocaleContext) as LocaleContextType;
113
123
 
114
124
  async function onClick_confirm() {
115
125
  setIsRunning(true);
@@ -2,14 +2,11 @@ import React from "react";
2
2
  import Field from "@/common/Field";
3
3
  import { Char as CharOoui } from "@gisce/ooui";
4
4
  import { WidgetProps } from "@/types";
5
- import Config from "@/Config";
6
- import { GridUi } from "fiber-diagram";
5
+ import { GridUi } from "@gisce/fiber-diagram";
7
6
 
8
7
  export const FiberGrid = (props: WidgetProps) => {
9
8
  const { ooui } = props;
10
- const { id, readOnly, required } = ooui as CharOoui;
11
- // const requiredClass =
12
- // required && !readOnly ? Config.requiredClass : undefined;
9
+ const { required } = ooui as CharOoui;
13
10
 
14
11
  return (
15
12
  <Field required={required} {...props}>
@@ -1,14 +1,15 @@
1
1
  import React from "react";
2
- import { Tooltip } from "antd";
2
+ import { Tooltip, theme } from "antd";
3
3
  import { Statistic, Card } from "antd";
4
4
  import { Indicator as IndicatorOoui } from "@gisce/ooui";
5
5
  import { WidgetProps } from "@/types";
6
6
  import Field from "@/common/Field";
7
- import {QuestionCircleOutlined} from "@ant-design/icons";
7
+ import { QuestionCircleOutlined } from "@ant-design/icons";
8
8
  import iconMapper from "@/helpers/iconMapper";
9
+ const { useToken } = theme;
9
10
 
10
11
  type IndicatorProps = WidgetProps & {
11
- ooui: IndicatorOoui
12
+ ooui: IndicatorOoui;
12
13
  value?: number;
13
14
  };
14
15
 
@@ -25,18 +26,22 @@ export const Indicator = (props: IndicatorProps) => {
25
26
  type IndicatorInputProps = {
26
27
  ooui: IndicatorOoui;
27
28
  value?: any;
28
- }
29
+ };
29
30
 
30
31
  const IndicatorInput = (props: IndicatorInputProps) => {
32
+ const { token } = useToken();
31
33
  const { ooui, value } = props;
32
34
  const title = (
33
35
  <>
34
36
  <span>{ooui.label} </span>
35
- {ooui.tooltip &&
37
+ {ooui.tooltip && (
36
38
  <Tooltip title={ooui.tooltip}>
37
- <QuestionCircleOutlined className="pr-1 text-xs text-blue-400"/>
39
+ <QuestionCircleOutlined
40
+ className="pr-1 text-xs"
41
+ style={{ color: token.colorPrimaryBg }}
42
+ />
38
43
  </Tooltip>
39
- }
44
+ )}
40
45
  </>
41
46
  );
42
47
  const Icon: React.ElementType = iconMapper(ooui.icon) as any;
@@ -49,18 +54,14 @@ const IndicatorInput = (props: IndicatorInputProps) => {
49
54
  const field = (
50
55
  <Statistic
51
56
  title={title}
52
- prefix={Icon && <Icon/>}
57
+ prefix={Icon && <Icon />}
53
58
  suffix={ooui.suffix}
54
59
  value={formattedValue}
55
60
  />
56
- )
61
+ );
57
62
  if (ooui.card) {
58
- return (
59
- <Card>
60
- {field}
61
- </Card>
62
- );
63
+ return <Card>{field}</Card>;
63
64
  } else {
64
65
  return field;
65
66
  }
66
- }
67
+ };
@@ -0,0 +1,22 @@
1
+ import Field from "@/common/Field";
2
+ import ReactMarkdown from "react-markdown";
3
+ import React from "react";
4
+ import {WidgetProps} from "@/types";
5
+
6
+ export const Markdown = (props: WidgetProps) => {
7
+ return (
8
+ <Field {...props}>
9
+ <MarkdownInput {...props} />
10
+ </Field>
11
+ );
12
+ };
13
+
14
+ export const MarkdownInput = (props: any) => {
15
+ const {value, ooui} = props;
16
+ return (
17
+ <div style={{height: ooui.height ? ooui.height + 'px' : '100%', overflow: 'auto'}}>
18
+ <ReactMarkdown children={value} className="ant-typography"/>
19
+ </div>
20
+
21
+ )
22
+ }
@@ -62,6 +62,7 @@ export const MultiCheckboxInput = (props: MultiCheckboxInputProps) => {
62
62
  fields: formContext?.getFields(),
63
63
  values: formContext.getPlainValues(),
64
64
  }),
65
+ fields: formContext?.getFields(),
65
66
  context: formContext.getContext(),
66
67
  });
67
68
  params = [...params, ...evaluatedDomain];
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+ import Field from "@/common/Field";
3
+ import { WidgetProps } from "@/types";
4
+ import { Tag as AntdTag } from 'antd';
5
+ import { colorFromString } from "@/helpers/formHelper";
6
+
7
+ export const Tag = (props: WidgetProps) => {
8
+ return (
9
+ <Field {...props}>
10
+ <TagInput {...props}/>
11
+ </Field>
12
+ );
13
+ };
14
+
15
+ export const TagInput = (props: any) => {
16
+ const {ooui, value} = props;
17
+ if (!value) {
18
+ return null
19
+ }
20
+ const color = ooui.colors === "auto" ? colorFromString(value) : ooui.colors[value]
21
+ return (
22
+ <AntdTag color={color}>{ooui.selectionValues.get(value)}</AntdTag>
23
+ );
24
+ }
@@ -23,7 +23,7 @@ export const Tags = (props: TagsProps) => {
23
23
 
24
24
  return (
25
25
  <Field type={"array"} {...props}>
26
- <TagsInput ooui={ooui} />
26
+ <TagsInput ooui={ooui} />
27
27
  </Field>
28
28
  );
29
29
  };
@@ -31,16 +31,15 @@ export const Tags = (props: TagsProps) => {
31
31
  export const TagsInput = (props: TagsInputProps) => {
32
32
  const { value, ooui, onChange } = props;
33
33
  const { items = [] } = value || {};
34
- const itemsToShow = items.filter(
35
- (item) => item.operation !== "pendingRemove"
36
- ).map((item) => item.id) as number[];
34
+ const itemsToShow = items
35
+ .filter((item) => item.operation !== "pendingRemove")
36
+ .map((item) => item.id) as number[];
37
37
 
38
38
  const [options, setOptions] = useState<any[]>([]);
39
39
  const [error, setError] = useState<string>();
40
40
  const [isLoadingOptions, setIsLoadingOptions] = useState<boolean>(false);
41
41
  const { relation, context, readOnly, field } = ooui;
42
42
 
43
-
44
43
  const formContext = useContext(FormContext) as FormContextType;
45
44
  const { getContext } = formContext || {};
46
45
 
@@ -62,16 +61,16 @@ export const TagsInput = (props: TagsInputProps) => {
62
61
  params = [["id", "in", itemsToShow]];
63
62
  }
64
63
  if (ooui.domain) {
65
- const evaluatedDomain = await ConnectionProvider.getHandler().evalDomain(
66
- {
64
+ const evaluatedDomain =
65
+ await ConnectionProvider.getHandler().evalDomain({
67
66
  domain: ooui.domain,
68
67
  values: transformPlainMany2Ones({
69
68
  fields: formContext?.getFields(),
70
69
  values: formContext.getPlainValues(),
71
70
  }),
72
- context: formContext.getContext(),
73
- }
74
- );
71
+ fields: formContext?.getFields(),
72
+ context: formContext.getContext(),
73
+ });
75
74
  params = [...params, ...evaluatedDomain];
76
75
  }
77
76
 
@@ -81,18 +80,17 @@ export const TagsInput = (props: TagsInputProps) => {
81
80
  fields: [field],
82
81
  context: { ...getContext?.(), ...context },
83
82
  });
84
- const options = optionsRead.map((item:any) => {
83
+ const options = optionsRead.map((item: any) => {
85
84
  const value = item[field];
86
85
  let formattedValue = value;
87
86
  if (Array.isArray(value)) {
88
87
  formattedValue = value[1];
89
88
  }
90
- return {label: formattedValue, value: item.id}
89
+ return { label: formattedValue, value: item.id };
91
90
  });
92
91
  setOptions(options);
93
-
94
92
  } catch (err) {
95
- setError(err as any)
93
+ setError(err as any);
96
94
  } finally {
97
95
  setIsLoadingOptions(false);
98
96
  }
@@ -104,19 +102,21 @@ export const TagsInput = (props: TagsInputProps) => {
104
102
  if (item.operation == "pendingRemove") {
105
103
  return {
106
104
  ...item,
107
- operation: "pendingLink"
108
- }
105
+ operation: "pendingLink",
106
+ };
109
107
  } else {
110
- return item
108
+ return item;
111
109
  }
112
110
  } else {
113
- return {id: item.id, operation: 'pendingRemove'}
111
+ return { id: item.id, operation: "pendingRemove" };
114
112
  }
115
- })
116
- const currentIds = newItems.map(item => item.id)
117
- ids.filter(id => !currentIds.includes(id)).map((id) => {
118
- newItems.push({id, operation: 'pendingLink'});
119
113
  });
114
+ const currentIds = newItems.map((item) => item.id);
115
+ ids
116
+ .filter((id) => !currentIds.includes(id))
117
+ .map((id) => {
118
+ newItems.push({ id, operation: "pendingLink" });
119
+ });
120
120
  triggerChange(newItems);
121
121
  };
122
122
 
@@ -130,10 +130,11 @@ export const TagsInput = (props: TagsInputProps) => {
130
130
  <AntTag
131
131
  color={colorFromString(label)}
132
132
  onMouseDown={onPreventMouseDown}
133
- style={{margin: '5px'}}
133
+ style={{ margin: "5px" }}
134
134
  closable={closable}
135
- onClose={onClose}>
136
- {label}
135
+ onClose={onClose}
136
+ >
137
+ {label}
137
138
  </AntTag>
138
139
  );
139
140
  };
@@ -154,10 +155,8 @@ export const TagsInput = (props: TagsInputProps) => {
154
155
  options={options}
155
156
  onChange={onChangeSelected}
156
157
  loading={isLoadingOptions}
157
- >
158
- </Select>
158
+ ></Select>
159
159
  </div>
160
160
  </>
161
161
  );
162
-
163
162
  };
@@ -105,12 +105,18 @@ export const TimelineInput = (props: TimelineInputProps) => {
105
105
  setError(undefined);
106
106
 
107
107
  try {
108
- const itemsWithValues = await readObjectValues({
109
- treeFields: views.get("tree").fields,
110
- formFields: views.get("form").fields,
108
+ const [itemsWithValues] = await readObjectValues({
109
+ treeView: {
110
+ fields: views.get("tree").fields,
111
+ arch: views.get("tree").arch
112
+ },
113
+ formView: {
114
+ fields: views.get("form").fields,
115
+ },
111
116
  model: relation,
112
117
  items,
113
118
  context: { ...getContext?.(), ...context },
119
+ currentView: "form",
114
120
  });
115
121
 
116
122
  triggerChange(itemsWithValues);
@@ -3,22 +3,20 @@ import {
3
3
  ExportModal as ExportModalFmg,
4
4
  Locale,
5
5
  } from "@gisce/react-formiga-components";
6
- import { ExportOptions } from "@gisce/react-formiga-components/dist/components/other/ExportModal/ExportModal.types";
7
- import React, { useCallback, useRef } from "react";
8
- import showInfo from "@/ui/InfoDialog";
9
- import { tForLang } from "@/context/LocaleContext";
10
- import { getMimeType, openBase64InNewTab } from "@/helpers/filesHelper";
6
+ import React from "react";
7
+ import { useExport } from "@/hooks/useExport";
11
8
 
12
9
  export type ExportModalProps = {
13
10
  visible: boolean;
14
11
  locale: string;
15
12
  onClose: () => void;
16
- selectedRegistersToExport?: number;
13
+ selectedRegistersToExport?: any[];
17
14
  totalRegisters: number;
18
15
  model: string;
19
16
  domain: any[];
20
17
  limit?: number;
21
18
  context?: any;
19
+ visibleRegisters: number;
22
20
  };
23
21
 
24
22
  export const ExportModal = (props: ExportModalProps) => {
@@ -32,145 +30,46 @@ export const ExportModal = (props: ExportModalProps) => {
32
30
  totalRegisters,
33
31
  domain,
34
32
  limit,
33
+ visibleRegisters,
35
34
  } = props;
36
- const fields = useRef<any>({});
37
35
 
38
- const onSucceed = useCallback(
39
- async (options: ExportOptions) => {
40
- if (options.selectedKeys.length === 0) {
41
- showInfo(tForLang("selectAtLeastOneField", locale));
42
- return;
43
- }
44
-
45
- const { datas } = await ConnectionProvider.getHandler().exportData({
46
- model,
47
- fields: options.selectedKeys,
48
- domain: options.registersAmount === "all" ? [] : domain,
49
- limit: options.registersAmount === "all" ? undefined : limit,
50
- context,
51
- format: options.exportType,
52
- });
53
-
54
- onClose();
55
-
56
- await new Promise((resolve) => setTimeout(resolve, 200));
57
-
58
- const fileType: any = await getMimeType(datas);
59
- openBase64InNewTab(datas, fileType.mime);
60
- },
61
- [locale, model, domain, limit, context, onClose]
62
- );
63
-
64
- const onGetFields = useCallback(async () => {
65
- const viewData = await ConnectionProvider.getHandler().getFields({
66
- model,
67
- context,
68
- fields: [],
69
- });
70
- fields.current["/"] = viewData;
71
- return convertToExportField({ fields: viewData });
72
- }, [model, context, fields]);
73
-
74
- const onGetFieldChilds = useCallback(
75
- async ({ key, title }: any) => {
76
- let fieldDefinition;
77
-
78
- const sanitizedKey =
79
- key.split("/")[key.split("/").length - 1] === "id"
80
- ? key.split("/").slice(0, -1).join("/")
81
- : key;
82
-
83
- if (sanitizedKey.indexOf("/") === -1) {
84
- fieldDefinition = fields.current["/"];
85
- } else {
86
- fieldDefinition = fields.current[getParentKey(sanitizedKey)];
87
- }
88
-
89
- const optsForField = fieldDefinition[getChildKey(sanitizedKey)];
90
- const relation = optsForField.relation;
91
- const viewData = await ConnectionProvider.getHandler().getFields({
92
- model: relation,
93
- context,
94
- fields: [],
95
- });
96
-
97
- fields.current[sanitizedKey] = viewData;
98
-
99
- return convertToExportField({
100
- fields: viewData,
101
- parentTitle: title,
102
- parentKey: sanitizedKey,
103
- });
104
- },
105
- [fields, model, context]
106
- );
36
+ const {
37
+ onExport,
38
+ onGetFieldChilds,
39
+ onGetFields,
40
+ onGetPredefinedExports,
41
+ onSavePredefinedExport,
42
+ onRemovePredefinedExport,
43
+ } = useExport({
44
+ model,
45
+ context,
46
+ domain,
47
+ limit,
48
+ selectedRegistersToExport,
49
+ onClose,
50
+ locale,
51
+ });
107
52
 
108
53
  return (
109
54
  <ExportModalFmg
110
55
  visible={visible}
111
56
  locale={locale as Locale}
112
- onSucceed={onSucceed}
57
+ onSucceed={onExport}
113
58
  onCancel={onClose}
114
- selectedRegistersToExport={selectedRegistersToExport}
59
+ selectedRegistersToExport={
60
+ selectedRegistersToExport &&
61
+ selectedRegistersToExport.length &&
62
+ selectedRegistersToExport.length > 0
63
+ ? selectedRegistersToExport.length
64
+ : undefined
65
+ }
115
66
  totalRegisters={totalRegisters}
116
67
  onGetFieldChilds={onGetFieldChilds}
117
68
  onGetFields={onGetFields}
69
+ visibleRegisters={visibleRegisters}
70
+ onGetPredefinedExports={onGetPredefinedExports}
71
+ onSavePredefinedExport={onSavePredefinedExport}
72
+ onRemovePredefinedExport={onRemovePredefinedExport}
118
73
  />
119
74
  );
120
75
  };
121
-
122
- const convertToExportField = ({
123
- fields,
124
- parentKey,
125
- parentTitle,
126
- }: {
127
- fields: any;
128
- parentTitle?: string;
129
- parentKey?: string;
130
- }) => {
131
- const exportFields = [];
132
-
133
- for (const key of Object.keys(fields)) {
134
- const valuesForField = fields[key];
135
-
136
- if (valuesForField.relation && valuesForField.is_function === true) {
137
- continue;
138
- }
139
-
140
- const relationField =
141
- valuesForField.type === "many2one" ||
142
- valuesForField.type === "one2many" ||
143
- valuesForField.type === "many2many";
144
-
145
- let newKey = `${parentKey ? parentKey + "/" : ""}${key}`;
146
-
147
- if (relationField) {
148
- newKey += "/id";
149
- }
150
-
151
- exportFields.push({
152
- key: newKey,
153
- title: `${parentTitle ? parentTitle + "/" : ""}${valuesForField.string}`,
154
- tooltip: valuesForField.help,
155
- required: valuesForField.required,
156
- isLeaf: !relationField,
157
- });
158
- }
159
- return exportFields;
160
- };
161
-
162
- const getParentKey = (key: string) => {
163
- if (key.indexOf("/") === -1) {
164
- return key;
165
- }
166
- const items = key.split("/");
167
- return items.slice(0, -1).join("/");
168
- };
169
-
170
- const getChildKey = (key: string) => {
171
- if (key.indexOf("/") === -1) {
172
- return key;
173
- }
174
- const items = key.split("/");
175
- return items[items.length - 1];
176
- };