@leav/ui 1.6.0 → 1.7.0-13483399

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 (301) hide show
  1. package/README.md +13 -12
  2. package/dist/__mocks__/common/library.d.ts +1 -0
  3. package/dist/__mocks__/react-i18next.d.ts +1 -1
  4. package/dist/_gqlTypes/index.d.ts +1046 -687
  5. package/dist/_gqlTypes/index.js +188 -43
  6. package/dist/_gqlTypes/index.js.map +1 -1
  7. package/dist/_queries/attributes/attributeDetailsFragment.js +5 -0
  8. package/dist/_queries/attributes/attributeDetailsFragment.js.map +1 -1
  9. package/dist/_queries/libraries/libraryDetailsFragment.js +1 -0
  10. package/dist/_queries/libraries/libraryDetailsFragment.js.map +1 -1
  11. package/dist/_queries/trees/treeNodeChildrenQuery.js +2 -0
  12. package/dist/_queries/trees/treeNodeChildrenQuery.js.map +1 -1
  13. package/dist/_queries/views/viewDetailsFragment.js +1 -0
  14. package/dist/_queries/views/viewDetailsFragment.js.map +1 -1
  15. package/dist/components/AttributePicker/AttributesList/AttributesList.js +3 -7
  16. package/dist/components/AttributePicker/AttributesList/AttributesList.js.map +1 -1
  17. package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js +20 -12
  18. package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js.map +1 -1
  19. package/dist/components/AttributesSelectionList/reducer/__mocks__/attributesSelectionListStateContext.d.ts +1 -1
  20. package/dist/components/AttributesSelectionList/sharedComponents.d.ts +159 -153
  21. package/dist/components/EditLibraryModal/EditLibrary/EditLibraryAttributes/AttributesList/AttributesList.js +3 -7
  22. package/dist/components/EditLibraryModal/EditLibrary/EditLibraryAttributes/AttributesList/AttributesList.js.map +1 -1
  23. package/dist/components/Explorer/DataView.d.ts +2 -0
  24. package/dist/components/Explorer/DataView.js +6 -3
  25. package/dist/components/Explorer/DataView.js.map +1 -1
  26. package/dist/components/Explorer/Explorer.d.ts +2 -0
  27. package/dist/components/Explorer/Explorer.js +7 -5
  28. package/dist/components/Explorer/Explorer.js.map +1 -1
  29. package/dist/components/Explorer/ExplorerFiltersAndSorts.js +1 -1
  30. package/dist/components/Explorer/ExplorerFiltersAndSorts.js.map +1 -1
  31. package/dist/components/Explorer/TableCell.js +15 -23
  32. package/dist/components/Explorer/TableCell.js.map +1 -1
  33. package/dist/components/Explorer/TableNameCell.js +3 -2
  34. package/dist/components/Explorer/TableNameCell.js.map +1 -1
  35. package/dist/components/Explorer/_queries/useExplorerData.d.ts +7 -7
  36. package/dist/components/Explorer/_queries/useExplorerData.js +19 -7
  37. package/dist/components/Explorer/_queries/useExplorerData.js.map +1 -1
  38. package/dist/components/Explorer/actions-item/useEditStatusItemAction.js +3 -2
  39. package/dist/components/Explorer/actions-item/useEditStatusItemAction.js.map +1 -1
  40. package/dist/components/Explorer/actions-item/useReplaceItemAction.d.ts +2 -1
  41. package/dist/components/Explorer/actions-item/useReplaceItemAction.js +5 -4
  42. package/dist/components/Explorer/actions-item/useReplaceItemAction.js.map +1 -1
  43. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.d.ts +2 -4
  44. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js +18 -16
  45. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js.map +1 -1
  46. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js +2 -2
  47. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js.map +1 -1
  48. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js +9 -1
  49. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js.map +1 -1
  50. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.d.ts +10 -3
  51. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js +16 -6
  52. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js.map +1 -1
  53. package/dist/components/Explorer/actions-mass/export/ExportProfileSelectionModal.d.ts +10 -0
  54. package/dist/components/Explorer/actions-mass/export/ExportProfileSelectionModal.js +46 -0
  55. package/dist/components/Explorer/actions-mass/export/ExportProfileSelectionModal.js.map +1 -0
  56. package/dist/components/Explorer/actions-mass/export/content/NoProfiles.d.ts +1 -0
  57. package/dist/components/Explorer/actions-mass/export/content/NoProfiles.js +17 -0
  58. package/dist/components/Explorer/actions-mass/export/content/NoProfiles.js.map +1 -0
  59. package/dist/components/Explorer/actions-mass/export/content/ProfilesSelection.d.ts +8 -0
  60. package/dist/components/Explorer/actions-mass/export/content/ProfilesSelection.js +49 -0
  61. package/dist/components/Explorer/actions-mass/export/content/ProfilesSelection.js.map +1 -0
  62. package/dist/components/Explorer/actions-mass/export/useGetLibraryExportProfiles.d.ts +27 -0
  63. package/dist/components/Explorer/actions-mass/export/useGetLibraryExportProfiles.js +48 -0
  64. package/dist/components/Explorer/actions-mass/export/useGetLibraryExportProfiles.js.map +1 -0
  65. package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js +3 -2
  66. package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js.map +1 -1
  67. package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js +3 -2
  68. package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js.map +1 -1
  69. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js +3 -2
  70. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js.map +1 -1
  71. package/dist/components/Explorer/actions-mass/useExportMassAction.d.ts +7 -4
  72. package/dist/components/Explorer/actions-mass/useExportMassAction.js +80 -73
  73. package/dist/components/Explorer/actions-mass/useExportMassAction.js.map +1 -1
  74. package/dist/components/Explorer/actions-mass/useMassActions.js +3 -2
  75. package/dist/components/Explorer/actions-mass/useMassActions.js.map +1 -1
  76. package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.js +3 -2
  77. package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.js.map +1 -1
  78. package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.d.ts +2 -1
  79. package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.js +5 -4
  80. package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.js.map +1 -1
  81. package/dist/components/Explorer/link-item/LinkModal.d.ts +1 -0
  82. package/dist/components/Explorer/link-item/LinkModal.js +2 -2
  83. package/dist/components/Explorer/link-item/LinkModal.js.map +1 -1
  84. package/dist/components/Explorer/list-saved-views/SavedViews.js +4 -3
  85. package/dist/components/Explorer/list-saved-views/SavedViews.js.map +1 -1
  86. package/dist/components/Explorer/manage-view-settings/_shared/ColumnItem.js +5 -8
  87. package/dist/components/Explorer/manage-view-settings/_shared/ColumnItem.js.map +1 -1
  88. package/dist/components/Explorer/manage-view-settings/configure-display/attributes/SelectVisibleAttributes.js +3 -2
  89. package/dist/components/Explorer/manage-view-settings/configure-display/attributes/SelectVisibleAttributes.js.map +1 -1
  90. package/dist/components/Explorer/manage-view-settings/configure-display/view-type/SelectViewType.js +2 -2
  91. package/dist/components/Explorer/manage-view-settings/configure-display/view-type/SelectViewType.js.map +1 -1
  92. package/dist/components/Explorer/manage-view-settings/filter-items/FilterItems.js +7 -6
  93. package/dist/components/Explorer/manage-view-settings/filter-items/FilterItems.js.map +1 -1
  94. package/dist/components/Explorer/manage-view-settings/filter-items/FilterListItem.js +3 -2
  95. package/dist/components/Explorer/manage-view-settings/filter-items/FilterListItem.js.map +1 -1
  96. package/dist/components/Explorer/manage-view-settings/open-view-settings/useOpenViewSettings.js +5 -4
  97. package/dist/components/Explorer/manage-view-settings/open-view-settings/useOpenViewSettings.js.map +1 -1
  98. package/dist/components/Explorer/manage-view-settings/router-menu/SettingItem.js +3 -2
  99. package/dist/components/Explorer/manage-view-settings/router-menu/SettingItem.js.map +1 -1
  100. package/dist/components/Explorer/manage-view-settings/router-menu/SettingsPanel.js +3 -2
  101. package/dist/components/Explorer/manage-view-settings/router-menu/SettingsPanel.js.map +1 -1
  102. package/dist/components/Explorer/manage-view-settings/save-view/LabelViewFormModal.js +3 -2
  103. package/dist/components/Explorer/manage-view-settings/save-view/LabelViewFormModal.js.map +1 -1
  104. package/dist/components/Explorer/manage-view-settings/save-view/prepareViewForRequest.js +3 -0
  105. package/dist/components/Explorer/manage-view-settings/save-view/prepareViewForRequest.js.map +1 -1
  106. package/dist/components/Explorer/manage-view-settings/save-view/useCreateNewView.js +3 -2
  107. package/dist/components/Explorer/manage-view-settings/save-view/useCreateNewView.js.map +1 -1
  108. package/dist/components/Explorer/manage-view-settings/save-view/useDeleteView.js +4 -3
  109. package/dist/components/Explorer/manage-view-settings/save-view/useDeleteView.js.map +1 -1
  110. package/dist/components/Explorer/manage-view-settings/save-view/useEditLabelView.js +3 -2
  111. package/dist/components/Explorer/manage-view-settings/save-view/useEditLabelView.js.map +1 -1
  112. package/dist/components/Explorer/manage-view-settings/save-view/useResetView.js +3 -2
  113. package/dist/components/Explorer/manage-view-settings/save-view/useResetView.js.map +1 -1
  114. package/dist/components/Explorer/manage-view-settings/save-view/useShareView.js +3 -2
  115. package/dist/components/Explorer/manage-view-settings/save-view/useShareView.js.map +1 -1
  116. package/dist/components/Explorer/manage-view-settings/save-view/useUpdateView.js +3 -2
  117. package/dist/components/Explorer/manage-view-settings/save-view/useUpdateView.js.map +1 -1
  118. package/dist/components/Explorer/manage-view-settings/sort-items/SortItems.js +7 -6
  119. package/dist/components/Explorer/manage-view-settings/sort-items/SortItems.js.map +1 -1
  120. package/dist/components/Explorer/manage-view-settings/sort-items/SortListItem.js +3 -2
  121. package/dist/components/Explorer/manage-view-settings/sort-items/SortListItem.js.map +1 -1
  122. package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.js.map +1 -1
  123. package/dist/components/Explorer/useSearchInput.js +6 -2
  124. package/dist/components/Explorer/useSearchInput.js.map +1 -1
  125. package/dist/components/Filters/FiltersProvider.d.ts +2 -2
  126. package/dist/components/Filters/FiltersProvider.js.map +1 -1
  127. package/dist/components/Filters/_types.d.ts +3 -0
  128. package/dist/components/Filters/_types.js.map +1 -1
  129. package/dist/components/Filters/context/filtersReducer.js +7 -4
  130. package/dist/components/Filters/context/filtersReducer.js.map +1 -1
  131. package/dist/components/Filters/filter-items/CommonFilterItem.d.ts +1 -0
  132. package/dist/components/Filters/filter-items/CommonFilterItem.js +28 -8
  133. package/dist/components/Filters/filter-items/CommonFilterItem.js.map +1 -1
  134. package/dist/components/Filters/filter-items/EmptyValueCheckbox.d.ts +8 -0
  135. package/dist/components/Filters/filter-items/EmptyValueCheckbox.js +16 -0
  136. package/dist/components/Filters/filter-items/EmptyValueCheckbox.js.map +1 -0
  137. package/dist/components/Filters/filter-items/filter-type/BooleanAttributeDropdown.js +23 -9
  138. package/dist/components/Filters/filter-items/filter-type/BooleanAttributeDropdown.js.map +1 -1
  139. package/dist/components/Filters/filter-items/filter-type/ColorAttributeDropDown.js +9 -8
  140. package/dist/components/Filters/filter-items/filter-type/ColorAttributeDropDown.js.map +1 -1
  141. package/dist/components/Filters/filter-items/filter-type/FilterDropDown.js +4 -3
  142. package/dist/components/Filters/filter-items/filter-type/FilterDropDown.js.map +1 -1
  143. package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js +1 -1
  144. package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js.map +1 -1
  145. package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.d.ts +0 -1
  146. package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.js +17 -23
  147. package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.js.map +1 -1
  148. package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js +10 -12
  149. package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js.map +1 -1
  150. package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js +3 -13
  151. package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js.map +1 -1
  152. package/dist/components/Filters/index.d.ts +1 -0
  153. package/dist/components/Filters/index.js +1 -0
  154. package/dist/components/Filters/index.js.map +1 -1
  155. package/dist/components/Filters/prepareFiltersForRequest.js +36 -3
  156. package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
  157. package/dist/components/Filters/useFilters.d.ts +5 -0
  158. package/dist/components/Filters/useTransformFilters.js +4 -0
  159. package/dist/components/Filters/useTransformFilters.js.map +1 -1
  160. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.d.ts +1 -3
  161. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js +6 -2
  162. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js.map +1 -1
  163. package/dist/components/LibraryItemsList/FiltersPanel/FiltersOptions.js +1 -8
  164. package/dist/components/LibraryItemsList/FiltersPanel/FiltersOptions.js.map +1 -1
  165. package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js +15 -17
  166. package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js.map +1 -1
  167. package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js +0 -6
  168. package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js.map +1 -1
  169. package/dist/components/LibraryItemsList/MenuView/MenuView.js +4 -4
  170. package/dist/components/LibraryItemsList/MenuView/MenuView.js.map +1 -1
  171. package/dist/components/LibraryItemsList/ViewPanel/View/View.d.ts +1 -3
  172. package/dist/components/LibraryItemsList/ViewPanel/View/View.js +9 -4
  173. package/dist/components/LibraryItemsList/ViewPanel/View/View.js.map +1 -1
  174. package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js +36 -14
  175. package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js.map +1 -1
  176. package/dist/components/Notifications/hooks/useNotificationSubscription.js +3 -2
  177. package/dist/components/Notifications/hooks/useNotificationSubscription.js.map +1 -1
  178. package/dist/components/RecordEdition/EditRecord/EditRecord.d.ts +1 -0
  179. package/dist/components/RecordEdition/EditRecord/EditRecord.js +3 -3
  180. package/dist/components/RecordEdition/EditRecord/EditRecord.js.map +1 -1
  181. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js +2 -0
  182. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
  183. package/dist/components/RecordEdition/EditRecordContent/hooks/__mocks__/useDeleteValueMutation.d.ts +1 -1
  184. package/dist/components/RecordEdition/EditRecordContent/hooks/__mocks__/useSaveValueMutation.d.ts +1 -1
  185. package/dist/components/RecordEdition/EditRecordContent/shared/ValuesVersionBtn/ValuesVersionBtn.js +5 -20
  186. package/dist/components/RecordEdition/EditRecordContent/shared/ValuesVersionBtn/ValuesVersionBtn.js.map +1 -1
  187. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.d.ts +1 -11
  188. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js +8 -95
  189. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js.map +1 -1
  190. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/_types.d.ts +8 -0
  191. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/_types.js +2 -0
  192. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/_types.js.map +1 -0
  193. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/LinkFieldExplorer.d.ts +6 -0
  194. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/LinkFieldExplorer.js +77 -0
  195. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/LinkFieldExplorer.js.map +1 -0
  196. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/{link-record → explorer/link-record}/useExplorerLinkRecords.d.ts +5 -7
  197. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/{link-record → explorer/link-record}/useExplorerLinkRecords.js +3 -10
  198. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/link-record/useExplorerLinkRecords.js.map +1 -0
  199. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/{link-record → explorer/link-record}/useLinkRecords.d.ts +5 -6
  200. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/link-record/useLinkRecords.js +98 -0
  201. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/link-record/useLinkRecords.js.map +1 -0
  202. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/{ExplorerWrapper.d.ts → InputExtraAlignLeft.d.ts} +54 -52
  203. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/{link-record/ActionButton.js → shared/InputExtraAlignLeft.js} +4 -4
  204. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/InputExtraAlignLeft.js.map +1 -0
  205. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/InputWrapper.d.ts +3 -0
  206. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/InputWrapper.js +31 -0
  207. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/InputWrapper.js.map +1 -0
  208. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/Wrapper.d.ts +3 -0
  209. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/Wrapper.js +8 -0
  210. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/Wrapper.js.map +1 -0
  211. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/LinkFieldTags.d.ts +3 -0
  212. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/LinkFieldTags.js +57 -0
  213. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/LinkFieldTags.js.map +1 -0
  214. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.d.ts +16 -0
  215. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.js +85 -0
  216. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.js.map +1 -0
  217. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/unlink-record/useUnlinkRecord.d.ts +19 -0
  218. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/unlink-record/useUnlinkRecord.js +43 -0
  219. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/unlink-record/useUnlinkRecord.js.map +1 -0
  220. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/unlink-all-records/useUnlinkAllRecords.d.ts +16 -0
  221. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/unlink-all-records/useUnlinkAllRecords.js +27 -0
  222. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/unlink-all-records/useUnlinkAllRecords.js.map +1 -0
  223. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js +4 -3
  224. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js.map +1 -1
  225. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js +1 -1
  226. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js.map +1 -1
  227. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/StandardFieldValue.js +2 -0
  228. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/StandardFieldValue.js.map +1 -1
  229. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js +9 -2
  230. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js.map +1 -1
  231. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeFieldWrapper.d.ts +53 -51
  232. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeItem.js +3 -2
  233. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeItem.js.map +1 -1
  234. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.d.ts +2 -1
  235. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.js +4 -7
  236. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.js.map +1 -1
  237. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.d.ts +3 -2
  238. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.js +2 -2
  239. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.js.map +1 -1
  240. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js +3 -2
  241. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js.map +1 -1
  242. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.d.ts +1 -0
  243. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js +2 -2
  244. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js.map +1 -1
  245. package/dist/components/RecordEdition/EditRecordSidebar/RecordSummary/RecordInformations/RecordInformations.js +3 -2
  246. package/dist/components/RecordEdition/EditRecordSidebar/RecordSummary/RecordInformations/RecordInformations.js.map +1 -1
  247. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js +4 -3
  248. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js.map +1 -1
  249. package/dist/components/RecordEdition/EditRecordSidebar/ValuesVersions/ValuesVersions.js +3 -2
  250. package/dist/components/RecordEdition/EditRecordSidebar/ValuesVersions/ValuesVersions.js.map +1 -1
  251. package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js +2 -2
  252. package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js.map +1 -1
  253. package/dist/components/RecordHistory/RecordHistoryLogEntry.js +10 -2
  254. package/dist/components/RecordHistory/RecordHistoryLogEntry.js.map +1 -1
  255. package/dist/components/RecordHistory/_queries/recordHistoryQuery.d.ts +7 -0
  256. package/dist/components/RecordHistory/_queries/recordHistoryQuery.js +64 -0
  257. package/dist/components/RecordHistory/_queries/recordHistoryQuery.js.map +1 -0
  258. package/dist/components/RecordHistory/hooks/useFetchRecordHistory.js +5 -2
  259. package/dist/components/RecordHistory/hooks/useFetchRecordHistory.js.map +1 -1
  260. package/dist/components/RecordHistory/utils/extendedAttribute.d.ts +11 -0
  261. package/dist/components/RecordHistory/utils/extendedAttribute.js +40 -0
  262. package/dist/components/RecordHistory/utils/extendedAttribute.js.map +1 -0
  263. package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.d.ts +1 -0
  264. package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.js +7 -7
  265. package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.js.map +1 -1
  266. package/dist/components/SelectTreeNode/SelectTreeNode.d.ts +2 -1
  267. package/dist/components/SelectTreeNode/SelectTreeNode.js +3 -3
  268. package/dist/components/SelectTreeNode/SelectTreeNode.js.map +1 -1
  269. package/dist/components/SelectTreeNode/SelectTreeNodeContent.d.ts +2 -1
  270. package/dist/components/SelectTreeNode/SelectTreeNodeContent.js +6 -2
  271. package/dist/components/SelectTreeNode/SelectTreeNodeContent.js.map +1 -1
  272. package/dist/components/SelectTreeNode/TreeNodeTitle.js +5 -4
  273. package/dist/components/SelectTreeNode/TreeNodeTitle.js.map +1 -1
  274. package/dist/constants.d.ts +1 -0
  275. package/dist/constants.js +1 -0
  276. package/dist/constants.js.map +1 -1
  277. package/dist/hooks/useIFrameMessenger/messageHandlers.d.ts +3 -1
  278. package/dist/hooks/useIFrameMessenger/messageHandlers.js +16 -0
  279. package/dist/hooks/useIFrameMessenger/messageHandlers.js.map +1 -1
  280. package/dist/hooks/useIFrameMessenger/schema.d.ts +6 -3
  281. package/dist/hooks/useIFrameMessenger/schema.js +2 -1
  282. package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
  283. package/dist/hooks/useIFrameMessenger/types.d.ts +32 -2
  284. package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
  285. package/dist/hooks/useIFrameMessenger/useIFrameMessenger.d.ts +2 -0
  286. package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js +16 -2
  287. package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js.map +1 -1
  288. package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.d.ts +2 -0
  289. package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.d.ts +2 -0
  290. package/dist/locales/en/shared.json +20 -4
  291. package/dist/locales/fr/shared.json +20 -4
  292. package/dist/types/records.d.ts +1 -0
  293. package/dist/types/records.js.map +1 -1
  294. package/package.json +40 -42
  295. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/ActionButton.d.ts +0 -3
  296. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/ActionButton.js.map +0 -1
  297. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useExplorerLinkRecords.js.map +0 -1
  298. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useLinkRecords.js +0 -100
  299. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useLinkRecords.js.map +0 -1
  300. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/ExplorerWrapper.js +0 -13
  301. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/ExplorerWrapper.js.map +0 -1
@@ -9,6 +9,7 @@ import { useSharedTranslation } from '../../hooks/useSharedTranslation';
9
9
  import { KitButton, KitSpace, KitTypography } from 'aristid-ds';
10
10
  import dayjs from 'dayjs';
11
11
  import styled from 'styled-components';
12
+ import { getExtendedAttributeDiffs, getExtendedAttributeLabels, } from '../../components/RecordHistory/utils/extendedAttribute';
12
13
  const StyledLinkButton = styled(KitButton) `
13
14
  &[role='link'] {
14
15
  display: inline-flex;
@@ -40,20 +41,27 @@ export const RecordHistoryLogEntry = ({ index, logEntry }) => {
40
41
  };
41
42
  const getAttributeLabel = () => localizedTranslation(attribute?.label, lang) || attribute?.id || t('record_history.unknown_attribute');
42
43
  const formatValue = (logData) => {
43
- if (attribute?.format === AttributeFormat.rich_text) {
44
+ if (attribute?.format === AttributeFormat.rich_text || attribute?.format === AttributeFormat.extended) {
44
45
  return (_jsx(KitTypography.AdvancedParagraph, { size: "fontSize5", ellipsis: { rows: 4, expandable: true }, children: logData.asString }));
45
46
  }
46
47
  return _jsx(KitTypography.Text, { size: "fontSize5", children: logData.asString });
47
48
  };
48
49
  const formatValueChange = () => {
49
50
  const noValue = _jsx(KitTypography.Text, { size: "fontSize5", children: t('record_history.no_value') });
51
+ if (attribute?.format === AttributeFormat.extended) {
52
+ const diffs = getExtendedAttributeDiffs(hasValue(before) ? JSON.parse(before.asString) : undefined, hasValue(after) ? JSON.parse(after.asString) : undefined);
53
+ return diffs.map(diff => (_jsxs(KitSpace, { size: "xxs", direction: "horizontal", wrap: true, children: [getExtendedAttributeLabels(diff.path, attribute
54
+ .embedded_fields, lang, t('record_history.unknown_attribute'))
55
+ .reverse()
56
+ .map((key, i, arr) => (_jsxs("span", { children: [_jsx("strong", { children: key }), i < arr.length - 1 && ` ${t('record_history.of')}`] }, key))), ":", diff.before !== null ? formatValue({ asString: diff.before }) : noValue, _jsx(KitTypography.Text, { size: "fontSize5", children: "\u2192" }), diff.after !== null ? formatValue({ asString: diff.after }) : noValue] })));
57
+ }
50
58
  if (attribute?.multiple_values) {
51
59
  const uniqValue = !hasBefore && hasAfter ? after : hasBefore && !hasAfter ? before : null;
52
60
  if (uniqValue != null) {
53
61
  return (_jsx(KitSpace, { size: "xxs", direction: "horizontal", wrap: true, children: formatValue(uniqValue) }));
54
62
  }
55
63
  }
56
- return (_jsxs(KitSpace, { size: "xxs", direction: "horizontal", wrap: true, children: [hasBefore ? formatValue(before) : noValue, _jsx(KitTypography.Text, { size: "fontSize5", children: " \u2192 " }), hasAfter ? formatValue(after) : noValue] }));
64
+ return (_jsxs(KitSpace, { size: "xxs", direction: "horizontal", wrap: true, children: [hasBefore ? formatValue(before) : noValue, _jsx(KitTypography.Text, { size: "fontSize5", children: "\u2192" }), hasAfter ? formatValue(after) : noValue] }));
57
65
  };
58
66
  switch (action) {
59
67
  case LogAction.VALUE_SAVE:
@@ -1 +1 @@
1
- {"version":3,"file":"RecordHistoryLogEntry.js","sourceRoot":"","sources":["../../../src/components/RecordHistory/RecordHistoryLogEntry.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {localizedTranslation} from '@leav/utils';\nimport {AttributeFormat, LogAction} from '_ui/_gqlTypes';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {KitButton, KitSpace, KitTypography} from 'aristid-ds';\nimport dayjs from 'dayjs';\nimport {type FunctionComponent} from 'react';\nimport {type LogEntry, type LogEntryAttribute, type LogEntryData, type LogEntryValue} from './_types';\nimport styled from 'styled-components';\n\ninterface IRecordHistoryLogEntryProps {\n index: number;\n logEntry: LogEntry;\n}\n\nconst StyledLinkButton = styled(KitButton)`\n &[role='link'] {\n display: inline-flex;\n }\n`;\n\nexport const RecordHistoryLogEntry: FunctionComponent<IRecordHistoryLogEntryProps> = ({index, logEntry}) => {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {action, time, user, topic, before, after} = logEntry as LogEntryValue;\n const attribute: LogEntryAttribute | undefined = topic?.attribute;\n\n const hasValue = (value: LogEntryData) => value != null && 'asString' in value && value.asString != null;\n const hasBefore = hasValue(before);\n const hasAfter = hasValue(after);\n\n const getUserString = () => {\n const email = user?.properties[0]?.values[0]?.payload;\n return email ? (\n <StyledLinkButton type=\"link\" href={`mailto:${email}`}>\n {email}\n </StyledLinkButton>\n ) : (\n user?.id || t('record_history.unknown_user')\n );\n };\n const getDateString = () => dayjs.unix(time).format('DD/MM/YYYY HH:mm:ss'); // Maybe use https://day.js.org/docs/en/display/format#localized-formats if needed\n const getActionString = () => {\n if (attribute?.multiple_values) {\n if (!hasBefore && hasAfter) {\n return t('record_history.action.value_add');\n }\n if (hasBefore && !hasAfter) {\n return t('record_history.action.value_delete');\n }\n }\n return t('record_history.action.value_modify');\n };\n\n const getAttributeLabel = () =>\n localizedTranslation(attribute?.label, lang) || attribute?.id || t('record_history.unknown_attribute');\n\n const formatValue = (logData: LogEntryData) => {\n if (attribute?.format === AttributeFormat.rich_text) {\n return (\n <KitTypography.AdvancedParagraph size=\"fontSize5\" ellipsis={{rows: 4, expandable: true}}>\n {logData.asString}\n </KitTypography.AdvancedParagraph>\n );\n }\n return <KitTypography.Text size=\"fontSize5\">{logData.asString}</KitTypography.Text>;\n };\n\n const formatValueChange = () => {\n const noValue = <KitTypography.Text size=\"fontSize5\">{t('record_history.no_value')}</KitTypography.Text>;\n\n if (attribute?.multiple_values) {\n const uniqValue = !hasBefore && hasAfter ? after : hasBefore && !hasAfter ? before : null;\n if (uniqValue != null) {\n return (\n <KitSpace size=\"xxs\" direction=\"horizontal\" wrap>\n {formatValue(uniqValue)}\n </KitSpace>\n );\n }\n }\n\n return (\n <KitSpace size=\"xxs\" direction=\"horizontal\" wrap>\n {hasBefore ? formatValue(before) : noValue}\n <KitTypography.Text size=\"fontSize5\"> → </KitTypography.Text>\n {hasAfter ? formatValue(after) : noValue}\n </KitSpace>\n );\n };\n\n switch (action) {\n case LogAction.VALUE_SAVE:\n case LogAction.VALUE_DELETE:\n return (\n <KitSpace key={index} size=\"xxs\" direction=\"vertical\">\n <KitTypography.Text size=\"fontSize5\">\n {getUserString()} {getActionString()} <strong>{getAttributeLabel()}</strong>\n </KitTypography.Text>\n <KitTypography.Text size=\"fontSize5\">{getDateString()}</KitTypography.Text>\n {formatValueChange()}\n </KitSpace>\n );\n }\n};\n\nexport default RecordHistoryLogEntry;\n"]}
1
+ {"version":3,"file":"RecordHistoryLogEntry.js","sourceRoot":"","sources":["../../../src/components/RecordHistory/RecordHistoryLogEntry.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {localizedTranslation} from '@leav/utils';\nimport {AttributeFormat, LogAction, type RecordHistoryLogAttributeStandardAttributeFragment} from '_ui/_gqlTypes';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {KitButton, KitSpace, KitTypography} from 'aristid-ds';\nimport dayjs from 'dayjs';\nimport {type FunctionComponent} from 'react';\nimport {type LogEntry, type LogEntryAttribute, type LogEntryData, type LogEntryValue} from './_types';\nimport styled from 'styled-components';\nimport {type IEmbeddedField} from '_ui/components/RecordHistory/_queries/recordHistoryQuery';\nimport {\n getExtendedAttributeDiffs,\n getExtendedAttributeLabels,\n} from '_ui/components/RecordHistory/utils/extendedAttribute';\n\ninterface IRecordHistoryLogEntryProps {\n index: number;\n logEntry: LogEntry;\n}\n\nconst StyledLinkButton = styled(KitButton)`\n &[role='link'] {\n display: inline-flex;\n }\n`;\n\nexport const RecordHistoryLogEntry: FunctionComponent<IRecordHistoryLogEntryProps> = ({index, logEntry}) => {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {action, time, user, topic, before, after} = logEntry as LogEntryValue;\n const attribute: LogEntryAttribute | undefined = topic?.attribute;\n\n const hasValue = (value: LogEntryData) => value != null && 'asString' in value && value.asString != null;\n const hasBefore = hasValue(before);\n const hasAfter = hasValue(after);\n\n const getUserString = () => {\n const email = user?.properties[0]?.values[0]?.payload;\n return email ? (\n <StyledLinkButton type=\"link\" href={`mailto:${email}`}>\n {email}\n </StyledLinkButton>\n ) : (\n user?.id || t('record_history.unknown_user')\n );\n };\n const getDateString = () => dayjs.unix(time).format('DD/MM/YYYY HH:mm:ss'); // Maybe use https://day.js.org/docs/en/display/format#localized-formats if needed\n const getActionString = () => {\n if (attribute?.multiple_values) {\n if (!hasBefore && hasAfter) {\n return t('record_history.action.value_add');\n }\n if (hasBefore && !hasAfter) {\n return t('record_history.action.value_delete');\n }\n }\n return t('record_history.action.value_modify');\n };\n\n const getAttributeLabel = () =>\n localizedTranslation(attribute?.label, lang) || attribute?.id || t('record_history.unknown_attribute');\n\n const formatValue = (logData: LogEntryData) => {\n if (attribute?.format === AttributeFormat.rich_text || attribute?.format === AttributeFormat.extended) {\n return (\n <KitTypography.AdvancedParagraph size=\"fontSize5\" ellipsis={{rows: 4, expandable: true}}>\n {logData.asString}\n </KitTypography.AdvancedParagraph>\n );\n }\n return <KitTypography.Text size=\"fontSize5\">{logData.asString}</KitTypography.Text>;\n };\n\n const formatValueChange = () => {\n const noValue = <KitTypography.Text size=\"fontSize5\">{t('record_history.no_value')}</KitTypography.Text>;\n\n if (attribute?.format === AttributeFormat.extended) {\n const diffs = getExtendedAttributeDiffs(\n hasValue(before) ? JSON.parse(before.asString) : undefined,\n hasValue(after) ? JSON.parse(after.asString) : undefined,\n );\n\n return diffs.map(diff => (\n <KitSpace size=\"xxs\" direction=\"horizontal\" wrap>\n {getExtendedAttributeLabels(\n diff.path,\n (attribute as RecordHistoryLogAttributeStandardAttributeFragment)\n .embedded_fields as IEmbeddedField[],\n lang,\n t('record_history.unknown_attribute'),\n )\n .reverse()\n .map((key, i, arr) => (\n <span key={key}>\n <strong>{key}</strong>\n {i < arr.length - 1 && ` ${t('record_history.of')}`}\n </span>\n ))}\n :{diff.before !== null ? formatValue({asString: diff.before}) : noValue}\n <KitTypography.Text size=\"fontSize5\">→</KitTypography.Text>\n {diff.after !== null ? formatValue({asString: diff.after}) : noValue}\n </KitSpace>\n ));\n }\n\n if (attribute?.multiple_values) {\n const uniqValue = !hasBefore && hasAfter ? after : hasBefore && !hasAfter ? before : null;\n\n if (uniqValue != null) {\n return (\n <KitSpace size=\"xxs\" direction=\"horizontal\" wrap>\n {formatValue(uniqValue)}\n </KitSpace>\n );\n }\n }\n\n return (\n <KitSpace size=\"xxs\" direction=\"horizontal\" wrap>\n {hasBefore ? formatValue(before) : noValue}\n <KitTypography.Text size=\"fontSize5\">→</KitTypography.Text>\n {hasAfter ? formatValue(after) : noValue}\n </KitSpace>\n );\n };\n\n switch (action) {\n case LogAction.VALUE_SAVE:\n case LogAction.VALUE_DELETE:\n return (\n <KitSpace key={index} size=\"xxs\" direction=\"vertical\">\n <KitTypography.Text size=\"fontSize5\">\n {getUserString()} {getActionString()} <strong>{getAttributeLabel()}</strong>\n </KitTypography.Text>\n <KitTypography.Text size=\"fontSize5\">{getDateString()}</KitTypography.Text>\n {formatValueChange()}\n </KitSpace>\n );\n }\n};\n\nexport default RecordHistoryLogEntry;\n"]}
@@ -0,0 +1,7 @@
1
+ export interface IEmbeddedField {
2
+ id: string;
3
+ label: Record<string, string>;
4
+ embedded_fields?: IEmbeddedField[];
5
+ }
6
+ export declare const recordHistoryLogAttributeFragment: (depthEmbeddedFields: number) => string;
7
+ export declare const getRecordHistoryQuery: (depthAttributeEmbeddedFields?: number) => import("graphql").DocumentNode;
@@ -0,0 +1,64 @@
1
+ // Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06
2
+ // This file is released under LGPL V3
3
+ // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
4
+ import { gqlUnchecked } from '../../../_utils';
5
+ import { getEmbeddedFields } from '../../../_queries/attributes/getAttributeWithEmbeddedFields';
6
+ export const recordHistoryLogAttributeFragment = (depthEmbeddedFields) => `
7
+ attribute {
8
+ id
9
+ label
10
+ type
11
+ format
12
+ multiple_values
13
+ ... on StandardAttribute {
14
+ ${getEmbeddedFields(depthEmbeddedFields)}
15
+ }
16
+ }
17
+ `;
18
+ const RecordHistoryLogEntryFragment = (depthAttributeEmbeddedFields) => `
19
+ logs {
20
+ action
21
+ time
22
+ topic {
23
+ ${recordHistoryLogAttributeFragment(depthAttributeEmbeddedFields)}
24
+ }
25
+ user {
26
+ id
27
+ whoAmI { # Don't know why, but frontend need that to load record !
28
+ id
29
+ library {
30
+ id
31
+ }
32
+ }
33
+ properties(attributeIds: ["email"]) {
34
+ attributeId
35
+ values {
36
+ ... on Value {
37
+ payload
38
+ }
39
+ }
40
+ }
41
+ }
42
+ before {
43
+ asString
44
+ }
45
+ after {
46
+ asString
47
+ }
48
+ }
49
+ `;
50
+ export const getRecordHistoryQuery = (depthAttributeEmbeddedFields = 0) => gqlUnchecked `
51
+ query getRecordHistory($record: LogTopicRecordFilterInput!, $attributeId: String, $actions: [LogAction!], $pagination: Pagination) {
52
+ logs(filters: {
53
+ topic: {
54
+ record: $record,
55
+ attribute: $attributeId
56
+ },
57
+ actions: $actions,
58
+ }, pagination: $pagination) {
59
+ total
60
+ ${RecordHistoryLogEntryFragment(depthAttributeEmbeddedFields)}
61
+ }
62
+ }
63
+ `;
64
+ //# sourceMappingURL=recordHistoryQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordHistoryQuery.js","sourceRoot":"","sources":["../../../../src/components/RecordHistory/_queries/recordHistoryQuery.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AACxC,OAAO,EAAC,iBAAiB,EAAC,MAAM,wDAAwD,CAAC;AAQzF,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,mBAA2B,EAAE,EAAE,CAAC;;;;;;;;cAQpE,iBAAiB,CAAC,mBAAmB,CAAC;;;CAGnD,CAAC;AAEF,MAAM,6BAA6B,GAAG,CAAC,4BAAoC,EAAE,EAAE,CAAC;;;;;cAKlE,iCAAiC,CAAC,4BAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B5E,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,+BAAuC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAA;;;;;;;;;;cAUjF,6BAA6B,CAAC,4BAA4B,CAAC;;;CAGxE,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {gqlUnchecked} from '_ui/_utils';\nimport {getEmbeddedFields} from '_ui/_queries/attributes/getAttributeWithEmbeddedFields';\n\nexport interface IEmbeddedField {\n id: string;\n label: Record<string, string>;\n embedded_fields?: IEmbeddedField[];\n}\n\nexport const recordHistoryLogAttributeFragment = (depthEmbeddedFields: number) => `\n attribute {\n id\n label\n type\n format\n multiple_values\n ... on StandardAttribute {\n ${getEmbeddedFields(depthEmbeddedFields)}\n }\n }\n`;\n\nconst RecordHistoryLogEntryFragment = (depthAttributeEmbeddedFields: number) => `\n logs {\n action\n time\n topic {\n ${recordHistoryLogAttributeFragment(depthAttributeEmbeddedFields)}\n }\n user {\n id\n whoAmI { # Don't know why, but frontend need that to load record !\n id\n library {\n id\n }\n }\n properties(attributeIds: [\"email\"]) {\n attributeId\n values {\n ... on Value {\n payload\n }\n }\n }\n }\n before {\n asString\n }\n after {\n asString\n }\n }\n`;\n\nexport const getRecordHistoryQuery = (depthAttributeEmbeddedFields: number = 0) => gqlUnchecked`\n query getRecordHistory($record: LogTopicRecordFilterInput!, $attributeId: String, $actions: [LogAction!], $pagination: Pagination) {\n logs(filters: {\n topic: {\n record: $record,\n attribute: $attributeId\n },\n actions: $actions,\n }, pagination: $pagination) {\n total\n ${RecordHistoryLogEntryFragment(depthAttributeEmbeddedFields)}\n }\n }\n`;\n"]}
@@ -1,16 +1,19 @@
1
1
  // Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06
2
2
  // This file is released under LGPL V3
3
3
  // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
4
- import { LogAction, useGetRecordHistoryQuery } from '../../../_gqlTypes';
4
+ import { LogAction } from '../../../_gqlTypes';
5
5
  import { useCallback, useEffect, useState } from 'react';
6
+ import { useQuery } from '@apollo/client';
7
+ import { getRecordHistoryQuery } from '../../../components/RecordHistory/_queries/recordHistoryQuery';
6
8
  export const RECORD_HISTORY_LOGS_PAGE = 50;
7
9
  export const RECORD_HISTORY_LOGS_FIRST_PAGE = 1;
10
+ const DEPTH_EMBEDDED_FIELDS = 100;
8
11
  const eventsToFetch = [LogAction.VALUE_SAVE, LogAction.VALUE_DELETE];
9
12
  export const useFetchRecordHistory = ({ record, attributeId, }) => {
10
13
  const [logs, setLogs] = useState([]);
11
14
  const [total, setTotal] = useState(0);
12
15
  const [hasMore, setHasMore] = useState(false);
13
- const { loading, error, data: history, refetch, } = useGetRecordHistoryQuery({
16
+ const { loading, error, data: history, refetch, } = useQuery(getRecordHistoryQuery(DEPTH_EMBEDDED_FIELDS), {
14
17
  fetchPolicy: 'network-only',
15
18
  variables: {
16
19
  record: {
@@ -1 +1 @@
1
- {"version":3,"file":"useFetchRecordHistory.js","sourceRoot":"","sources":["../../../../src/components/RecordHistory/hooks/useFetchRecordHistory.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,SAAS,EAAE,wBAAwB,EAAC,MAAM,eAAe,CAAC;AAElE,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAgBvD,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAChD,MAAM,aAAa,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAClC,MAAM,EACN,WAAW,GACe,EAA8B,EAAE;IAC1D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAa,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAEvD,MAAM,EACF,OAAO,EACP,KAAK,EACL,IAAI,EAAE,OAAO,EACb,OAAO,GACV,GAAG,wBAAwB,CAAC;QACzB,WAAW,EAAE,cAAc;QAC3B,SAAS,EAAE;YACP,MAAM,EAAE;gBACJ,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,SAAS,EAAE,MAAM,CAAC,SAAS;aAC9B;YACD,WAAW;YACX,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,EAAC,KAAK,EAAE,8BAA8B,EAAE,MAAM,EAAE,CAAC,EAAC;SACjE;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,sCAAsC;QACtC,OAAO,CAAC,EAAE,CAAC,CAAC;QACZ,QAAQ,CAAC,CAAC,CAAC,CAAC;QACZ,UAAU,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,OAAO,CAAC;YACJ,MAAM,EAAE;gBACJ,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,SAAS,EAAE,MAAM,CAAC,SAAS;aAC9B;YACD,WAAW;YACX,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,EAAC,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC;SACrE,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAErE,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjB,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;IAC1C,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEvB,OAAO;QACH,OAAO;QACP,OAAO,EAAE,CAAC,CAAC,KAAK;QAChB,IAAI;QACJ,KAAK;QACL,OAAO;QACP,SAAS;KACZ,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {LogAction, useGetRecordHistoryQuery} from '_ui/_gqlTypes';\nimport {type LogEntry} from '../_types';\nimport {useCallback, useEffect, useState} from 'react';\n\nexport interface IUseFetchRecordHistoryHook {\n loading: boolean;\n inError: boolean;\n logs: LogEntry[];\n total: number;\n hasMore: boolean;\n fetchMore: () => void;\n}\n\nexport interface IUseFetchRecordHistoryProps {\n record: {id: string; libraryId: string};\n attributeId?: string;\n}\n\nexport const RECORD_HISTORY_LOGS_PAGE = 50;\nexport const RECORD_HISTORY_LOGS_FIRST_PAGE = 1;\nconst eventsToFetch = [LogAction.VALUE_SAVE, LogAction.VALUE_DELETE];\n\nexport const useFetchRecordHistory = ({\n record,\n attributeId,\n}: IUseFetchRecordHistoryProps): IUseFetchRecordHistoryHook => {\n const [logs, setLogs] = useState<LogEntry[]>([]);\n const [total, setTotal] = useState<number>(0);\n const [hasMore, setHasMore] = useState<boolean>(false);\n\n const {\n loading,\n error,\n data: history,\n refetch,\n } = useGetRecordHistoryQuery({\n fetchPolicy: 'network-only',\n variables: {\n record: {\n id: record.id,\n libraryId: record.libraryId,\n },\n attributeId,\n actions: eventsToFetch,\n pagination: {limit: RECORD_HISTORY_LOGS_FIRST_PAGE, offset: 0},\n },\n });\n\n useEffect(() => {\n // Reset if record or attribute change\n setLogs([]);\n setTotal(0);\n setHasMore(false);\n }, [record.id, record.libraryId, attributeId]);\n\n const fetchMore = useCallback(() => {\n refetch({\n record: {\n id: record.id,\n libraryId: record.libraryId,\n },\n attributeId,\n actions: eventsToFetch,\n pagination: {limit: RECORD_HISTORY_LOGS_PAGE, offset: logs.length},\n });\n }, [logs.length, refetch, record.id, record.libraryId, attributeId]);\n\n useEffect(() => {\n if (loading || !history) {\n return;\n }\n const newLogs = [...logs, ...history.logs.logs];\n const newTotal = history.logs.total || 0;\n setLogs(newLogs);\n setTotal(newTotal);\n setHasMore(newLogs.length < newTotal);\n }, [history, loading]);\n\n return {\n loading,\n inError: !!error,\n logs,\n total,\n hasMore,\n fetchMore,\n };\n};\n"]}
1
+ {"version":3,"file":"useFetchRecordHistory.js","sourceRoot":"","sources":["../../../../src/components/RecordHistory/hooks/useFetchRecordHistory.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {LogAction} from '_ui/_gqlTypes';\nimport {type LogEntry} from '../_types';\nimport {useCallback, useEffect, useState} from 'react';\nimport {useQuery} from '@apollo/client';\nimport {getRecordHistoryQuery} from '_ui/components/RecordHistory/_queries/recordHistoryQuery';\n\nexport interface IUseFetchRecordHistoryHook {\n loading: boolean;\n inError: boolean;\n logs: LogEntry[];\n total: number;\n hasMore: boolean;\n fetchMore: () => void;\n}\n\nexport interface IUseFetchRecordHistoryProps {\n record: {id: string; libraryId: string};\n attributeId?: string;\n}\n\nexport const RECORD_HISTORY_LOGS_PAGE = 50;\nexport const RECORD_HISTORY_LOGS_FIRST_PAGE = 1;\nconst DEPTH_EMBEDDED_FIELDS = 100;\n\nconst eventsToFetch = [LogAction.VALUE_SAVE, LogAction.VALUE_DELETE];\n\nexport const useFetchRecordHistory = ({\n record,\n attributeId,\n}: IUseFetchRecordHistoryProps): IUseFetchRecordHistoryHook => {\n const [logs, setLogs] = useState<LogEntry[]>([]);\n const [total, setTotal] = useState<number>(0);\n const [hasMore, setHasMore] = useState<boolean>(false);\n\n const {\n loading,\n error,\n data: history,\n refetch,\n } = useQuery(getRecordHistoryQuery(DEPTH_EMBEDDED_FIELDS), {\n fetchPolicy: 'network-only',\n variables: {\n record: {\n id: record.id,\n libraryId: record.libraryId,\n },\n attributeId,\n actions: eventsToFetch,\n pagination: {limit: RECORD_HISTORY_LOGS_FIRST_PAGE, offset: 0},\n },\n });\n\n useEffect(() => {\n // Reset if record or attribute change\n setLogs([]);\n setTotal(0);\n setHasMore(false);\n }, [record.id, record.libraryId, attributeId]);\n\n const fetchMore = useCallback(() => {\n refetch({\n record: {\n id: record.id,\n libraryId: record.libraryId,\n },\n attributeId,\n actions: eventsToFetch,\n pagination: {limit: RECORD_HISTORY_LOGS_PAGE, offset: logs.length},\n });\n }, [logs.length, refetch, record.id, record.libraryId, attributeId]);\n\n useEffect(() => {\n if (loading || !history) {\n return;\n }\n const newLogs = [...logs, ...history.logs.logs];\n const newTotal = history.logs.total || 0;\n setLogs(newLogs);\n setTotal(newTotal);\n setHasMore(newLogs.length < newTotal);\n }, [history, loading]);\n\n return {\n loading,\n inError: !!error,\n logs,\n total,\n hasMore,\n fetchMore,\n };\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import { type IEmbeddedField } from '../../../components/RecordHistory/_queries/recordHistoryQuery';
2
+ export declare const getExtendedAttributeDiffs: (extendedValueBefore: unknown | undefined, extendedValueAfter: unknown | undefined, path?: string[], diffs?: Array<{
3
+ path: string;
4
+ before: string | null;
5
+ after: string | null;
6
+ }>) => Array<{
7
+ path: string;
8
+ before: string | null;
9
+ after: string | null;
10
+ }>;
11
+ export declare const getExtendedAttributeLabels: (path: string, embeddedFields: IEmbeddedField[], lang: string[], unknownAttributeLabel: string) => string[];
@@ -0,0 +1,40 @@
1
+ import { localizedTranslation } from '@leav/utils';
2
+ // This function compares two extended attribute values and returns the differences
3
+ export const getExtendedAttributeDiffs = (extendedValueBefore, extendedValueAfter, path = [], diffs = []) => {
4
+ if ((typeof extendedValueBefore !== 'object' || extendedValueBefore === null) &&
5
+ (typeof extendedValueAfter !== 'object' || extendedValueAfter === null)) {
6
+ if (extendedValueBefore !== extendedValueAfter) {
7
+ diffs.push({
8
+ path: path.join('.'),
9
+ before: extendedValueBefore === null || extendedValueBefore === undefined
10
+ ? null
11
+ : String(extendedValueBefore),
12
+ after: extendedValueAfter === null || extendedValueAfter === undefined ? null : String(extendedValueAfter),
13
+ });
14
+ }
15
+ return diffs;
16
+ }
17
+ const keys = new Set([...Object.keys(extendedValueBefore || {}), ...Object.keys(extendedValueAfter || {})]);
18
+ for (const key of keys) {
19
+ getExtendedAttributeDiffs(extendedValueBefore?.[key], extendedValueAfter?.[key], [...path, key], diffs);
20
+ }
21
+ return diffs;
22
+ };
23
+ // This function retrieves the labels for each part of the dot-separated path
24
+ export const getExtendedAttributeLabels = (path, // dot separated path
25
+ embeddedFields, // root embedded fields
26
+ lang, unknownAttributeLabel) => {
27
+ let nestedEmbeddedFields = [...embeddedFields];
28
+ let current = null;
29
+ const labels = [];
30
+ for (const id of path.split('.')) {
31
+ current = nestedEmbeddedFields.find(attr => attr.id === id);
32
+ if (!current) {
33
+ break;
34
+ }
35
+ labels.push(localizedTranslation(current?.label, lang) || current?.id || unknownAttributeLabel);
36
+ nestedEmbeddedFields = current.embedded_fields ?? [];
37
+ }
38
+ return labels;
39
+ };
40
+ //# sourceMappingURL=extendedAttribute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extendedAttribute.js","sourceRoot":"","sources":["../../../../src/components/RecordHistory/utils/extendedAttribute.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAEjD,mFAAmF;AACnF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,mBAAwC,EACxC,kBAAuC,EACvC,OAAiB,EAAE,EACnB,QAA4E,EAAE,EACZ,EAAE;IACpE,IACI,CAAC,OAAO,mBAAmB,KAAK,QAAQ,IAAI,mBAAmB,KAAK,IAAI,CAAC;QACzE,CAAC,OAAO,kBAAkB,KAAK,QAAQ,IAAI,kBAAkB,KAAK,IAAI,CAAC,EACzE,CAAC;QACC,IAAI,mBAAmB,KAAK,kBAAkB,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACpB,MAAM,EACF,mBAAmB,KAAK,IAAI,IAAI,mBAAmB,KAAK,SAAS;oBAC7D,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBACrC,KAAK,EACD,kBAAkB,KAAK,IAAI,IAAI,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC;aAC1G,CAAC,CAAC;QACP,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5G,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,yBAAyB,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,EAAE,kBAAkB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5G,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,IAAY,EAAE,qBAAqB;AACnC,cAAgC,EAAE,uBAAuB;AACzD,IAAc,EACd,qBAA6B,EACrB,EAAE;IACV,IAAI,oBAAoB,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;IAC/C,IAAI,OAAO,GAAmB,IAAI,CAAC;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM;QACV,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,EAAE,IAAI,qBAAqB,CAAC,CAAC;QAChG,oBAAoB,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;IACzD,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type IEmbeddedField} from '_ui/components/RecordHistory/_queries/recordHistoryQuery';\nimport {localizedTranslation} from '@leav/utils';\n\n// This function compares two extended attribute values and returns the differences\nexport const getExtendedAttributeDiffs = (\n extendedValueBefore: unknown | undefined,\n extendedValueAfter: unknown | undefined,\n path: string[] = [],\n diffs: Array<{path: string; before: string | null; after: string | null}> = [],\n): Array<{path: string; before: string | null; after: string | null}> => {\n if (\n (typeof extendedValueBefore !== 'object' || extendedValueBefore === null) &&\n (typeof extendedValueAfter !== 'object' || extendedValueAfter === null)\n ) {\n if (extendedValueBefore !== extendedValueAfter) {\n diffs.push({\n path: path.join('.'),\n before:\n extendedValueBefore === null || extendedValueBefore === undefined\n ? null\n : String(extendedValueBefore),\n after:\n extendedValueAfter === null || extendedValueAfter === undefined ? null : String(extendedValueAfter),\n });\n }\n\n return diffs;\n }\n\n const keys = new Set([...Object.keys(extendedValueBefore || {}), ...Object.keys(extendedValueAfter || {})]);\n for (const key of keys) {\n getExtendedAttributeDiffs(extendedValueBefore?.[key], extendedValueAfter?.[key], [...path, key], diffs);\n }\n\n return diffs;\n};\n\n// This function retrieves the labels for each part of the dot-separated path\nexport const getExtendedAttributeLabels = (\n path: string, // dot separated path\n embeddedFields: IEmbeddedField[], // root embedded fields\n lang: string[],\n unknownAttributeLabel: string,\n): string[] => {\n let nestedEmbeddedFields = [...embeddedFields];\n let current: IEmbeddedField = null;\n const labels: string[] = [];\n\n for (const id of path.split('.')) {\n current = nestedEmbeddedFields.find(attr => attr.id === id);\n if (!current) {\n break;\n }\n labels.push(localizedTranslation(current?.label, lang) || current?.id || unknownAttributeLabel);\n nestedEmbeddedFields = current.embedded_fields ?? [];\n }\n\n return labels;\n};\n"]}
@@ -14,6 +14,7 @@ interface ISelectRecordForLinkModalProps {
14
14
  isMultivalue: boolean;
15
15
  onSelectionCompleted: (data: ExplorerSelectionIdsQuery) => void;
16
16
  onClose: () => void;
17
+ columnsToDisplay: string[];
17
18
  }
18
19
  export declare const SelectRecordForLinkModal: FunctionComponent<ISelectRecordForLinkModalProps>;
19
20
  export {};
@@ -5,10 +5,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { useRef } from 'react';
6
6
  import styled from 'styled-components';
7
7
  import { closeKitSnackBar, KitButton, KitSpace, AntModal } from 'aristid-ds';
8
- // TODO: harmonize icon sources
9
8
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
10
- import { faXmark } from '@fortawesome/free-solid-svg-icons';
11
- import { FaExchangeAlt, FaEye, FaPlus } from 'react-icons/fa';
9
+ import { faExchangeAlt, faEye, faPlus, faXmark } from '@fortawesome/free-solid-svg-icons';
12
10
  import { useSharedTranslation } from '../../hooks/useSharedTranslation';
13
11
  import { RecordFilterCondition, useExplorerSelectionIdsLazyQuery, } from '../../_gqlTypes';
14
12
  import { Explorer } from '../../components/Explorer';
@@ -48,7 +46,7 @@ const ModalMainStyledDiv = styled.div `
48
46
  height: 100%;
49
47
  position: relative;
50
48
  `;
51
- export const SelectRecordForLinkModal = ({ className, open, childLibraryId, replacementMode, valuesList, allowFreeEntry, selectionMode, joinLibraryContext, hideSelectAllAction, isMultivalue, onSelectionCompleted, onClose, }) => {
49
+ export const SelectRecordForLinkModal = ({ className, open, childLibraryId, replacementMode, valuesList, allowFreeEntry, selectionMode, joinLibraryContext, hideSelectAllAction, isMultivalue, onSelectionCompleted, onClose, columnsToDisplay, }) => {
52
50
  const { t } = useSharedTranslation();
53
51
  const explorerContainerRef = useRef(null);
54
52
  const _handleClose = () => {
@@ -74,7 +72,7 @@ export const SelectRecordForLinkModal = ({ className, open, childLibraryId, repl
74
72
  ? t('explorer.massAction.replace-link')
75
73
  : t('explorer.massAction.add-link'),
76
74
  deselectAll: true,
77
- icon: replacementMode ? _jsx(FaExchangeAlt, {}) : _jsx(FaPlus, {}),
75
+ icon: replacementMode ? (_jsx(FontAwesomeIcon, { icon: faExchangeAlt })) : (_jsx(FontAwesomeIcon, { icon: faPlus })),
78
76
  callback: async (massSelectionFilter) => {
79
77
  await getRecordIdsFromFilters({
80
78
  variables: {
@@ -104,10 +102,12 @@ export const SelectRecordForLinkModal = ({ className, open, childLibraryId, repl
104
102
  },
105
103
  },
106
104
  }
107
- : {}, primaryActions: [], defaultActionsForItem: [], defaultMassActions: [], itemActions: [
105
+ : {}, defaultViewSettings: {
106
+ attributesIds: columnsToDisplay,
107
+ }, primaryActions: [], defaultActionsForItem: [], defaultMassActions: [], itemActions: [
108
108
  {
109
109
  label: t('explorer.edit-item'),
110
- icon: _jsx(FaEye, {}),
110
+ icon: _jsx(FontAwesomeIcon, { icon: faEye }),
111
111
  useItemActionOnRowClick: true,
112
112
  callback: item => {
113
113
  openEditRecordModal({
@@ -1 +1 @@
1
- {"version":3,"file":"SelectRecordForLinkModal.js","sourceRoot":"","sources":["../../../src/components/SelectRecordForLinkModal/SelectRecordForLinkModal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type ComponentProps, type FunctionComponent, useRef} from 'react';\nimport styled from 'styled-components';\nimport {closeKitSnackBar, KitButton, KitSpace, AntModal} from 'aristid-ds';\n\n// TODO: harmonize icon sources\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faXmark} from '@fortawesome/free-solid-svg-icons';\nimport {FaExchangeAlt, FaEye, FaPlus} from 'react-icons/fa';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n type ExplorerSelectionIdsQuery,\n type JoinLibraryContextFragment,\n RecordFilterCondition,\n useExplorerSelectionIdsLazyQuery,\n} from '_ui/_gqlTypes';\nimport {Explorer} from '_ui/components/Explorer';\nimport {useEditRecordModal} from '../RecordEdition/EditRecordModal/useEditRecordModal';\n\nconst modalMaxWidth = 1_200;\n\nconst StyledModal = styled(AntModal)`\n && {\n width: 90vw;\n max-width: ${modalMaxWidth}px;\n\n .ant-modal-body {\n height: 80vh;\n overflow-y: auto;\n }\n\n .ant-modal-content {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding: 0;\n }\n\n .ant-modal-footer {\n flex: 0 0 auto;\n margin-top: 0;\n }\n }\n`;\n\nconst ModalFooterStyledDiv = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: calc(var(--general-spacing-xs) * 1px) calc(var(--general-spacing-s) * 1px);\n border-top: 1px solid var(--general-utilities-border);\n`;\n\nconst ModalMainStyledDiv = styled.div`\n padding: calc(var(--general-spacing-m) * 1px);\n height: 100%;\n position: relative;\n`;\n\ninterface ISelectRecordForLinkModalProps {\n className?: string;\n open: boolean;\n childLibraryId: string;\n replacementMode: boolean;\n valuesList?: string[];\n allowFreeEntry: boolean;\n joinLibraryContext?: JoinLibraryContextFragment;\n selectionMode: ComponentProps<typeof Explorer>['selectionMode'];\n hideSelectAllAction: ComponentProps<typeof Explorer>['hideSelectAllAction'];\n isMultivalue: boolean;\n onSelectionCompleted: (data: ExplorerSelectionIdsQuery) => void;\n onClose: () => void;\n}\n\nexport const SelectRecordForLinkModal: FunctionComponent<ISelectRecordForLinkModalProps> = ({\n className,\n open,\n childLibraryId,\n replacementMode,\n valuesList,\n allowFreeEntry,\n selectionMode,\n joinLibraryContext,\n hideSelectAllAction,\n isMultivalue,\n onSelectionCompleted,\n onClose,\n}) => {\n const {t} = useSharedTranslation();\n const explorerContainerRef = useRef<HTMLDivElement>(null);\n\n const _handleClose: ComponentProps<typeof KitButton>['onClick'] = () => {\n closeKitSnackBar();\n onClose();\n };\n\n const _closeButtonLabel: ComponentProps<typeof KitButton>['aria-label'] = String(t('global.close'));\n\n const _footer: ComponentProps<typeof AntModal>['footer'] = (\n <ModalFooterStyledDiv>\n <KitSpace>\n <KitButton\n aria-label={_closeButtonLabel}\n key=\"close\"\n icon={<FontAwesomeIcon icon={faXmark} />}\n onClick={_handleClose}\n >\n {_closeButtonLabel}\n </KitButton>\n </KitSpace>\n </ModalFooterStyledDiv>\n );\n\n const [getRecordIdsFromFilters] = useExplorerSelectionIdsLazyQuery({\n fetchPolicy: 'no-cache',\n onCompleted: onSelectionCompleted,\n });\n\n const {EditRecordModal, openEditRecordModal} = useEditRecordModal();\n\n return (\n <StyledModal\n className={className}\n open={open}\n onCancel={_handleClose}\n destroyOnClose\n closable={false}\n cancelText={t('global.cancel')}\n width=\"90vw\"\n centered\n footer={_footer}\n >\n <ModalMainStyledDiv ref={explorerContainerRef}>\n <Explorer.EditSettingsContextProvider\n panelElement={() => explorerContainerRef.current ?? document.body}\n >\n <Explorer\n title=\"SelectRecordForLinkModal\"\n entrypoint={{\n type: 'library',\n libraryId: childLibraryId,\n valuesList,\n allowFreeEntry,\n }}\n showCreateOnNoResultOnly\n selectionMode={selectionMode}\n hideSelectAllAction={hideSelectAllAction}\n massActions={\n isMultivalue\n ? [\n {\n label: replacementMode\n ? t('explorer.massAction.replace-link')\n : t('explorer.massAction.add-link'),\n deselectAll: true,\n icon: replacementMode ? <FaExchangeAlt /> : <FaPlus />,\n callback: async massSelectionFilter => {\n await getRecordIdsFromFilters({\n variables: {\n libraryId: childLibraryId,\n filters: massSelectionFilter,\n },\n });\n },\n },\n ]\n : []\n }\n defaultCallbacks={\n !isMultivalue\n ? {\n item: {\n select: async items => {\n await getRecordIdsFromFilters({\n variables: {\n libraryId: childLibraryId,\n filters: [\n {\n field: 'id',\n condition: RecordFilterCondition.EQUAL,\n value: items.itemId,\n },\n ],\n },\n });\n },\n },\n }\n : {}\n }\n primaryActions={[]}\n defaultActionsForItem={[]}\n defaultMassActions={[]}\n itemActions={[\n {\n label: t('explorer.edit-item'),\n icon: <FaEye />,\n useItemActionOnRowClick: true,\n callback: item => {\n openEditRecordModal({\n library: item.libraryId,\n record: {\n id: item.itemId,\n label: item.whoAmI?.label,\n subLabel: item.whoAmI?.subLabel,\n color: item.whoAmI?.color,\n library: {id: item.libraryId},\n },\n editionFormId: 'edition',\n });\n },\n },\n ]}\n defaultPrimaryActions={['create']}\n joinLibraryContext={joinLibraryContext}\n showSearch\n ignoreViewByDefault\n />\n {EditRecordModal}\n {/* TODO: avoid getting last view for user */}\n </Explorer.EditSettingsContextProvider>\n </ModalMainStyledDiv>\n </StyledModal>\n );\n};\n"]}
1
+ {"version":3,"file":"SelectRecordForLinkModal.js","sourceRoot":"","sources":["../../../src/components/SelectRecordForLinkModal/SelectRecordForLinkModal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type ComponentProps, type FunctionComponent, useRef} from 'react';\nimport styled from 'styled-components';\nimport {closeKitSnackBar, KitButton, KitSpace, AntModal} from 'aristid-ds';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faExchangeAlt, faEye, faPlus, faXmark} from '@fortawesome/free-solid-svg-icons';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n type ExplorerSelectionIdsQuery,\n type JoinLibraryContextFragment,\n RecordFilterCondition,\n useExplorerSelectionIdsLazyQuery,\n} from '_ui/_gqlTypes';\nimport {Explorer} from '_ui/components/Explorer';\nimport {useEditRecordModal} from '../RecordEdition/EditRecordModal/useEditRecordModal';\n\nconst modalMaxWidth = 1_200;\n\nconst StyledModal = styled(AntModal)`\n && {\n width: 90vw;\n max-width: ${modalMaxWidth}px;\n\n .ant-modal-body {\n height: 80vh;\n overflow-y: auto;\n }\n\n .ant-modal-content {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding: 0;\n }\n\n .ant-modal-footer {\n flex: 0 0 auto;\n margin-top: 0;\n }\n }\n`;\n\nconst ModalFooterStyledDiv = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: calc(var(--general-spacing-xs) * 1px) calc(var(--general-spacing-s) * 1px);\n border-top: 1px solid var(--general-utilities-border);\n`;\n\nconst ModalMainStyledDiv = styled.div`\n padding: calc(var(--general-spacing-m) * 1px);\n height: 100%;\n position: relative;\n`;\n\ninterface ISelectRecordForLinkModalProps {\n className?: string;\n open: boolean;\n childLibraryId: string;\n replacementMode: boolean;\n valuesList?: string[];\n allowFreeEntry: boolean;\n joinLibraryContext?: JoinLibraryContextFragment;\n selectionMode: ComponentProps<typeof Explorer>['selectionMode'];\n hideSelectAllAction: ComponentProps<typeof Explorer>['hideSelectAllAction'];\n isMultivalue: boolean;\n onSelectionCompleted: (data: ExplorerSelectionIdsQuery) => void;\n onClose: () => void;\n columnsToDisplay: string[];\n}\n\nexport const SelectRecordForLinkModal: FunctionComponent<ISelectRecordForLinkModalProps> = ({\n className,\n open,\n childLibraryId,\n replacementMode,\n valuesList,\n allowFreeEntry,\n selectionMode,\n joinLibraryContext,\n hideSelectAllAction,\n isMultivalue,\n onSelectionCompleted,\n onClose,\n columnsToDisplay,\n}) => {\n const {t} = useSharedTranslation();\n const explorerContainerRef = useRef<HTMLDivElement>(null);\n\n const _handleClose: ComponentProps<typeof KitButton>['onClick'] = () => {\n closeKitSnackBar();\n onClose();\n };\n\n const _closeButtonLabel: ComponentProps<typeof KitButton>['aria-label'] = String(t('global.close'));\n\n const _footer: ComponentProps<typeof AntModal>['footer'] = (\n <ModalFooterStyledDiv>\n <KitSpace>\n <KitButton\n aria-label={_closeButtonLabel}\n key=\"close\"\n icon={<FontAwesomeIcon icon={faXmark} />}\n onClick={_handleClose}\n >\n {_closeButtonLabel}\n </KitButton>\n </KitSpace>\n </ModalFooterStyledDiv>\n );\n\n const [getRecordIdsFromFilters] = useExplorerSelectionIdsLazyQuery({\n fetchPolicy: 'no-cache',\n onCompleted: onSelectionCompleted,\n });\n\n const {EditRecordModal, openEditRecordModal} = useEditRecordModal();\n\n return (\n <StyledModal\n className={className}\n open={open}\n onCancel={_handleClose}\n destroyOnClose\n closable={false}\n cancelText={t('global.cancel')}\n width=\"90vw\"\n centered\n footer={_footer}\n >\n <ModalMainStyledDiv ref={explorerContainerRef}>\n <Explorer.EditSettingsContextProvider\n panelElement={() => explorerContainerRef.current ?? document.body}\n >\n <Explorer\n title=\"SelectRecordForLinkModal\"\n entrypoint={{\n type: 'library',\n libraryId: childLibraryId,\n valuesList,\n allowFreeEntry,\n }}\n showCreateOnNoResultOnly\n selectionMode={selectionMode}\n hideSelectAllAction={hideSelectAllAction}\n massActions={\n isMultivalue\n ? [\n {\n label: replacementMode\n ? t('explorer.massAction.replace-link')\n : t('explorer.massAction.add-link'),\n deselectAll: true,\n icon: replacementMode ? (\n <FontAwesomeIcon icon={faExchangeAlt} />\n ) : (\n <FontAwesomeIcon icon={faPlus} />\n ),\n callback: async massSelectionFilter => {\n await getRecordIdsFromFilters({\n variables: {\n libraryId: childLibraryId,\n filters: massSelectionFilter,\n },\n });\n },\n },\n ]\n : []\n }\n defaultCallbacks={\n !isMultivalue\n ? {\n item: {\n select: async items => {\n await getRecordIdsFromFilters({\n variables: {\n libraryId: childLibraryId,\n filters: [\n {\n field: 'id',\n condition: RecordFilterCondition.EQUAL,\n value: items.itemId,\n },\n ],\n },\n });\n },\n },\n }\n : {}\n }\n defaultViewSettings={{\n attributesIds: columnsToDisplay,\n }}\n primaryActions={[]}\n defaultActionsForItem={[]}\n defaultMassActions={[]}\n itemActions={[\n {\n label: t('explorer.edit-item'),\n icon: <FontAwesomeIcon icon={faEye} />,\n useItemActionOnRowClick: true,\n callback: item => {\n openEditRecordModal({\n library: item.libraryId,\n record: {\n id: item.itemId,\n label: item.whoAmI?.label,\n subLabel: item.whoAmI?.subLabel,\n color: item.whoAmI?.color,\n library: {id: item.libraryId},\n },\n editionFormId: 'edition',\n });\n },\n },\n ]}\n defaultPrimaryActions={['create']}\n joinLibraryContext={joinLibraryContext}\n showSearch\n ignoreViewByDefault\n />\n {EditRecordModal}\n {/* TODO: avoid getting last view for user */}\n </Explorer.EditSettingsContextProvider>\n </ModalMainStyledDiv>\n </StyledModal>\n );\n};\n"]}
@@ -1,9 +1,10 @@
1
1
  import { type FunctionComponent } from 'react';
2
- import { type ChildrenAsRecordValuePermissionFilterInput } from '../../_gqlTypes';
2
+ import { type ChildrenAsRecordValuePermissionFilterInput, type DependentValuesPermissionFilterInput } from '../../_gqlTypes';
3
3
  import { type ITreeNodeWithRecord } from '../../types/trees';
4
4
  interface ISelectTreeNodeProps {
5
5
  treeId: string;
6
6
  childrenAsRecordValuePermissionFilter?: ChildrenAsRecordValuePermissionFilterInput;
7
+ dependentValuesPermissionFilter?: DependentValuesPermissionFilterInput;
7
8
  onSelect: (node: ITreeNodeWithRecord, selected: boolean) => void;
8
9
  onCheck?: (selection: ITreeNodeWithRecord[]) => void;
9
10
  selectedNodes?: string[];
@@ -4,12 +4,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
5
5
  import { localizedTranslation } from '@leav/utils';
6
6
  import { useSharedTranslation } from '../../hooks/useSharedTranslation';
7
- import { useTreeDataQueryQuery } from '../../_gqlTypes';
7
+ import { useTreeDataQueryQuery, } from '../../_gqlTypes';
8
8
  import { ErrorDisplay } from '../..';
9
9
  import useLang from '../../hooks/useLang';
10
10
  import { SelectTreeNodeContent } from './SelectTreeNodeContent';
11
11
  import { SelectTreeNodeContentSkeleton } from './SelectTreeNodeContentSkeleton';
12
- export const SelectTreeNode = ({ treeId, childrenAsRecordValuePermissionFilter, onSelect, onCheck, selectedNodes, disabledNodes, selectableLibraries, multiple = false, checkStrictly = true, checkable = false, canSelectRoot = false, loadRecursively = true, noPagination = false, showSelectChildrenButton = false, }) => {
12
+ export const SelectTreeNode = ({ treeId, childrenAsRecordValuePermissionFilter, dependentValuesPermissionFilter, onSelect, onCheck, selectedNodes, disabledNodes, selectableLibraries, multiple = false, checkStrictly = true, checkable = false, canSelectRoot = false, loadRecursively = true, noPagination = false, showSelectChildrenButton = false, }) => {
13
13
  const { lang } = useLang();
14
14
  const { t } = useSharedTranslation();
15
15
  const { loading, error, data } = useTreeDataQueryQuery({
@@ -24,6 +24,6 @@ export const SelectTreeNode = ({ treeId, childrenAsRecordValuePermissionFilter,
24
24
  if (!data?.trees.list[0]) {
25
25
  return _jsx(ErrorDisplay, { message: t('error.unknown_tree', { treeId }) });
26
26
  }
27
- return (_jsx(SelectTreeNodeContent, { treeData: { id: treeId, label: localizedTranslation(data.trees.list[0].label, lang) || treeId }, childrenAsRecordValuePermissionFilter: childrenAsRecordValuePermissionFilter, onCheck: onCheck, onSelect: onSelect, multiple: multiple, checkable: checkable, checkStrictly: checkStrictly, selectedNodes: selectedNodes, disabledNodes: disabledNodes, canSelectRoot: canSelectRoot, selectableLibraries: selectableLibraries, loadRecursively: loadRecursively, noPagination: noPagination, showSelectChildrenButton: showSelectChildrenButton }));
27
+ return (_jsx(SelectTreeNodeContent, { treeData: { id: treeId, label: localizedTranslation(data.trees.list[0].label, lang) || treeId }, childrenAsRecordValuePermissionFilter: childrenAsRecordValuePermissionFilter, dependentValuesPermissionFilter: dependentValuesPermissionFilter, onCheck: onCheck, onSelect: onSelect, multiple: multiple, checkable: checkable, checkStrictly: checkStrictly, selectedNodes: selectedNodes, disabledNodes: disabledNodes, canSelectRoot: canSelectRoot, selectableLibraries: selectableLibraries, loadRecursively: loadRecursively, noPagination: noPagination, showSelectChildrenButton: showSelectChildrenButton }));
28
28
  };
29
29
  //# sourceMappingURL=SelectTreeNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTreeNode.js","sourceRoot":"","sources":["../../../src/components/SelectTreeNode/SelectTreeNode.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAkD,qBAAqB,EAAC,MAAM,eAAe,CAAC;AACrG,OAAO,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AACnC,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAE1C,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAC,6BAA6B,EAAC,MAAM,iCAAiC,CAAC;AAmB9E,MAAM,CAAC,MAAM,cAAc,GAA4C,CAAC,EACpE,MAAM,EACN,qCAAqC,EACrC,QAAQ,EACR,OAAO,EACP,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,QAAQ,GAAG,KAAK,EAChB,aAAa,GAAG,IAAI,EACpB,SAAS,GAAG,KAAK,EACjB,aAAa,GAAG,KAAK,EACrB,eAAe,GAAG,IAAI,EACtB,YAAY,GAAG,KAAK,EACpB,wBAAwB,GAAG,KAAK,GACnC,EAAE,EAAE;IACD,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,EAAE,CAAC;IACzB,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAC,GAAG,qBAAqB,CAAC;QACjD,SAAS,EAAE,EAAC,MAAM,EAAC;KACtB,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,KAAC,6BAA6B,KAAG,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,CAAC,CAAC,oBAAoB,EAAE,EAAC,MAAM,EAAC,CAAC,GAAI,CAAC;IACxE,CAAC;IAED,OAAO,CACH,KAAC,qBAAqB,IAClB,QAAQ,EAAE,EAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,EAAC,EAC7F,qCAAqC,EAAE,qCAAqC,EAC5E,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,wBAAwB,EAAE,wBAAwB,GACpD,CACL,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {localizedTranslation} from '@leav/utils';\nimport {type FunctionComponent} from 'react';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type ChildrenAsRecordValuePermissionFilterInput, useTreeDataQueryQuery} from '_ui/_gqlTypes';\nimport {ErrorDisplay} from '../..';\nimport useLang from '../../hooks/useLang';\nimport {type ITreeNodeWithRecord} from '../../types/trees';\nimport {SelectTreeNodeContent} from './SelectTreeNodeContent';\nimport {SelectTreeNodeContentSkeleton} from './SelectTreeNodeContentSkeleton';\n\ninterface ISelectTreeNodeProps {\n treeId: string;\n childrenAsRecordValuePermissionFilter?: ChildrenAsRecordValuePermissionFilterInput;\n onSelect: (node: ITreeNodeWithRecord, selected: boolean) => void;\n onCheck?: (selection: ITreeNodeWithRecord[]) => void;\n selectedNodes?: string[];\n disabledNodes?: string[];\n selectableLibraries?: string[]; // all by default\n multiple?: boolean;\n checkStrictly?: boolean;\n checkable?: boolean;\n canSelectRoot?: boolean;\n loadRecursively?: boolean;\n noPagination?: boolean;\n showSelectChildrenButton?: boolean;\n}\n\nexport const SelectTreeNode: FunctionComponent<ISelectTreeNodeProps> = ({\n treeId,\n childrenAsRecordValuePermissionFilter,\n onSelect,\n onCheck,\n selectedNodes,\n disabledNodes,\n selectableLibraries,\n multiple = false,\n checkStrictly = true,\n checkable = false,\n canSelectRoot = false,\n loadRecursively = true,\n noPagination = false,\n showSelectChildrenButton = false,\n}) => {\n const {lang} = useLang();\n const {t} = useSharedTranslation();\n const {loading, error, data} = useTreeDataQueryQuery({\n variables: {treeId},\n });\n\n if (loading) {\n return <SelectTreeNodeContentSkeleton />;\n }\n\n if (error) {\n return <ErrorDisplay message={error.message} />;\n }\n\n if (!data?.trees.list[0]) {\n return <ErrorDisplay message={t('error.unknown_tree', {treeId})} />;\n }\n\n return (\n <SelectTreeNodeContent\n treeData={{id: treeId, label: localizedTranslation(data.trees.list[0].label, lang) || treeId}}\n childrenAsRecordValuePermissionFilter={childrenAsRecordValuePermissionFilter}\n onCheck={onCheck}\n onSelect={onSelect}\n multiple={multiple}\n checkable={checkable}\n checkStrictly={checkStrictly}\n selectedNodes={selectedNodes}\n disabledNodes={disabledNodes}\n canSelectRoot={canSelectRoot}\n selectableLibraries={selectableLibraries}\n loadRecursively={loadRecursively}\n noPagination={noPagination}\n showSelectChildrenButton={showSelectChildrenButton}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"SelectTreeNode.js","sourceRoot":"","sources":["../../../src/components/SelectTreeNode/SelectTreeNode.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAGH,qBAAqB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AACnC,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAE1C,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAC,6BAA6B,EAAC,MAAM,iCAAiC,CAAC;AAoB9E,MAAM,CAAC,MAAM,cAAc,GAA4C,CAAC,EACpE,MAAM,EACN,qCAAqC,EACrC,+BAA+B,EAC/B,QAAQ,EACR,OAAO,EACP,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,QAAQ,GAAG,KAAK,EAChB,aAAa,GAAG,IAAI,EACpB,SAAS,GAAG,KAAK,EACjB,aAAa,GAAG,KAAK,EACrB,eAAe,GAAG,IAAI,EACtB,YAAY,GAAG,KAAK,EACpB,wBAAwB,GAAG,KAAK,GACnC,EAAE,EAAE;IACD,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,EAAE,CAAC;IACzB,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAC,GAAG,qBAAqB,CAAC;QACjD,SAAS,EAAE,EAAC,MAAM,EAAC;KACtB,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,KAAC,6BAA6B,KAAG,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,CAAC,CAAC,oBAAoB,EAAE,EAAC,MAAM,EAAC,CAAC,GAAI,CAAC;IACxE,CAAC;IAED,OAAO,CACH,KAAC,qBAAqB,IAClB,QAAQ,EAAE,EAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,EAAC,EAC7F,qCAAqC,EAAE,qCAAqC,EAC5E,+BAA+B,EAAE,+BAA+B,EAChE,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,wBAAwB,EAAE,wBAAwB,GACpD,CACL,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {localizedTranslation} from '@leav/utils';\nimport {type FunctionComponent} from 'react';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n type ChildrenAsRecordValuePermissionFilterInput,\n type DependentValuesPermissionFilterInput,\n useTreeDataQueryQuery,\n} from '_ui/_gqlTypes';\nimport {ErrorDisplay} from '../..';\nimport useLang from '../../hooks/useLang';\nimport {type ITreeNodeWithRecord} from '../../types/trees';\nimport {SelectTreeNodeContent} from './SelectTreeNodeContent';\nimport {SelectTreeNodeContentSkeleton} from './SelectTreeNodeContentSkeleton';\n\ninterface ISelectTreeNodeProps {\n treeId: string;\n childrenAsRecordValuePermissionFilter?: ChildrenAsRecordValuePermissionFilterInput;\n dependentValuesPermissionFilter?: DependentValuesPermissionFilterInput;\n onSelect: (node: ITreeNodeWithRecord, selected: boolean) => void;\n onCheck?: (selection: ITreeNodeWithRecord[]) => void;\n selectedNodes?: string[];\n disabledNodes?: string[];\n selectableLibraries?: string[]; // all by default\n multiple?: boolean;\n checkStrictly?: boolean;\n checkable?: boolean;\n canSelectRoot?: boolean;\n loadRecursively?: boolean;\n noPagination?: boolean;\n showSelectChildrenButton?: boolean;\n}\n\nexport const SelectTreeNode: FunctionComponent<ISelectTreeNodeProps> = ({\n treeId,\n childrenAsRecordValuePermissionFilter,\n dependentValuesPermissionFilter,\n onSelect,\n onCheck,\n selectedNodes,\n disabledNodes,\n selectableLibraries,\n multiple = false,\n checkStrictly = true,\n checkable = false,\n canSelectRoot = false,\n loadRecursively = true,\n noPagination = false,\n showSelectChildrenButton = false,\n}) => {\n const {lang} = useLang();\n const {t} = useSharedTranslation();\n const {loading, error, data} = useTreeDataQueryQuery({\n variables: {treeId},\n });\n\n if (loading) {\n return <SelectTreeNodeContentSkeleton />;\n }\n\n if (error) {\n return <ErrorDisplay message={error.message} />;\n }\n\n if (!data?.trees.list[0]) {\n return <ErrorDisplay message={t('error.unknown_tree', {treeId})} />;\n }\n\n return (\n <SelectTreeNodeContent\n treeData={{id: treeId, label: localizedTranslation(data.trees.list[0].label, lang) || treeId}}\n childrenAsRecordValuePermissionFilter={childrenAsRecordValuePermissionFilter}\n dependentValuesPermissionFilter={dependentValuesPermissionFilter}\n onCheck={onCheck}\n onSelect={onSelect}\n multiple={multiple}\n checkable={checkable}\n checkStrictly={checkStrictly}\n selectedNodes={selectedNodes}\n disabledNodes={disabledNodes}\n canSelectRoot={canSelectRoot}\n selectableLibraries={selectableLibraries}\n loadRecursively={loadRecursively}\n noPagination={noPagination}\n showSelectChildrenButton={showSelectChildrenButton}\n />\n );\n};\n"]}
@@ -1,12 +1,13 @@
1
1
  import { type FunctionComponent } from 'react';
2
2
  import { type ITreeNodeWithRecord } from '../../types';
3
- import { type ChildrenAsRecordValuePermissionFilterInput } from '../../_gqlTypes';
3
+ import { type ChildrenAsRecordValuePermissionFilterInput, type DependentValuesPermissionFilterInput } from '../../_gqlTypes';
4
4
  interface ISelectTreeNodeContentProps {
5
5
  treeData: {
6
6
  id: string;
7
7
  label: string;
8
8
  };
9
9
  childrenAsRecordValuePermissionFilter?: ChildrenAsRecordValuePermissionFilterInput;
10
+ dependentValuesPermissionFilter?: DependentValuesPermissionFilterInput;
10
11
  selectedNodes?: string[];
11
12
  disabledNodes?: string[];
12
13
  onSelect: (node: ITreeNodeWithRecord, selected: boolean) => void;
@@ -5,12 +5,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
5
5
  import { useEffect, useState } from 'react';
6
6
  import { KitTree } from 'aristid-ds';
7
7
  import { Spin } from 'antd';
8
- import { useTreeNodeChildrenLazyQuery } from '../../_gqlTypes';
8
+ import { useTreeNodeChildrenLazyQuery, } from '../../_gqlTypes';
9
9
  import { defaultPaginationPageSize, ErrorDisplay } from '../../index';
10
10
  import { TreeNodeTitle } from './TreeNodeTitle';
11
11
  import { _isObjectSelection } from './_types';
12
12
  import { useSharedTranslation } from '../../hooks/useSharedTranslation';
13
- export const SelectTreeNodeContent = ({ treeData: tree, childrenAsRecordValuePermissionFilter, onSelect, onCheck, selectedNodes = [], disabledNodes = [], multiple = false, checkable = false, checkStrictly = true, canSelectRoot = false, selectableLibraries, loadRecursively = true, noPagination = false, showSelectChildrenButton = false, }) => {
13
+ export const SelectTreeNodeContent = ({ treeData: tree, childrenAsRecordValuePermissionFilter, dependentValuesPermissionFilter, onSelect, onCheck, selectedNodes = [], disabledNodes = [], multiple = false, checkable = false, checkStrictly = true, canSelectRoot = false, selectableLibraries, loadRecursively = true, noPagination = false, showSelectChildrenButton = false, }) => {
14
14
  const { t } = useSharedTranslation();
15
15
  const rootNode = {
16
16
  title: tree.label,
@@ -32,6 +32,9 @@ export const SelectTreeNodeContent = ({ treeData: tree, childrenAsRecordValuePer
32
32
  const _fetchTreeContent = async (parentNodeKey, offset = 0, currentTreeMap = { ...treeMap }) => {
33
33
  try {
34
34
  const { data: { treeNodeChildren }, } = await loadTreeContent({
35
+ // If dependentValuesPermissionFilter is set, we need to bypass the cache to get up-to-date data,
36
+ // because tree content depends on record values that may have changed
37
+ fetchPolicy: dependentValuesPermissionFilter ? 'no-cache' : undefined,
35
38
  variables: {
36
39
  treeId: tree.id,
37
40
  node: parentNodeKey && parentNodeKey !== tree.id ? parentNodeKey : null,
@@ -42,6 +45,7 @@ export const SelectTreeNodeContent = ({ treeData: tree, childrenAsRecordValuePer
42
45
  offset,
43
46
  },
44
47
  childrenAsRecordValuePermissionFilter,
48
+ dependentValuesPermissionFilter,
45
49
  },
46
50
  });
47
51
  const parentMapKey = parentNodeKey ?? tree.id;