@leav/ui 1.6.0 → 1.7.0-178015c1

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 (275) hide show
  1. package/README.md +13 -12
  2. package/dist/__mocks__/react-i18next.d.ts +1 -1
  3. package/dist/_gqlTypes/index.d.ts +1006 -686
  4. package/dist/_gqlTypes/index.js +167 -43
  5. package/dist/_gqlTypes/index.js.map +1 -1
  6. package/dist/_queries/attributes/attributeDetailsFragment.js +5 -0
  7. package/dist/_queries/attributes/attributeDetailsFragment.js.map +1 -1
  8. package/dist/_queries/trees/treeNodeChildrenQuery.js +2 -0
  9. package/dist/_queries/trees/treeNodeChildrenQuery.js.map +1 -1
  10. package/dist/_queries/views/viewDetailsFragment.js +1 -0
  11. package/dist/_queries/views/viewDetailsFragment.js.map +1 -1
  12. package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js +20 -12
  13. package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js.map +1 -1
  14. package/dist/components/AttributesSelectionList/reducer/__mocks__/attributesSelectionListStateContext.d.ts +1 -1
  15. package/dist/components/AttributesSelectionList/sharedComponents.d.ts +159 -153
  16. package/dist/components/Explorer/DataView.d.ts +2 -0
  17. package/dist/components/Explorer/DataView.js +6 -3
  18. package/dist/components/Explorer/DataView.js.map +1 -1
  19. package/dist/components/Explorer/Explorer.d.ts +2 -0
  20. package/dist/components/Explorer/Explorer.js +7 -5
  21. package/dist/components/Explorer/Explorer.js.map +1 -1
  22. package/dist/components/Explorer/ExplorerFiltersAndSorts.js +1 -1
  23. package/dist/components/Explorer/ExplorerFiltersAndSorts.js.map +1 -1
  24. package/dist/components/Explorer/TableCell.js +6 -7
  25. package/dist/components/Explorer/TableCell.js.map +1 -1
  26. package/dist/components/Explorer/TableNameCell.js +3 -2
  27. package/dist/components/Explorer/TableNameCell.js.map +1 -1
  28. package/dist/components/Explorer/_queries/useExplorerData.d.ts +7 -7
  29. package/dist/components/Explorer/_queries/useExplorerData.js +19 -7
  30. package/dist/components/Explorer/_queries/useExplorerData.js.map +1 -1
  31. package/dist/components/Explorer/actions-item/useEditStatusItemAction.js +3 -2
  32. package/dist/components/Explorer/actions-item/useEditStatusItemAction.js.map +1 -1
  33. package/dist/components/Explorer/actions-item/useReplaceItemAction.d.ts +2 -1
  34. package/dist/components/Explorer/actions-item/useReplaceItemAction.js +5 -4
  35. package/dist/components/Explorer/actions-item/useReplaceItemAction.js.map +1 -1
  36. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.d.ts +2 -4
  37. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js +18 -16
  38. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js.map +1 -1
  39. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js +2 -2
  40. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js.map +1 -1
  41. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js +9 -1
  42. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js.map +1 -1
  43. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.d.ts +10 -3
  44. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js +16 -6
  45. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js.map +1 -1
  46. package/dist/components/Explorer/actions-mass/export/ExportProfileSelectionModal.d.ts +10 -0
  47. package/dist/components/Explorer/actions-mass/export/ExportProfileSelectionModal.js +46 -0
  48. package/dist/components/Explorer/actions-mass/export/ExportProfileSelectionModal.js.map +1 -0
  49. package/dist/components/Explorer/actions-mass/export/content/NoProfiles.d.ts +1 -0
  50. package/dist/components/Explorer/actions-mass/export/content/NoProfiles.js +17 -0
  51. package/dist/components/Explorer/actions-mass/export/content/NoProfiles.js.map +1 -0
  52. package/dist/components/Explorer/actions-mass/export/content/ProfilesSelection.d.ts +8 -0
  53. package/dist/components/Explorer/actions-mass/export/content/ProfilesSelection.js +49 -0
  54. package/dist/components/Explorer/actions-mass/export/content/ProfilesSelection.js.map +1 -0
  55. package/dist/components/Explorer/actions-mass/export/useGetLibraryExportProfiles.d.ts +27 -0
  56. package/dist/components/Explorer/actions-mass/export/useGetLibraryExportProfiles.js +48 -0
  57. package/dist/components/Explorer/actions-mass/export/useGetLibraryExportProfiles.js.map +1 -0
  58. package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js +3 -2
  59. package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js.map +1 -1
  60. package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js +3 -2
  61. package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js.map +1 -1
  62. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js +3 -2
  63. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js.map +1 -1
  64. package/dist/components/Explorer/actions-mass/useExportMassAction.d.ts +7 -4
  65. package/dist/components/Explorer/actions-mass/useExportMassAction.js +80 -73
  66. package/dist/components/Explorer/actions-mass/useExportMassAction.js.map +1 -1
  67. package/dist/components/Explorer/actions-mass/useMassActions.js +3 -2
  68. package/dist/components/Explorer/actions-mass/useMassActions.js.map +1 -1
  69. package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.js +3 -2
  70. package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.js.map +1 -1
  71. package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.d.ts +2 -1
  72. package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.js +5 -4
  73. package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.js.map +1 -1
  74. package/dist/components/Explorer/link-item/LinkModal.d.ts +1 -0
  75. package/dist/components/Explorer/link-item/LinkModal.js +2 -2
  76. package/dist/components/Explorer/link-item/LinkModal.js.map +1 -1
  77. package/dist/components/Explorer/list-saved-views/SavedViews.js +4 -3
  78. package/dist/components/Explorer/list-saved-views/SavedViews.js.map +1 -1
  79. package/dist/components/Explorer/manage-view-settings/_shared/ColumnItem.js +5 -8
  80. package/dist/components/Explorer/manage-view-settings/_shared/ColumnItem.js.map +1 -1
  81. package/dist/components/Explorer/manage-view-settings/configure-display/attributes/SelectVisibleAttributes.js +3 -2
  82. package/dist/components/Explorer/manage-view-settings/configure-display/attributes/SelectVisibleAttributes.js.map +1 -1
  83. package/dist/components/Explorer/manage-view-settings/filter-items/FilterItems.js +7 -6
  84. package/dist/components/Explorer/manage-view-settings/filter-items/FilterItems.js.map +1 -1
  85. package/dist/components/Explorer/manage-view-settings/filter-items/FilterListItem.js +3 -2
  86. package/dist/components/Explorer/manage-view-settings/filter-items/FilterListItem.js.map +1 -1
  87. package/dist/components/Explorer/manage-view-settings/open-view-settings/useOpenViewSettings.js +4 -3
  88. package/dist/components/Explorer/manage-view-settings/open-view-settings/useOpenViewSettings.js.map +1 -1
  89. package/dist/components/Explorer/manage-view-settings/router-menu/SettingItem.js +3 -2
  90. package/dist/components/Explorer/manage-view-settings/router-menu/SettingItem.js.map +1 -1
  91. package/dist/components/Explorer/manage-view-settings/router-menu/SettingsPanel.js +3 -2
  92. package/dist/components/Explorer/manage-view-settings/router-menu/SettingsPanel.js.map +1 -1
  93. package/dist/components/Explorer/manage-view-settings/save-view/LabelViewFormModal.js +3 -2
  94. package/dist/components/Explorer/manage-view-settings/save-view/LabelViewFormModal.js.map +1 -1
  95. package/dist/components/Explorer/manage-view-settings/save-view/prepareViewForRequest.js +3 -0
  96. package/dist/components/Explorer/manage-view-settings/save-view/prepareViewForRequest.js.map +1 -1
  97. package/dist/components/Explorer/manage-view-settings/save-view/useCreateNewView.js +3 -2
  98. package/dist/components/Explorer/manage-view-settings/save-view/useCreateNewView.js.map +1 -1
  99. package/dist/components/Explorer/manage-view-settings/save-view/useDeleteView.js +4 -3
  100. package/dist/components/Explorer/manage-view-settings/save-view/useDeleteView.js.map +1 -1
  101. package/dist/components/Explorer/manage-view-settings/save-view/useEditLabelView.js +3 -2
  102. package/dist/components/Explorer/manage-view-settings/save-view/useEditLabelView.js.map +1 -1
  103. package/dist/components/Explorer/manage-view-settings/save-view/useResetView.js +3 -2
  104. package/dist/components/Explorer/manage-view-settings/save-view/useResetView.js.map +1 -1
  105. package/dist/components/Explorer/manage-view-settings/save-view/useShareView.js +3 -2
  106. package/dist/components/Explorer/manage-view-settings/save-view/useShareView.js.map +1 -1
  107. package/dist/components/Explorer/manage-view-settings/save-view/useUpdateView.js +3 -2
  108. package/dist/components/Explorer/manage-view-settings/save-view/useUpdateView.js.map +1 -1
  109. package/dist/components/Explorer/manage-view-settings/sort-items/SortItems.js +7 -6
  110. package/dist/components/Explorer/manage-view-settings/sort-items/SortItems.js.map +1 -1
  111. package/dist/components/Explorer/manage-view-settings/sort-items/SortListItem.js +3 -2
  112. package/dist/components/Explorer/manage-view-settings/sort-items/SortListItem.js.map +1 -1
  113. package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.js.map +1 -1
  114. package/dist/components/Explorer/useSearchInput.js +6 -2
  115. package/dist/components/Explorer/useSearchInput.js.map +1 -1
  116. package/dist/components/Filters/FiltersProvider.d.ts +2 -2
  117. package/dist/components/Filters/FiltersProvider.js.map +1 -1
  118. package/dist/components/Filters/_types.d.ts +3 -0
  119. package/dist/components/Filters/_types.js.map +1 -1
  120. package/dist/components/Filters/context/filtersReducer.js +7 -4
  121. package/dist/components/Filters/context/filtersReducer.js.map +1 -1
  122. package/dist/components/Filters/filter-items/CommonFilterItem.d.ts +1 -0
  123. package/dist/components/Filters/filter-items/CommonFilterItem.js +28 -8
  124. package/dist/components/Filters/filter-items/CommonFilterItem.js.map +1 -1
  125. package/dist/components/Filters/filter-items/EmptyValueCheckbox.d.ts +8 -0
  126. package/dist/components/Filters/filter-items/EmptyValueCheckbox.js +16 -0
  127. package/dist/components/Filters/filter-items/EmptyValueCheckbox.js.map +1 -0
  128. package/dist/components/Filters/filter-items/filter-type/BooleanAttributeDropdown.js +23 -9
  129. package/dist/components/Filters/filter-items/filter-type/BooleanAttributeDropdown.js.map +1 -1
  130. package/dist/components/Filters/filter-items/filter-type/ColorAttributeDropDown.js +9 -8
  131. package/dist/components/Filters/filter-items/filter-type/ColorAttributeDropDown.js.map +1 -1
  132. package/dist/components/Filters/filter-items/filter-type/FilterDropDown.js +4 -3
  133. package/dist/components/Filters/filter-items/filter-type/FilterDropDown.js.map +1 -1
  134. package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js +1 -1
  135. package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js.map +1 -1
  136. package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.d.ts +0 -1
  137. package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.js +17 -23
  138. package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.js.map +1 -1
  139. package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js +10 -12
  140. package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js.map +1 -1
  141. package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js +3 -13
  142. package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js.map +1 -1
  143. package/dist/components/Filters/index.d.ts +1 -0
  144. package/dist/components/Filters/index.js +1 -0
  145. package/dist/components/Filters/index.js.map +1 -1
  146. package/dist/components/Filters/prepareFiltersForRequest.js +36 -3
  147. package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
  148. package/dist/components/Filters/useFilters.d.ts +5 -0
  149. package/dist/components/Filters/useTransformFilters.js +4 -0
  150. package/dist/components/Filters/useTransformFilters.js.map +1 -1
  151. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.d.ts +1 -3
  152. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js +6 -2
  153. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js.map +1 -1
  154. package/dist/components/LibraryItemsList/FiltersPanel/FiltersOptions.js +1 -8
  155. package/dist/components/LibraryItemsList/FiltersPanel/FiltersOptions.js.map +1 -1
  156. package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js +15 -17
  157. package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js.map +1 -1
  158. package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js +0 -6
  159. package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js.map +1 -1
  160. package/dist/components/LibraryItemsList/MenuView/MenuView.js +4 -4
  161. package/dist/components/LibraryItemsList/MenuView/MenuView.js.map +1 -1
  162. package/dist/components/LibraryItemsList/ViewPanel/View/View.d.ts +1 -3
  163. package/dist/components/LibraryItemsList/ViewPanel/View/View.js +9 -4
  164. package/dist/components/LibraryItemsList/ViewPanel/View/View.js.map +1 -1
  165. package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js +36 -14
  166. package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js.map +1 -1
  167. package/dist/components/Notifications/hooks/useNotificationSubscription.js +3 -2
  168. package/dist/components/Notifications/hooks/useNotificationSubscription.js.map +1 -1
  169. package/dist/components/RecordEdition/EditRecord/EditRecord.d.ts +1 -0
  170. package/dist/components/RecordEdition/EditRecord/EditRecord.js +3 -3
  171. package/dist/components/RecordEdition/EditRecord/EditRecord.js.map +1 -1
  172. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
  173. package/dist/components/RecordEdition/EditRecordContent/hooks/__mocks__/useDeleteValueMutation.d.ts +1 -1
  174. package/dist/components/RecordEdition/EditRecordContent/hooks/__mocks__/useSaveValueMutation.d.ts +1 -1
  175. package/dist/components/RecordEdition/EditRecordContent/shared/ValuesVersionBtn/ValuesVersionBtn.js +5 -20
  176. package/dist/components/RecordEdition/EditRecordContent/shared/ValuesVersionBtn/ValuesVersionBtn.js.map +1 -1
  177. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.d.ts +1 -11
  178. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js +8 -95
  179. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js.map +1 -1
  180. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/_types.d.ts +8 -0
  181. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/_types.js +2 -0
  182. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/_types.js.map +1 -0
  183. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/LinkFieldExplorer.d.ts +6 -0
  184. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/LinkFieldExplorer.js +77 -0
  185. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/LinkFieldExplorer.js.map +1 -0
  186. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/{link-record → explorer/link-record}/useExplorerLinkRecords.d.ts +5 -7
  187. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/{link-record → explorer/link-record}/useExplorerLinkRecords.js +3 -10
  188. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/link-record/useExplorerLinkRecords.js.map +1 -0
  189. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/{link-record → explorer/link-record}/useLinkRecords.d.ts +5 -6
  190. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/link-record/useLinkRecords.js +98 -0
  191. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/link-record/useLinkRecords.js.map +1 -0
  192. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/{ExplorerWrapper.d.ts → InputExtraAlignLeft.d.ts} +54 -52
  193. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/{link-record/ActionButton.js → shared/InputExtraAlignLeft.js} +4 -4
  194. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/InputExtraAlignLeft.js.map +1 -0
  195. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/InputWrapper.d.ts +3 -0
  196. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/InputWrapper.js +31 -0
  197. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/InputWrapper.js.map +1 -0
  198. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/Wrapper.d.ts +3 -0
  199. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/Wrapper.js +8 -0
  200. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/Wrapper.js.map +1 -0
  201. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/LinkFieldTags.d.ts +3 -0
  202. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/LinkFieldTags.js +57 -0
  203. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/LinkFieldTags.js.map +1 -0
  204. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.d.ts +16 -0
  205. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.js +82 -0
  206. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.js.map +1 -0
  207. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/unlink-record/useUnlinkRecord.d.ts +19 -0
  208. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/unlink-record/useUnlinkRecord.js +43 -0
  209. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/unlink-record/useUnlinkRecord.js.map +1 -0
  210. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/unlink-all-records/useUnlinkAllRecords.d.ts +16 -0
  211. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/unlink-all-records/useUnlinkAllRecords.js +27 -0
  212. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/unlink-all-records/useUnlinkAllRecords.js.map +1 -0
  213. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js +4 -3
  214. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js.map +1 -1
  215. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js +9 -2
  216. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js.map +1 -1
  217. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeFieldWrapper.d.ts +53 -51
  218. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeItem.js +3 -2
  219. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeItem.js.map +1 -1
  220. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.d.ts +2 -1
  221. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.js +4 -7
  222. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.js.map +1 -1
  223. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.d.ts +3 -2
  224. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.js +2 -2
  225. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.js.map +1 -1
  226. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js +3 -2
  227. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js.map +1 -1
  228. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.d.ts +1 -0
  229. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js +2 -2
  230. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js.map +1 -1
  231. package/dist/components/RecordEdition/EditRecordSidebar/RecordSummary/RecordInformations/RecordInformations.js +3 -2
  232. package/dist/components/RecordEdition/EditRecordSidebar/RecordSummary/RecordInformations/RecordInformations.js.map +1 -1
  233. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js +4 -3
  234. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js.map +1 -1
  235. package/dist/components/RecordEdition/EditRecordSidebar/ValuesVersions/ValuesVersions.js +3 -2
  236. package/dist/components/RecordEdition/EditRecordSidebar/ValuesVersions/ValuesVersions.js.map +1 -1
  237. package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js +2 -2
  238. package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js.map +1 -1
  239. package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.d.ts +1 -0
  240. package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.js +7 -7
  241. package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.js.map +1 -1
  242. package/dist/components/SelectTreeNode/SelectTreeNode.d.ts +2 -1
  243. package/dist/components/SelectTreeNode/SelectTreeNode.js +3 -3
  244. package/dist/components/SelectTreeNode/SelectTreeNode.js.map +1 -1
  245. package/dist/components/SelectTreeNode/SelectTreeNodeContent.d.ts +2 -1
  246. package/dist/components/SelectTreeNode/SelectTreeNodeContent.js +6 -2
  247. package/dist/components/SelectTreeNode/SelectTreeNodeContent.js.map +1 -1
  248. package/dist/components/SelectTreeNode/TreeNodeTitle.js +3 -2
  249. package/dist/components/SelectTreeNode/TreeNodeTitle.js.map +1 -1
  250. package/dist/constants.d.ts +1 -0
  251. package/dist/constants.js +1 -0
  252. package/dist/constants.js.map +1 -1
  253. package/dist/hooks/useIFrameMessenger/messageHandlers.d.ts +3 -1
  254. package/dist/hooks/useIFrameMessenger/messageHandlers.js +16 -0
  255. package/dist/hooks/useIFrameMessenger/messageHandlers.js.map +1 -1
  256. package/dist/hooks/useIFrameMessenger/schema.d.ts +6 -3
  257. package/dist/hooks/useIFrameMessenger/schema.js +2 -1
  258. package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
  259. package/dist/hooks/useIFrameMessenger/types.d.ts +32 -2
  260. package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
  261. package/dist/hooks/useIFrameMessenger/useIFrameMessenger.d.ts +2 -0
  262. package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js +16 -2
  263. package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js.map +1 -1
  264. package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.d.ts +2 -0
  265. package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.d.ts +2 -0
  266. package/dist/locales/en/shared.json +18 -3
  267. package/dist/locales/fr/shared.json +18 -3
  268. package/package.json +40 -42
  269. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/ActionButton.d.ts +0 -3
  270. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/ActionButton.js.map +0 -1
  271. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useExplorerLinkRecords.js.map +0 -1
  272. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useLinkRecords.js +0 -100
  273. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useLinkRecords.js.map +0 -1
  274. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/ExplorerWrapper.js +0 -13
  275. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/ExplorerWrapper.js.map +0 -1
@@ -108,9 +108,39 @@ const _generateConditionsFromMultipleValues = (filter) => {
108
108
  });
109
109
  return filtersWithOperators;
110
110
  };
111
+ const _addEmptyCondition = (baseConditions, filter) => {
112
+ if (!filter.withEmptyValues) {
113
+ return baseConditions;
114
+ }
115
+ const hasValue = filter.value !== null &&
116
+ filter.value !== undefined &&
117
+ (!Array.isArray(filter.value) || filter.value.length > 0);
118
+ // patch because field contains multiple informations & can be empty
119
+ const field = (Array.isArray(filter.field) ? filter.field[0] : filter.field) || filter.attribute.id;
120
+ const emptyCondition = {
121
+ field,
122
+ condition: RecordFilterCondition.IS_EMPTY,
123
+ value: null,
124
+ };
125
+ if (!hasValue) {
126
+ return [emptyCondition];
127
+ }
128
+ else {
129
+ return [
130
+ { operator: RecordFilterOperator.OPEN_BRACKET },
131
+ ...baseConditions,
132
+ { operator: RecordFilterOperator.OR },
133
+ emptyCondition,
134
+ { operator: RecordFilterOperator.CLOSE_BRACKET },
135
+ ];
136
+ }
137
+ };
111
138
  export const prepareFiltersForRequest = (filters, filtersOperator, valuesList) => {
112
139
  const interleaveFilter = interleaveElement({ operator: filtersOperator === 'OR' ? RecordFilterOperator.OR : RecordFilterOperator.AND }, filters
113
140
  .filter(filter => {
141
+ if (filter.withEmptyValues) {
142
+ return true;
143
+ }
114
144
  if (isUIFilterThrough(filter)) {
115
145
  return (filter.subField &&
116
146
  filter.subCondition &&
@@ -140,15 +170,17 @@ export const prepareFiltersForRequest = (filters, filtersOperator, valuesList) =
140
170
  //@ts-ignore typscript does not recognize filter as a UIFilter
141
171
  if (isUIFilterValueList(filter) || isUIFilterTree(filter)) {
142
172
  if (filter.condition && nullValueConditions.includes(filter.condition)) {
143
- return [
173
+ const baseConditions = [
144
174
  {
145
175
  field: Array.isArray(filter.field) ? filter.field[0] : filter.field,
146
176
  condition: filter.condition,
147
177
  value: null,
148
178
  },
149
179
  ];
180
+ return _addEmptyCondition(baseConditions, filter);
150
181
  }
151
- return _generateConditionsFromMultipleValues(filter);
182
+ const baseConditions = _generateConditionsFromMultipleValues(filter);
183
+ return _addEmptyCondition(baseConditions, filter);
152
184
  }
153
185
  if (isUIFilterStandard(filter)) {
154
186
  switch (filter.attribute.format) {
@@ -160,13 +192,14 @@ export const prepareFiltersForRequest = (filters, filtersOperator, valuesList) =
160
192
  break;
161
193
  }
162
194
  }
163
- return [
195
+ const baseConditions = [
164
196
  {
165
197
  field: filter.field,
166
198
  condition: filter.condition,
167
199
  value: filter.value,
168
200
  },
169
201
  ];
202
+ return _addEmptyCondition(baseConditions, filter);
170
203
  }));
171
204
  return [
172
205
  ...interleaveFilter,
@@ -1 +1 @@
1
- {"version":3,"file":"prepareFiltersForRequest.js","sourceRoot":"","sources":["../../../src/components/Filters/prepareFiltersForRequest.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 dayjs from 'dayjs';\nimport {AttributeFormat, RecordFilterCondition, type RecordFilterInput, RecordFilterOperator} from '_ui/_gqlTypes';\nimport {interleaveElement} from '_ui/_utils/interleaveElement';\nimport {AttributeConditionFilter} from '_ui/types';\nimport {\n type UIFilter,\n type IUIFilterStandard,\n type IUIFilterTree,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n type IUIFilterValueList,\n type FiltersOperator,\n isUIFilterLinkWithValueList,\n} from './_types';\nimport {nullValueConditions} from './conditionsHelper';\n\nexport const dateValuesSeparator = '\\n';\n\nconst _getDateAtNoon = (date: number): string => dayjs.unix(Number(date)).add(12, 'hour').unix().toString();\n\nconst _getDateRequestFilters = ({field, condition, value}: IUIFilterStandard): RecordFilterInput[] => {\n switch (condition) {\n case RecordFilterCondition.BETWEEN:\n const [from, to] = value!.split(dateValuesSeparator);\n return [\n {\n field,\n condition,\n value: JSON.stringify({\n from,\n to,\n }),\n },\n ];\n case RecordFilterCondition.NOT_EQUAL:\n return [\n {\n field,\n condition: RecordFilterCondition.NOT_EQUAL,\n value: _getDateAtNoon(Number(value)),\n },\n ];\n case RecordFilterCondition.EQUAL:\n return [\n {\n field,\n condition,\n value: _getDateAtNoon(Number(value)),\n },\n ];\n default:\n return [\n {\n field,\n condition,\n value,\n },\n ];\n }\n};\n\nconst _getBooleanRequestFilters = (filter: IUIFilterStandard): RecordFilterInput[] => {\n if (filter.value === 'false') {\n return [\n {\n field: filter.field,\n condition: AttributeConditionFilter.NOT_EQUAL,\n value: 'true',\n },\n ];\n }\n\n return [{field: filter.field, condition: filter.condition, value: filter.value}];\n};\n\nconst _addValuesListForFilters = (valuesList: string[]): RecordFilterInput[] => [\n {operator: RecordFilterOperator.OPEN_BRACKET},\n ...(interleaveElement(\n {operator: RecordFilterOperator.OR},\n valuesList.map(value => [\n {\n field: 'id',\n condition: AttributeConditionFilter.EQUAL,\n value,\n },\n ]),\n ) as RecordFilterInput[]),\n {operator: RecordFilterOperator.CLOSE_BRACKET},\n];\n\nconst _generateConditionsFromMultipleValues = (filter: IUIFilterTree | IUIFilterValueList): RecordFilterInput[] => {\n if (!filter.value || filter.value.length === 0) {\n return [];\n }\n const filtersWithOperators: RecordFilterInput[] = [];\n filter.value.forEach((recordId, idx) => {\n if (idx === 0 && filter.value && filter.value.length > 1) {\n filtersWithOperators.push({operator: RecordFilterOperator.OPEN_BRACKET});\n }\n if (isUIFilterTree(filter) && filter.nodes && filter.nodes.length > 0) {\n filtersWithOperators.push({\n value: recordId,\n condition: filter.condition,\n field: `${filter.attribute.id}.${filter.nodes[0].libraryId}.id`,\n });\n } else {\n filtersWithOperators.push({\n value: recordId,\n condition: filter.condition,\n field: Array.isArray(filter.field) ? filter.field[idx] : filter.field,\n });\n }\n if (filter.value && idx < filter.value.length - 1) {\n filtersWithOperators.push({\n operator:\n filter.condition === RecordFilterCondition.NOT_EQUAL\n ? RecordFilterOperator.AND\n : RecordFilterOperator.OR,\n });\n }\n if (filter.value && filter.value.length > 1 && idx >= filter.value.length - 1) {\n filtersWithOperators.push({operator: RecordFilterOperator.CLOSE_BRACKET});\n }\n });\n return filtersWithOperators;\n};\n\nexport const prepareFiltersForRequest = (\n filters: UIFilter[],\n filtersOperator?: FiltersOperator,\n valuesList?: string[],\n): RecordFilterInput[] => {\n const interleaveFilter = interleaveElement(\n {operator: filtersOperator === 'OR' ? RecordFilterOperator.OR : RecordFilterOperator.AND},\n filters\n .filter(filter => {\n if (isUIFilterThrough(filter)) {\n return (\n filter.subField &&\n filter.subCondition &&\n (filter.value !== null || nullValueConditions.includes(filter.subCondition))\n );\n }\n\n if (isUIFilterValueList(filter)) {\n return (\n (!!filter.condition && filter.value?.length) ||\n (filter.condition && nullValueConditions.includes(filter.condition))\n );\n }\n\n return filter.value !== null || (filter.condition && nullValueConditions.includes(filter.condition));\n })\n .map(filter => {\n if (isUIFilterTree(filter)) {\n return filter;\n }\n const condition =\n filter.condition === AttributeConditionFilter.THROUGH ? filter.subCondition : filter.condition;\n let field =\n filter.condition === AttributeConditionFilter.THROUGH\n ? `${filter.field}.${filter.subField}`\n : filter.field;\n\n // When a link attribute has a values list, we must filter on the linked record id\n if (isUIFilterLinkWithValueList(filter) && typeof field === 'string' && !field.endsWith('.id')) {\n field = `${field}.id`;\n }\n\n return {...filter, condition, field};\n })\n .map(filter => {\n //@ts-ignore typscript does not recognize filter as a UIFilter\n if (isUIFilterValueList(filter) || isUIFilterTree(filter)) {\n if (filter.condition && nullValueConditions.includes(filter.condition)) {\n return [\n {\n field: Array.isArray(filter.field) ? filter.field[0] : filter.field,\n condition: filter.condition,\n value: null,\n },\n ];\n }\n return _generateConditionsFromMultipleValues(filter as IUIFilterTree | IUIFilterValueList);\n }\n\n if (isUIFilterStandard(filter as UIFilter)) {\n switch (filter.attribute.format) {\n case AttributeFormat.date:\n return _getDateRequestFilters(filter as IUIFilterStandard);\n case AttributeFormat.boolean:\n return _getBooleanRequestFilters(filter as IUIFilterStandard);\n default:\n break;\n }\n }\n return [\n {\n field: filter.field as string,\n condition: filter.condition,\n value: filter.value,\n },\n ];\n }),\n );\n\n return [\n ...interleaveFilter,\n ...(interleaveFilter.length > 0 && valuesList ? [{operator: RecordFilterOperator.AND}] : []),\n ...(valuesList ? _addValuesListForFilters(valuesList) : []),\n ];\n};\n"]}
1
+ {"version":3,"file":"prepareFiltersForRequest.js","sourceRoot":"","sources":["../../../src/components/Filters/prepareFiltersForRequest.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 dayjs from 'dayjs';\nimport {AttributeFormat, RecordFilterCondition, type RecordFilterInput, RecordFilterOperator} from '_ui/_gqlTypes';\nimport {interleaveElement} from '_ui/_utils/interleaveElement';\nimport {AttributeConditionFilter} from '_ui/types';\nimport {\n type UIFilter,\n type IUIFilterStandard,\n type IUIFilterTree,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n type IUIFilterValueList,\n type FiltersOperator,\n isUIFilterLinkWithValueList,\n} from './_types';\nimport {nullValueConditions} from './conditionsHelper';\n\nexport const dateValuesSeparator = '\\n';\n\nconst _getDateAtNoon = (date: number): string => dayjs.unix(Number(date)).add(12, 'hour').unix().toString();\n\nconst _getDateRequestFilters = ({field, condition, value}: IUIFilterStandard): RecordFilterInput[] => {\n switch (condition) {\n case RecordFilterCondition.BETWEEN:\n const [from, to] = value!.split(dateValuesSeparator);\n return [\n {\n field,\n condition,\n value: JSON.stringify({\n from,\n to,\n }),\n },\n ];\n case RecordFilterCondition.NOT_EQUAL:\n return [\n {\n field,\n condition: RecordFilterCondition.NOT_EQUAL,\n value: _getDateAtNoon(Number(value)),\n },\n ];\n case RecordFilterCondition.EQUAL:\n return [\n {\n field,\n condition,\n value: _getDateAtNoon(Number(value)),\n },\n ];\n default:\n return [\n {\n field,\n condition,\n value,\n },\n ];\n }\n};\n\nconst _getBooleanRequestFilters = (filter: IUIFilterStandard): RecordFilterInput[] => {\n if (filter.value === 'false') {\n return [\n {\n field: filter.field,\n condition: AttributeConditionFilter.NOT_EQUAL,\n value: 'true',\n },\n ];\n }\n\n return [{field: filter.field, condition: filter.condition, value: filter.value}];\n};\n\nconst _addValuesListForFilters = (valuesList: string[]): RecordFilterInput[] => [\n {operator: RecordFilterOperator.OPEN_BRACKET},\n ...(interleaveElement(\n {operator: RecordFilterOperator.OR},\n valuesList.map(value => [\n {\n field: 'id',\n condition: AttributeConditionFilter.EQUAL,\n value,\n },\n ]),\n ) as RecordFilterInput[]),\n {operator: RecordFilterOperator.CLOSE_BRACKET},\n];\n\nconst _generateConditionsFromMultipleValues = (filter: IUIFilterTree | IUIFilterValueList): RecordFilterInput[] => {\n if (!filter.value || filter.value.length === 0) {\n return [];\n }\n const filtersWithOperators: RecordFilterInput[] = [];\n filter.value.forEach((recordId, idx) => {\n if (idx === 0 && filter.value && filter.value.length > 1) {\n filtersWithOperators.push({operator: RecordFilterOperator.OPEN_BRACKET});\n }\n if (isUIFilterTree(filter) && filter.nodes && filter.nodes.length > 0) {\n filtersWithOperators.push({\n value: recordId,\n condition: filter.condition,\n field: `${filter.attribute.id}.${filter.nodes[0].libraryId}.id`,\n });\n } else {\n filtersWithOperators.push({\n value: recordId,\n condition: filter.condition,\n field: Array.isArray(filter.field) ? filter.field[idx] : filter.field,\n });\n }\n if (filter.value && idx < filter.value.length - 1) {\n filtersWithOperators.push({\n operator:\n filter.condition === RecordFilterCondition.NOT_EQUAL\n ? RecordFilterOperator.AND\n : RecordFilterOperator.OR,\n });\n }\n if (filter.value && filter.value.length > 1 && idx >= filter.value.length - 1) {\n filtersWithOperators.push({operator: RecordFilterOperator.CLOSE_BRACKET});\n }\n });\n return filtersWithOperators;\n};\n\nconst _addEmptyCondition = (baseConditions: RecordFilterInput[], filter: UIFilter): RecordFilterInput[] => {\n if (!filter.withEmptyValues) {\n return baseConditions;\n }\n\n const hasValue =\n filter.value !== null &&\n filter.value !== undefined &&\n (!Array.isArray(filter.value) || filter.value.length > 0);\n\n // patch because field contains multiple informations & can be empty\n const field = (Array.isArray(filter.field) ? filter.field[0] : filter.field) || filter.attribute.id;\n const emptyCondition = {\n field,\n condition: RecordFilterCondition.IS_EMPTY,\n value: null,\n };\n\n if (!hasValue) {\n return [emptyCondition];\n } else {\n return [\n {operator: RecordFilterOperator.OPEN_BRACKET},\n ...baseConditions,\n {operator: RecordFilterOperator.OR},\n emptyCondition,\n {operator: RecordFilterOperator.CLOSE_BRACKET},\n ];\n }\n};\n\nexport const prepareFiltersForRequest = (\n filters: UIFilter[],\n filtersOperator?: FiltersOperator,\n valuesList?: string[],\n): RecordFilterInput[] => {\n const interleaveFilter = interleaveElement(\n {operator: filtersOperator === 'OR' ? RecordFilterOperator.OR : RecordFilterOperator.AND},\n filters\n .filter(filter => {\n if (filter.withEmptyValues) {\n return true;\n }\n\n if (isUIFilterThrough(filter)) {\n return (\n filter.subField &&\n filter.subCondition &&\n (filter.value !== null || nullValueConditions.includes(filter.subCondition))\n );\n }\n\n if (isUIFilterValueList(filter)) {\n return (\n (!!filter.condition && filter.value?.length) ||\n (filter.condition && nullValueConditions.includes(filter.condition))\n );\n }\n\n return filter.value !== null || (filter.condition && nullValueConditions.includes(filter.condition));\n })\n .map(filter => {\n if (isUIFilterTree(filter)) {\n return filter;\n }\n const condition =\n filter.condition === AttributeConditionFilter.THROUGH ? filter.subCondition : filter.condition;\n let field =\n filter.condition === AttributeConditionFilter.THROUGH\n ? `${filter.field}.${filter.subField}`\n : filter.field;\n\n // When a link attribute has a values list, we must filter on the linked record id\n if (isUIFilterLinkWithValueList(filter) && typeof field === 'string' && !field.endsWith('.id')) {\n field = `${field}.id`;\n }\n\n return {...filter, condition, field};\n })\n .map(filter => {\n //@ts-ignore typscript does not recognize filter as a UIFilter\n if (isUIFilterValueList(filter) || isUIFilterTree(filter)) {\n if (filter.condition && nullValueConditions.includes(filter.condition)) {\n const baseConditions = [\n {\n field: Array.isArray(filter.field) ? filter.field[0] : filter.field,\n condition: filter.condition,\n value: null,\n },\n ];\n return _addEmptyCondition(baseConditions, filter as IUIFilterTree | IUIFilterValueList);\n }\n const baseConditions = _generateConditionsFromMultipleValues(\n filter as IUIFilterTree | IUIFilterValueList,\n );\n return _addEmptyCondition(baseConditions, filter as IUIFilterTree | IUIFilterValueList);\n }\n\n if (isUIFilterStandard(filter as UIFilter)) {\n switch (filter.attribute.format) {\n case AttributeFormat.date:\n return _getDateRequestFilters(filter as IUIFilterStandard);\n case AttributeFormat.boolean:\n return _getBooleanRequestFilters(filter as IUIFilterStandard);\n default:\n break;\n }\n }\n const baseConditions = [\n {\n field: filter.field as string,\n condition: filter.condition,\n value: filter.value,\n },\n ];\n return _addEmptyCondition(baseConditions, filter as UIFilter);\n }),\n );\n\n return [\n ...interleaveFilter,\n ...(interleaveFilter.length > 0 && valuesList ? [{operator: RecordFilterOperator.AND}] : []),\n ...(valuesList ? _addValuesListForFilters(valuesList) : []),\n ];\n};\n"]}
@@ -343,6 +343,7 @@ export declare const useFilters: (pinFilters?: boolean) => {
343
343
  value: string | null;
344
344
  id: string;
345
345
  hidden?: boolean | undefined;
346
+ withEmptyValues?: boolean;
346
347
  formattedValue?: string | null;
347
348
  } | {
348
349
  attribute: {
@@ -686,6 +687,7 @@ export declare const useFilters: (pinFilters?: boolean) => {
686
687
  value: string | null;
687
688
  id: string;
688
689
  hidden?: boolean | undefined;
690
+ withEmptyValues?: boolean;
689
691
  formattedValue?: string | null;
690
692
  } | {
691
693
  attribute: {
@@ -1031,6 +1033,7 @@ export declare const useFilters: (pinFilters?: boolean) => {
1031
1033
  value: string | null;
1032
1034
  id: string;
1033
1035
  hidden?: boolean | undefined;
1036
+ withEmptyValues?: boolean;
1034
1037
  formattedValue?: string | null;
1035
1038
  } | {
1036
1039
  attribute: {
@@ -1374,6 +1377,7 @@ export declare const useFilters: (pinFilters?: boolean) => {
1374
1377
  field: string | string[];
1375
1378
  id: string;
1376
1379
  hidden?: boolean | undefined;
1380
+ withEmptyValues?: boolean;
1377
1381
  } | {
1378
1382
  attribute: {
1379
1383
  format: import("../../_gqlTypes").AttributeFormat;
@@ -1721,6 +1725,7 @@ export declare const useFilters: (pinFilters?: boolean) => {
1721
1725
  field: string[];
1722
1726
  id: string;
1723
1727
  hidden?: boolean | undefined;
1728
+ withEmptyValues?: boolean;
1724
1729
  };
1725
1730
  isPinned: boolean;
1726
1731
  }[];
@@ -69,6 +69,7 @@ export const useTransformFilters = () => {
69
69
  format: attributeData.format,
70
70
  valuesList: attributeData.valuesList,
71
71
  },
72
+ withEmptyValues: filter.withEmptyValues ?? false,
72
73
  };
73
74
  acc.push(newFilter);
74
75
  }
@@ -91,6 +92,7 @@ export const useTransformFilters = () => {
91
92
  ...filterAttributeBase,
92
93
  format: attributeData.format,
93
94
  },
95
+ withEmptyValues: filter.withEmptyValues ?? false,
94
96
  };
95
97
  acc.push(newFilter);
96
98
  }
@@ -126,6 +128,7 @@ export const useTransformFilters = () => {
126
128
  linkedLibrary: attributeData.linked_library,
127
129
  valuesList: attributeData.valuesList,
128
130
  },
131
+ withEmptyValues: filter.withEmptyValues ?? false,
129
132
  };
130
133
  acc.push(newFilter);
131
134
  }
@@ -171,6 +174,7 @@ export const useTransformFilters = () => {
171
174
  linkedTree: attributeData.linked_tree,
172
175
  },
173
176
  condition: filter.condition ?? RecordFilterCondition.EQUAL,
177
+ withEmptyValues: filter.withEmptyValues ?? false,
174
178
  };
175
179
  acc.push(newFilter);
176
180
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useTransformFilters.js","sourceRoot":"","sources":["../../../src/components/Filters/useTransformFilters.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 {\n type AttributeDetailsLinkAttributeFragment,\n type AttributeDetailsTreeAttributeFragment,\n AttributeFormat,\n AttributeType,\n type ExplorerAttributesQuery,\n type ExplorerLinkAttributeQuery,\n type GetViewsListQuery,\n type LinkAttributeDetailsFragment,\n RecordFilterCondition,\n type StandardAttributeDetailsFragment,\n type ViewDetailsFilterFragment,\n} from '_ui/_gqlTypes';\nimport {\n type UIFilter,\n type IUIFilterBaseAttribute,\n type IUIFilterLink,\n type IUIFilterLinkValueList,\n type IUIFilterStandard,\n type IUIFilterStandardValueList,\n type IUIFilterThrough,\n type IUIFilterTree,\n type ValidFieldFilter,\n type ValidFieldFilterLinkValuesList,\n type ValidFieldFilterStandardValuesList,\n type ValidFieldFilterThrough,\n type ValidFilter,\n} from './_types';\nimport {ThroughConditionFilter} from '_ui/types';\nimport {isLinkAttribute, isStandardAttribute, isTreeAttribute} from '_ui/_utils/attributeType';\nimport {localizedTranslation} from '@leav/utils';\nimport {useLang} from '_ui/hooks';\nimport {valueListTextConditions} from './filter-items/filter-type/useConditionOptionsByType';\nimport dayjs from 'dayjs';\nimport {type TFunction} from 'i18next';\nimport {type ITreeFilters} from './context/useGetTreeFilters';\n\nconst _isValidFieldFilter = (filter: ViewDetailsFilterFragment | UIFilter): filter is ValidFieldFilter =>\n !!filter.field;\n\nconst _isValidFieldFilterThrough = (filter: ValidFilter): filter is ValidFieldFilterThrough =>\n filter.condition === ThroughConditionFilter.THROUGH && !!filter.subCondition && !!filter.subField;\n\nconst _isValidFieldFilterStandardValuesList = (\n filter: ValidFilter,\n attribute: NonNullable<ExplorerAttributesQuery['attributes']>['list'][number],\n): filter is ValidFieldFilterStandardValuesList & {attribute: StandardAttributeDetailsFragment} =>\n valueListTextConditions.includes(filter.condition) &&\n [AttributeType.simple, AttributeType.advanced].includes(attribute.type) &&\n 'valuesList' in attribute &&\n !!attribute.valuesList?.enable;\n\nconst _isValidFieldFilterLinkValuesList = (\n filter: ValidFilter,\n attribute: NonNullable<ExplorerAttributesQuery['attributes']>['list'][number],\n): filter is ValidFieldFilterLinkValuesList & {attribute: LinkAttributeDetailsFragment} =>\n valueListTextConditions.includes(filter.condition) &&\n [AttributeType.simple_link, AttributeType.advanced_link].includes(attribute.type) &&\n 'valuesList' in attribute &&\n !!attribute.valuesList?.enable;\n\ntype AttributeDetailsLinkAttributeWithPermissionsFragment = AttributeDetailsLinkAttributeFragment & {\n permissions: {\n access_attribute: boolean;\n };\n};\ntype AttributeDetailsTreeAttributeWithPermissionsFragment = AttributeDetailsTreeAttributeFragment & {\n permissions: {\n access_attribute: boolean;\n };\n};\n\nexport const isLinkAttributeDetails = (\n linkAttributeData: NonNullable<ExplorerLinkAttributeQuery['attributes']>['list'][number],\n): linkAttributeData is LinkAttributeDetailsFragment & {\n id: string;\n multiple_values: boolean;\n permissions: {\n access_attribute: boolean;\n edit_value: boolean;\n };\n} => 'linked_library' in linkAttributeData;\n\nexport type ValidFiltersArgument = GetViewsListQuery['views']['list'][number]['filters'] | UIFilter[];\n\nexport type AttributesById = Record<string, NonNullable<ExplorerAttributesQuery['attributes']>['list'][number]>;\n\nexport const useTransformFilters = () => {\n const {lang} = useLang();\n\n const toValidFilters = (filters: ValidFiltersArgument): ValidFilter[] =>\n (filters ?? []).reduce<ValidFilter[]>((acc, filter) => {\n if (!_isValidFieldFilter(filter)) {\n return acc;\n }\n const _isThroughFilter = filter.field.includes('.');\n\n if (_isThroughFilter) {\n const [field, subField] = filter.field.split('.');\n const throughFilter: ValidFieldFilterThrough = {\n field,\n subField,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n condition: ThroughConditionFilter.THROUGH,\n subCondition: filter.condition,\n };\n acc.push(throughFilter);\n } else {\n acc.push(filter);\n }\n\n return acc;\n }, []);\n\n const toUIFilters = ({\n filters,\n treeFilters,\n attributesDataById,\n t,\n }: {\n filters: ValidFilter[];\n treeFilters: ITreeFilters;\n attributesDataById: AttributesById;\n t: TFunction;\n }): UIFilter[] =>\n (filters ?? []).reduce<UIFilter[]>((acc, filter) => {\n if (!attributesDataById[filter.field]) {\n console.warn(`Attribute ${filter.field} from user view not found in database.`);\n return acc;\n }\n\n const filterAttributeBase: IUIFilterBaseAttribute = {\n id: attributesDataById[filter.field].id,\n label: localizedTranslation(attributesDataById[filter.field].label, lang),\n type: attributesDataById[filter.field].type,\n };\n\n // filter is standardFilter\n if (isStandardAttribute(filterAttributeBase.type)) {\n const attributeData = attributesDataById[filter.field];\n if (_isValidFieldFilterStandardValuesList(filter, attributeData)) {\n const newFilter: IUIFilterStandardValueList = {\n field: filter.field,\n // TODO : save filter values as string[] when filter and handle fields with libraries\n value: filter.value ? [filter.value] : [],\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: (filter.condition as RecordFilterCondition) ?? null,\n attribute: {\n ...filterAttributeBase,\n format: attributeData.format!,\n valuesList: (attributeData as StandardAttributeDetailsFragment).valuesList!,\n },\n };\n acc.push(newFilter);\n } else {\n let formattedValue: string;\n if (attributeData.format === AttributeFormat.boolean && filter.value) {\n formattedValue = filter.value === 'true' ? t('explorer.true') : t('explorer.false');\n }\n\n if (attributeData.format === AttributeFormat.date && filter.value) {\n formattedValue = dayjs(filter.value).format('YYYY-MM-DD');\n }\n\n const newFilter: IUIFilterStandard = {\n field: filter.field,\n value: filter.value ?? null,\n formattedValue,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: (filter.condition as RecordFilterCondition) ?? null,\n attribute: {\n ...filterAttributeBase,\n format: attributeData.format!,\n },\n };\n acc.push(newFilter);\n }\n }\n\n if (isLinkAttribute(filterAttributeBase.type)) {\n const attributeData = attributesDataById[\n filter.field\n ] as AttributeDetailsLinkAttributeWithPermissionsFragment;\n if (_isValidFieldFilterThrough(filter)) {\n const newFilter: IUIFilterThrough = {\n field: filter.field,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n },\n subCondition: filter.subCondition ?? null,\n subField: filter.subField,\n };\n acc.push(newFilter);\n } else if (_isValidFieldFilterLinkValuesList(filter, attributeData)) {\n const newFilter: IUIFilterLinkValueList = {\n field: filter.field,\n // TODO : save filter values as string[] when filter and handle fields with libraries\n value: filter.value ? [filter.value] : [],\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n valuesList: (attributeData as LinkAttributeDetailsFragment).valuesList!,\n },\n };\n\n acc.push(newFilter);\n } else {\n const newFilter: IUIFilterLink = {\n field: filter.field,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n },\n };\n\n acc.push(newFilter);\n }\n }\n\n if (isTreeAttribute(filterAttributeBase.type) && !_isValidFieldFilterThrough(filter)) {\n const attributeData = attributesDataById[\n filter.field\n ] as AttributeDetailsTreeAttributeWithPermissionsFragment;\n const newFilter: IUIFilterTree = {\n field: [filter.field],\n // TODO : save filter values as string[] when tree filter and handle fields with libraries\n value: filter.value\n ? [filter.value]\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => tree.value)\n : null,\n formattedValue: filter.value\n ? [filter.value]\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => tree.label)\n : undefined,\n nodes: filter.value\n ? undefined\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => ({libraryId: tree.libraryId, nodeId: tree.nodeId}))\n : undefined,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n attribute: {\n ...filterAttributeBase,\n linkedTree: attributeData.linked_tree!,\n },\n condition: filter.condition ?? RecordFilterCondition.EQUAL,\n };\n acc.push(newFilter);\n }\n\n return acc;\n }, []);\n\n return {\n toValidFilters,\n toUIFilters,\n };\n};\n"]}
1
+ {"version":3,"file":"useTransformFilters.js","sourceRoot":"","sources":["../../../src/components/Filters/useTransformFilters.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 {\n type AttributeDetailsLinkAttributeFragment,\n type AttributeDetailsTreeAttributeFragment,\n AttributeFormat,\n AttributeType,\n type ExplorerAttributesQuery,\n type ExplorerLinkAttributeQuery,\n type GetViewsListQuery,\n type LinkAttributeDetailsFragment,\n RecordFilterCondition,\n type StandardAttributeDetailsFragment,\n type ViewDetailsFilterFragment,\n} from '_ui/_gqlTypes';\nimport {\n type UIFilter,\n type IUIFilterBaseAttribute,\n type IUIFilterLink,\n type IUIFilterLinkValueList,\n type IUIFilterStandard,\n type IUIFilterStandardValueList,\n type IUIFilterThrough,\n type IUIFilterTree,\n type ValidFieldFilter,\n type ValidFieldFilterLinkValuesList,\n type ValidFieldFilterStandardValuesList,\n type ValidFieldFilterThrough,\n type ValidFilter,\n} from './_types';\nimport {ThroughConditionFilter} from '_ui/types';\nimport {isLinkAttribute, isStandardAttribute, isTreeAttribute} from '_ui/_utils/attributeType';\nimport {localizedTranslation} from '@leav/utils';\nimport {useLang} from '_ui/hooks';\nimport {valueListTextConditions} from './filter-items/filter-type/useConditionOptionsByType';\nimport dayjs from 'dayjs';\nimport {type TFunction} from 'i18next';\nimport {type ITreeFilters} from './context/useGetTreeFilters';\n\nconst _isValidFieldFilter = (filter: ViewDetailsFilterFragment | UIFilter): filter is ValidFieldFilter =>\n !!filter.field;\n\nconst _isValidFieldFilterThrough = (filter: ValidFilter): filter is ValidFieldFilterThrough =>\n filter.condition === ThroughConditionFilter.THROUGH && !!filter.subCondition && !!filter.subField;\n\nconst _isValidFieldFilterStandardValuesList = (\n filter: ValidFilter,\n attribute: NonNullable<ExplorerAttributesQuery['attributes']>['list'][number],\n): filter is ValidFieldFilterStandardValuesList & {attribute: StandardAttributeDetailsFragment} =>\n valueListTextConditions.includes(filter.condition) &&\n [AttributeType.simple, AttributeType.advanced].includes(attribute.type) &&\n 'valuesList' in attribute &&\n !!attribute.valuesList?.enable;\n\nconst _isValidFieldFilterLinkValuesList = (\n filter: ValidFilter,\n attribute: NonNullable<ExplorerAttributesQuery['attributes']>['list'][number],\n): filter is ValidFieldFilterLinkValuesList & {attribute: LinkAttributeDetailsFragment} =>\n valueListTextConditions.includes(filter.condition) &&\n [AttributeType.simple_link, AttributeType.advanced_link].includes(attribute.type) &&\n 'valuesList' in attribute &&\n !!attribute.valuesList?.enable;\n\ntype AttributeDetailsLinkAttributeWithPermissionsFragment = AttributeDetailsLinkAttributeFragment & {\n permissions: {\n access_attribute: boolean;\n };\n};\ntype AttributeDetailsTreeAttributeWithPermissionsFragment = AttributeDetailsTreeAttributeFragment & {\n permissions: {\n access_attribute: boolean;\n };\n};\n\nexport const isLinkAttributeDetails = (\n linkAttributeData: NonNullable<ExplorerLinkAttributeQuery['attributes']>['list'][number],\n): linkAttributeData is LinkAttributeDetailsFragment & {\n id: string;\n multiple_values: boolean;\n permissions: {\n access_attribute: boolean;\n edit_value: boolean;\n };\n} => 'linked_library' in linkAttributeData;\n\nexport type ValidFiltersArgument = GetViewsListQuery['views']['list'][number]['filters'] | UIFilter[];\n\nexport type AttributesById = Record<string, NonNullable<ExplorerAttributesQuery['attributes']>['list'][number]>;\n\nexport const useTransformFilters = () => {\n const {lang} = useLang();\n\n const toValidFilters = (filters: ValidFiltersArgument): ValidFilter[] =>\n (filters ?? []).reduce<ValidFilter[]>((acc, filter) => {\n if (!_isValidFieldFilter(filter)) {\n return acc;\n }\n const _isThroughFilter = filter.field.includes('.');\n\n if (_isThroughFilter) {\n const [field, subField] = filter.field.split('.');\n const throughFilter: ValidFieldFilterThrough = {\n field,\n subField,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n condition: ThroughConditionFilter.THROUGH,\n subCondition: filter.condition,\n };\n acc.push(throughFilter);\n } else {\n acc.push(filter);\n }\n\n return acc;\n }, []);\n\n const toUIFilters = ({\n filters,\n treeFilters,\n attributesDataById,\n t,\n }: {\n filters: ValidFilter[];\n treeFilters: ITreeFilters;\n attributesDataById: AttributesById;\n t: TFunction;\n }): UIFilter[] =>\n (filters ?? []).reduce<UIFilter[]>((acc, filter) => {\n if (!attributesDataById[filter.field]) {\n console.warn(`Attribute ${filter.field} from user view not found in database.`);\n return acc;\n }\n\n const filterAttributeBase: IUIFilterBaseAttribute = {\n id: attributesDataById[filter.field].id,\n label: localizedTranslation(attributesDataById[filter.field].label, lang),\n type: attributesDataById[filter.field].type,\n };\n\n // filter is standardFilter\n if (isStandardAttribute(filterAttributeBase.type)) {\n const attributeData = attributesDataById[filter.field];\n if (_isValidFieldFilterStandardValuesList(filter, attributeData)) {\n const newFilter: IUIFilterStandardValueList = {\n field: filter.field,\n // TODO : save filter values as string[] when filter and handle fields with libraries\n value: filter.value ? [filter.value] : [],\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: (filter.condition as RecordFilterCondition) ?? null,\n attribute: {\n ...filterAttributeBase,\n format: attributeData.format!,\n valuesList: (attributeData as StandardAttributeDetailsFragment).valuesList!,\n },\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n acc.push(newFilter);\n } else {\n let formattedValue: string;\n if (attributeData.format === AttributeFormat.boolean && filter.value) {\n formattedValue = filter.value === 'true' ? t('explorer.true') : t('explorer.false');\n }\n\n if (attributeData.format === AttributeFormat.date && filter.value) {\n formattedValue = dayjs(filter.value).format('YYYY-MM-DD');\n }\n\n const newFilter: IUIFilterStandard = {\n field: filter.field,\n value: filter.value ?? null,\n formattedValue,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: (filter.condition as RecordFilterCondition) ?? null,\n attribute: {\n ...filterAttributeBase,\n format: attributeData.format!,\n },\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n acc.push(newFilter);\n }\n }\n\n if (isLinkAttribute(filterAttributeBase.type)) {\n const attributeData = attributesDataById[\n filter.field\n ] as AttributeDetailsLinkAttributeWithPermissionsFragment;\n if (_isValidFieldFilterThrough(filter)) {\n const newFilter: IUIFilterThrough = {\n field: filter.field,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n },\n subCondition: filter.subCondition ?? null,\n subField: filter.subField,\n };\n acc.push(newFilter);\n } else if (_isValidFieldFilterLinkValuesList(filter, attributeData)) {\n const newFilter: IUIFilterLinkValueList = {\n field: filter.field,\n // TODO : save filter values as string[] when filter and handle fields with libraries\n value: filter.value ? [filter.value] : [],\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n valuesList: (attributeData as LinkAttributeDetailsFragment).valuesList!,\n },\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n\n acc.push(newFilter);\n } else {\n const newFilter: IUIFilterLink = {\n field: filter.field,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n },\n };\n\n acc.push(newFilter);\n }\n }\n\n if (isTreeAttribute(filterAttributeBase.type) && !_isValidFieldFilterThrough(filter)) {\n const attributeData = attributesDataById[\n filter.field\n ] as AttributeDetailsTreeAttributeWithPermissionsFragment;\n const newFilter: IUIFilterTree = {\n field: [filter.field],\n // TODO : save filter values as string[] when tree filter and handle fields with libraries\n value: filter.value\n ? [filter.value]\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => tree.value)\n : null,\n formattedValue: filter.value\n ? [filter.value]\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => tree.label)\n : undefined,\n nodes: filter.value\n ? undefined\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => ({libraryId: tree.libraryId, nodeId: tree.nodeId}))\n : undefined,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n attribute: {\n ...filterAttributeBase,\n linkedTree: attributeData.linked_tree!,\n },\n condition: filter.condition ?? RecordFilterCondition.EQUAL,\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n acc.push(newFilter);\n }\n\n return acc;\n }, []);\n\n return {\n toValidFilters,\n toUIFilters,\n };\n};\n"]}
@@ -1,4 +1,3 @@
1
- import { type DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';
2
1
  import { type IFilter } from '../../../../types/search';
3
2
  export interface IFilterInputProps {
4
3
  filter: IFilter;
@@ -7,7 +6,6 @@ export interface IFilterInputProps {
7
6
  }
8
7
  interface IFilterProps {
9
8
  filter: IFilter;
10
- handleProps: DraggableProvidedDragHandleProps;
11
9
  }
12
- declare function Filter({ filter, handleProps }: IFilterProps): JSX.Element;
10
+ declare function Filter({ filter }: IFilterProps): JSX.Element;
13
11
  export default Filter;
@@ -6,6 +6,7 @@ import { CloseCircleFilled, MoreOutlined } from '@ant-design/icons';
6
6
  import { localizedTranslation } from '@leav/utils';
7
7
  import { Button, Dropdown } from 'antd';
8
8
  import { useCallback, useState } from 'react';
9
+ import { CSS } from '@dnd-kit/utilities';
9
10
  import styled from 'styled-components';
10
11
  import { themeVars } from '../../../../antdTheme';
11
12
  import DateBetweenFilter from '../../../../components/LibraryItemsList/FiltersPanel/Filter/FilterInput/DateBetweenFilter';
@@ -27,6 +28,7 @@ import DateFilter from './FilterInput/DateFilter';
27
28
  import NumericFilter from './FilterInput/NumericFilter';
28
29
  import TextFilter from './FilterInput/TextFilter';
29
30
  import { getDefaultFilterValueByFormat } from '../../../../components/LibraryItemsList/FiltersPanel/Filter/filterUtils';
31
+ import { useSortable } from '@dnd-kit/sortable';
30
32
  const Wrapper = styled.div `
31
33
  background: ${themeVars.lightBg};
32
34
  padding: 8px 8px 8px 0px;
@@ -118,11 +120,13 @@ const ClearParentButton = styled(Button) `
118
120
  }
119
121
  }
120
122
  `;
121
- function Filter({ filter, handleProps }) {
123
+ function Filter({ filter }) {
122
124
  const { t } = useSharedTranslation();
123
125
  const { lang } = useLang();
124
126
  const { state: searchState, dispatch: searchDispatch } = useSearchReducer();
125
127
  const [showSelectTreeNodeModal, setShowSelectTreeNodeModal] = useState(false);
128
+ const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: filter.key });
129
+ const style = { transform: CSS.Transform.toString(transform), transition };
126
130
  const handleDelete = () => {
127
131
  searchDispatch({
128
132
  type: SearchActionTypes.SET_FILTERS,
@@ -318,7 +322,7 @@ function Filter({ filter, handleProps }) {
318
322
  const _handlePressEnter = () => {
319
323
  searchDispatch({ type: SearchActionTypes.APPLY_FILTERS });
320
324
  };
321
- return (_jsxs(_Fragment, { children: [showSelectTreeNodeModal && (_jsx(SelectTreeNodeModalOld, { selectedNodeKey: filter.value.value || filter.tree.id, treeId: filter.tree.id, onSubmit: node => updateFilterValue(_getValueFromNode(node)), onClose: () => setShowSelectTreeNodeModal(false), isVisible: showSelectTreeNodeModal, canSelectRoot: true })), _jsxs(Wrapper, { "data-testid": "filter", "$active": filter.active, children: [_jsx(Handle, { className: "filter-handle", ...handleProps }), _jsxs(Content, { "$hasParent": hasParent, children: [hasParent && (_jsxs(ParentLabel, { children: [_jsxs("span", { children: [t('filters.through'), ":\u00A0"] }), _jsx("span", { children: getParentLabel() }), _jsx(ClearParentButton, { disabled: !filter.active, size: "small", onClick: _handleResetClick, shape: "circle", icon: _jsx(CloseCircleFilled, {}) })] })), _jsxs(Head, { children: [_jsxs(HeadInfos, { children: [_jsx(FiltersDropdown, { libraryId: searchState.library.id, button: _jsx(FilterDropdownButton, { secondary: filter.condition === ThroughConditionFilter.THROUGH, children: getDropdownLabel() }), filter: filter, attributes: getAttributes(), libraries: getLibraries(), trees: getTrees() }), (filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (_jsx(FilterAttributeCondition, { filter: filter, updateFilterValue: updateFilterValue })), filter.type === FilterType.TREE && _jsx(FilterTreeCondition, { filter: filter })] }), _jsx(Dropdown, { menu: filterOptions, placement: "bottomRight", children: _jsx(HeadOptions, { children: _jsx(MoreOutlined, {}) }) })] }), _jsx(InputByFormat, { filter: filter, updateFilterValue: updateFilterValue, onPressEnter: _handlePressEnter })] })] })] }));
325
+ return (_jsxs(_Fragment, { children: [showSelectTreeNodeModal && (_jsx(SelectTreeNodeModalOld, { selectedNodeKey: filter.value.value || filter.tree.id, treeId: filter.tree.id, onSubmit: node => updateFilterValue(_getValueFromNode(node)), onClose: () => setShowSelectTreeNodeModal(false), isVisible: showSelectTreeNodeModal, canSelectRoot: true })), _jsxs(Wrapper, { "data-testid": "filter", "$active": filter.active, ref: setNodeRef, style: style, ...attributes, children: [_jsx(Handle, { className: "filter-handle", ...listeners }), _jsxs(Content, { "$hasParent": hasParent, children: [hasParent && (_jsxs(ParentLabel, { children: [_jsxs("span", { children: [t('filters.through'), ":\u00A0"] }), _jsx("span", { children: getParentLabel() }), _jsx(ClearParentButton, { disabled: !filter.active, size: "small", onClick: _handleResetClick, shape: "circle", icon: _jsx(CloseCircleFilled, {}) })] })), _jsxs(Head, { children: [_jsxs(HeadInfos, { children: [_jsx(FiltersDropdown, { libraryId: searchState.library.id, button: _jsx(FilterDropdownButton, { secondary: filter.condition === ThroughConditionFilter.THROUGH, children: getDropdownLabel() }), filter: filter, attributes: getAttributes(), libraries: getLibraries(), trees: getTrees() }), (filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (_jsx(FilterAttributeCondition, { filter: filter, updateFilterValue: updateFilterValue })), filter.type === FilterType.TREE && _jsx(FilterTreeCondition, { filter: filter })] }), _jsx(Dropdown, { menu: filterOptions, placement: "bottomRight", children: _jsx(HeadOptions, { children: _jsx(MoreOutlined, {}) }) })] }), _jsx(InputByFormat, { filter: filter, updateFilterValue: updateFilterValue, onPressEnter: _handlePressEnter })] })] })] }));
322
326
  }
323
327
  export default Filter;
324
328
  //# sourceMappingURL=Filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/FiltersPanel/Filter/Filter.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 {CloseCircleFilled, MoreOutlined} from '@ant-design/icons';\nimport {localizedTranslation} from '@leav/utils';\nimport {Button, Dropdown} from 'antd';\nimport {useCallback, useState} from 'react';\nimport {type DraggableProvidedDragHandleProps} from 'react-beautiful-dnd';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport DateBetweenFilter from '_ui/components/LibraryItemsList/FiltersPanel/Filter/FilterInput/DateBetweenFilter';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {SelectTreeNodeModalOld} from '_ui/components/SelectTreeNodeModalOld';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n AttributeConditionFilter,\n type AttributeConditionType,\n FilterType,\n type IAttribute,\n type IFilter,\n type IFilterAttribute,\n type IFilterLibrary,\n type IFilterTree,\n ThroughConditionFilter,\n TreeConditionFilter,\n} from '_ui/types/search';\nimport {type ITreeNode} from '_ui/types/trees';\nimport {\n AttributeFormat,\n type AttributesByLibAttributeStandardAttributeFragment,\n AttributeType,\n RecordFilterCondition,\n} from '_ui/_gqlTypes';\nimport {\n type ILibraryDetailExtended,\n type ILibraryDetailExtendedAttribute,\n type ILibraryDetailExtendedAttributeParentLinkedTree,\n} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\nimport {formatNotUsingCondition} from '../../constants';\nimport FiltersDropdown from '../../FiltersDropdown';\nimport {defaultFilterConditionByAttributeFormat} from '../../helpers/defaultFilterConditionByAttributeFormat';\nimport FilterDropdownButton from '../FilterDropdownButton';\nimport FilterTreeCondition from '../FilterTreeCondition';\nimport mustHideValue from '../mustHideValue';\nimport FilterAttributeCondition from './FilterAttributeCondition';\nimport DateFilter from './FilterInput/DateFilter';\nimport NumericFilter from './FilterInput/NumericFilter';\nimport TextFilter from './FilterInput/TextFilter';\nimport {getDefaultFilterValueByFormat} from '_ui/components/LibraryItemsList/FiltersPanel/Filter/filterUtils';\n\ninterface IWrapperProps {\n $active: boolean;\n}\n\nconst Wrapper = styled.div<IWrapperProps>`\n background: ${themeVars.lightBg};\n padding: 8px 8px 8px 0px;\n border-radius: 3px;\n display: grid;\n grid-template-columns: 1.375rem 1fr;\n margin-bottom: 8px;\n border: 2px solid transparent;\n\n ${({$active}) =>\n $active\n ? `\n &:hover,\n &:active {\n border: 2px solid ${themeVars.primaryColor};\n\n &&& .filter-handle {\n color: ${themeVars.primaryColor};\n }\n }\n `\n : 'opacity: .5;'}\n`;\n\nconst Handle = styled.div`\n content: '....';\n width: 20px;\n height: 30px;\n display: inline-block;\n overflow: hidden;\n line-height: 5px;\n padding: 3px 4px;\n vertical-align: middle;\n margin: auto;\n font-size: 12px;\n font-family: sans-serif;\n letter-spacing: 2px;\n color: ${themeVars.borderLightColor};\n text-shadow: 1px 0 1px black;\n\n &::after {\n content: '.. .. .. ..';\n }\n`;\n\nconst Content = styled.div<{$hasParent: boolean}>`\n display: grid;\n grid-template-rows: ${p => (p.$hasParent ? 'auto auto 1fr' : 'auto 1fr')};\n row-gap: 8px;\n`;\n\nconst Head = styled.div`\n display: grid;\n grid-template-columns: 1fr 1.5rem;\n align-items: center;\n column-gap: 8px;\n min-width: 0;\n`;\n\nconst HeadInfos = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n justify-items: space-around;\n align-items: center;\n justify-content: center;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n\n min-width: 0;\n`;\n\nconst HeadOptions = styled.div`\n display: grid;\n place-items: center;\n height: 32px;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n`;\n\nconst ParentLabel = styled.div`\n display: flex;\n align-content: flex-start;\n`;\n\nconst ClearParentButton = styled(Button)`\n && {\n border: none;\n color: ${themeVars.secondaryTextColor};\n\n :hover {\n border: none;\n color: ${themeVars.secondaryTextColor};\n }\n }\n`;\n\nexport interface IFilterInputProps {\n filter: IFilter;\n updateFilterValue: (newFilterValue: IFilter['value']) => void;\n onPressEnter?: () => void;\n}\n\ninterface IFilterProps {\n filter: IFilter;\n handleProps: DraggableProvidedDragHandleProps;\n}\n\nfunction Filter({filter, handleProps}: IFilterProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [showSelectTreeNodeModal, setShowSelectTreeNodeModal] = useState(false);\n\n const handleDelete = () => {\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: searchState.filters.filter(f => f.index !== filter.index),\n });\n };\n\n const updateFilterValue = (newFilterValue: IFilter['value']) => {\n const newFilters: IFilter[] = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, value: newFilterValue};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const _getValueFromNode = (node: ITreeNode): IFilter['value'] =>\n typeof node === 'undefined' || node.id === (filter as IFilterTree).tree.id\n ? {value: null}\n : {value: node.id, label: String(node.title)};\n\n const toggleActiveStatus = () => {\n const newFilters = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, active: !f.active};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const filterOptions = {\n items: [\n {\n key: 'deactivate',\n label: filter.active ? t('filters.deactivate') : t('filters.activate'),\n onClick: toggleActiveStatus,\n },\n {\n key: 'delete',\n label: t('global.delete'),\n onClick: handleDelete,\n },\n ],\n };\n\n const InputByFormat = useCallback(\n (props: IFilterInputProps) => {\n const showStandardCondition =\n props.filter.condition in AttributeConditionFilter &&\n !(props.filter.condition in TreeConditionFilter) &&\n !formatNotUsingCondition.find(\n format => format === (props.filter as IFilterAttribute).attribute?.format,\n );\n\n const showTreeCondition = props.filter.condition in TreeConditionFilter;\n\n if (showStandardCondition) {\n if (mustHideValue(props.filter.condition as AttributeConditionType)) {\n return <></>;\n }\n\n switch ((props.filter as IFilterAttribute).attribute?.format) {\n case AttributeFormat.date:\n return props.filter.condition === AttributeConditionFilter.BETWEEN ? (\n <DateBetweenFilter {...props} />\n ) : (\n <DateFilter {...props} />\n );\n case AttributeFormat.date_range:\n return <DateFilter {...props} />;\n case AttributeFormat.numeric:\n return <NumericFilter {...props} />;\n case AttributeFormat.text:\n default:\n return <TextFilter {...props} />;\n }\n } else if (showTreeCondition) {\n return (\n <Button disabled={!props.filter.active} onClick={() => setShowSelectTreeNodeModal(true)}>\n {props.filter.value.label || t('global.select')}\n </Button>\n );\n }\n\n return <></>;\n },\n [t],\n );\n\n const embeddedFieldsToAttribute = (\n embeddedFields: AttributesByLibAttributeStandardAttributeFragment['embedded_fields'],\n ): AttributesByLibAttributeStandardAttributeFragment[] =>\n embeddedFields\n ? embeddedFields.map(f => ({\n ...f,\n type: AttributeType.simple,\n multiple_values: undefined,\n linked_tree: undefined,\n system: false,\n readonly: false,\n }))\n : [];\n\n const getAttributes = (): ILibraryDetailExtendedAttribute[] => {\n if (filter.type === FilterType.ATTRIBUTE) {\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n (filter as IFilterAttribute).attribute?.format === AttributeFormat.extended\n ) {\n return embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.embedded_fields);\n }\n\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n typeof (filter as IFilterAttribute).attribute.linkedTree === 'undefined'\n ) {\n return (filter as IFilterAttribute).attribute.linkedLibrary?.attributes;\n }\n\n if (typeof (filter as IFilterAttribute).attribute.parentAttribute !== 'undefined') {\n return (\n (filter as IFilterAttribute).attribute.parentAttribute?.linkedLibrary?.attributes ||\n embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.parentAttribute?.embedded_fields)\n );\n }\n\n if (typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined') {\n const lib = (filter as IFilterAttribute).parentTreeLibrary.parentAttribute.linkedTree.libraries.find(\n l => l.library.id === (filter as IFilterAttribute).parentTreeLibrary.library.id,\n );\n\n return lib.library.attributes;\n }\n\n if (\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return [];\n }\n }\n\n if (filter.type === FilterType.LIBRARY) {\n if (filter.condition !== ThroughConditionFilter.THROUGH) {\n return [];\n }\n\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n const lib = (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries.find(\n l => l.library.id === (filter as IFilterLibrary).library.id,\n );\n\n return lib.library.attributes;\n }\n }\n\n return searchState.library.attributes;\n };\n\n // on tree attribute type with linkedTree\n const getLibraries = (): ILibraryDetailExtendedAttributeParentLinkedTree['libraries'] => {\n if (filter.type === FilterType.LIBRARY) {\n return (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries;\n }\n\n if (\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return (filter as IFilterAttribute).attribute.linkedTree?.libraries;\n }\n\n return [];\n };\n\n const getTrees = (): ILibraryDetailExtended['linkedTrees'] => {\n if (\n filter.type === FilterType.TREE ||\n (filter.condition !== ThroughConditionFilter.THROUGH &&\n filter.type === FilterType.ATTRIBUTE &&\n !(filter as IFilterAttribute).parentTreeLibrary &&\n !(filter as IFilterAttribute).attribute.parentAttribute)\n ) {\n return searchState.trees;\n }\n\n return [];\n };\n\n const _handleResetClick = () => {\n const filters = [...searchState.filters];\n\n const parentAttribute: IAttribute =\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined'\n ? (filter as IFilterAttribute).parentTreeLibrary.parentAttribute\n : filter.type === FilterType.ATTRIBUTE\n ? ((filter as IFilterAttribute).attribute.parentAttribute ?? (filter as IFilterAttribute).attribute)\n : (filter as IFilterLibrary).parentAttribute;\n\n const newFilter: IFilterAttribute = {\n type: FilterType.ATTRIBUTE,\n index: filter.index,\n key: parentAttribute?.id,\n value: {\n value: getDefaultFilterValueByFormat(parentAttribute.format),\n },\n active: true,\n condition: RecordFilterCondition[defaultFilterConditionByAttributeFormat(parentAttribute.format)],\n attribute: parentAttribute,\n };\n\n const filterPos = searchState.filters.findIndex(f => f.index === filter.index);\n filters.splice(filterPos, 1, newFilter);\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters,\n });\n };\n\n const getDropdownLabel = (): string => {\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n return `${t('global.select')}...`;\n }\n\n if (filter.type === FilterType.ATTRIBUTE) {\n return (\n localizedTranslation((filter as IFilterAttribute).attribute?.label, lang) ||\n (filter as IFilterAttribute).attribute?.id\n );\n } else if (filter.type === FilterType.TREE) {\n return localizedTranslation((filter as IFilterTree).tree.label, lang) || (filter as IFilterTree).tree.id;\n }\n\n return (\n localizedTranslation((filter as IFilterLibrary).library.label, lang) ||\n (filter as IFilterLibrary).library.id\n );\n };\n\n const getParentLabel = () =>\n localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterAttribute).attribute?.label\n : (filter as IFilterAttribute).attribute?.parentAttribute?.label ||\n (filter as IFilterLibrary).parentAttribute?.label,\n lang,\n ) ||\n `${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary).parentAttribute?.label\n : (filter as IFilterAttribute).parentTreeLibrary?.parentAttribute?.label,\n lang,\n )} > ${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary)?.library.label\n : (filter as IFilterAttribute).parentTreeLibrary?.library.label,\n lang,\n )} `;\n\n const hasParent = !!(\n filter.condition === ThroughConditionFilter.THROUGH ||\n !!(filter as IFilterAttribute).attribute?.parentAttribute ||\n (filter as IFilterAttribute).parentTreeLibrary ||\n filter.type === FilterType.LIBRARY\n );\n\n const _handlePressEnter = () => {\n searchDispatch({type: SearchActionTypes.APPLY_FILTERS});\n };\n\n return (\n <>\n {showSelectTreeNodeModal && (\n <SelectTreeNodeModalOld\n selectedNodeKey={(filter.value.value as string) || (filter as IFilterTree).tree.id}\n treeId={(filter as IFilterTree).tree.id}\n onSubmit={node => updateFilterValue(_getValueFromNode(node))}\n onClose={() => setShowSelectTreeNodeModal(false)}\n isVisible={showSelectTreeNodeModal}\n canSelectRoot\n />\n )}\n <Wrapper data-testid=\"filter\" $active={filter.active}>\n <Handle className=\"filter-handle\" {...handleProps} />\n <Content $hasParent={hasParent}>\n {hasParent && (\n <ParentLabel>\n <span>{t('filters.through')}:&nbsp;</span>\n <span>{getParentLabel()}</span>\n <ClearParentButton\n disabled={!filter.active}\n size=\"small\"\n onClick={_handleResetClick}\n shape=\"circle\"\n icon={<CloseCircleFilled />}\n />\n </ParentLabel>\n )}\n <Head>\n <HeadInfos>\n <FiltersDropdown\n libraryId={searchState.library.id}\n button={\n <FilterDropdownButton\n secondary={filter.condition === ThroughConditionFilter.THROUGH}\n >\n {getDropdownLabel()}\n </FilterDropdownButton>\n }\n filter={filter}\n attributes={getAttributes()}\n libraries={getLibraries()}\n trees={getTrees()}\n />\n {(filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (\n <FilterAttributeCondition\n filter={filter as IFilterAttribute | IFilterLibrary}\n updateFilterValue={updateFilterValue}\n />\n )}\n {filter.type === FilterType.TREE && <FilterTreeCondition filter={filter as IFilterTree} />}\n </HeadInfos>\n <Dropdown menu={filterOptions} placement=\"bottomRight\">\n <HeadOptions>\n <MoreOutlined />\n </HeadOptions>\n </Dropdown>\n </Head>\n <InputByFormat\n filter={filter}\n updateFilterValue={updateFilterValue}\n onPressEnter={_handlePressEnter}\n />\n </Content>\n </Wrapper>\n </>\n );\n}\n\nexport default Filter;\n"]}
1
+ {"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/FiltersPanel/Filter/Filter.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 {CloseCircleFilled, MoreOutlined} from '@ant-design/icons';\nimport {localizedTranslation} from '@leav/utils';\nimport {Button, Dropdown} from 'antd';\nimport {useCallback, useState} from 'react';\nimport {CSS} from '@dnd-kit/utilities';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport DateBetweenFilter from '_ui/components/LibraryItemsList/FiltersPanel/Filter/FilterInput/DateBetweenFilter';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {SelectTreeNodeModalOld} from '_ui/components/SelectTreeNodeModalOld';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n AttributeConditionFilter,\n type AttributeConditionType,\n FilterType,\n type IAttribute,\n type IFilter,\n type IFilterAttribute,\n type IFilterLibrary,\n type IFilterTree,\n ThroughConditionFilter,\n TreeConditionFilter,\n} from '_ui/types/search';\nimport {type ITreeNode} from '_ui/types/trees';\nimport {\n AttributeFormat,\n type AttributesByLibAttributeStandardAttributeFragment,\n AttributeType,\n RecordFilterCondition,\n} from '_ui/_gqlTypes';\nimport {\n type ILibraryDetailExtended,\n type ILibraryDetailExtendedAttribute,\n type ILibraryDetailExtendedAttributeParentLinkedTree,\n} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\nimport {formatNotUsingCondition} from '../../constants';\nimport FiltersDropdown from '../../FiltersDropdown';\nimport {defaultFilterConditionByAttributeFormat} from '../../helpers/defaultFilterConditionByAttributeFormat';\nimport FilterDropdownButton from '../FilterDropdownButton';\nimport FilterTreeCondition from '../FilterTreeCondition';\nimport mustHideValue from '../mustHideValue';\nimport FilterAttributeCondition from './FilterAttributeCondition';\nimport DateFilter from './FilterInput/DateFilter';\nimport NumericFilter from './FilterInput/NumericFilter';\nimport TextFilter from './FilterInput/TextFilter';\nimport {getDefaultFilterValueByFormat} from '_ui/components/LibraryItemsList/FiltersPanel/Filter/filterUtils';\nimport {useSortable} from '@dnd-kit/sortable';\n\ninterface IWrapperProps {\n $active: boolean;\n}\n\nconst Wrapper = styled.div<IWrapperProps>`\n background: ${themeVars.lightBg};\n padding: 8px 8px 8px 0px;\n border-radius: 3px;\n display: grid;\n grid-template-columns: 1.375rem 1fr;\n margin-bottom: 8px;\n border: 2px solid transparent;\n\n ${({$active}) =>\n $active\n ? `\n &:hover,\n &:active {\n border: 2px solid ${themeVars.primaryColor};\n\n &&& .filter-handle {\n color: ${themeVars.primaryColor};\n }\n }\n `\n : 'opacity: .5;'}\n`;\n\nconst Handle = styled.div`\n content: '....';\n width: 20px;\n height: 30px;\n display: inline-block;\n overflow: hidden;\n line-height: 5px;\n padding: 3px 4px;\n vertical-align: middle;\n margin: auto;\n font-size: 12px;\n font-family: sans-serif;\n letter-spacing: 2px;\n color: ${themeVars.borderLightColor};\n text-shadow: 1px 0 1px black;\n\n &::after {\n content: '.. .. .. ..';\n }\n`;\n\nconst Content = styled.div<{$hasParent: boolean}>`\n display: grid;\n grid-template-rows: ${p => (p.$hasParent ? 'auto auto 1fr' : 'auto 1fr')};\n row-gap: 8px;\n`;\n\nconst Head = styled.div`\n display: grid;\n grid-template-columns: 1fr 1.5rem;\n align-items: center;\n column-gap: 8px;\n min-width: 0;\n`;\n\nconst HeadInfos = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n justify-items: space-around;\n align-items: center;\n justify-content: center;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n\n min-width: 0;\n`;\n\nconst HeadOptions = styled.div`\n display: grid;\n place-items: center;\n height: 32px;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n`;\n\nconst ParentLabel = styled.div`\n display: flex;\n align-content: flex-start;\n`;\n\nconst ClearParentButton = styled(Button)`\n && {\n border: none;\n color: ${themeVars.secondaryTextColor};\n\n :hover {\n border: none;\n color: ${themeVars.secondaryTextColor};\n }\n }\n`;\n\nexport interface IFilterInputProps {\n filter: IFilter;\n updateFilterValue: (newFilterValue: IFilter['value']) => void;\n onPressEnter?: () => void;\n}\n\ninterface IFilterProps {\n filter: IFilter;\n}\n\nfunction Filter({filter}: IFilterProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [showSelectTreeNodeModal, setShowSelectTreeNodeModal] = useState(false);\n\n const {attributes, listeners, setNodeRef, transform, transition} = useSortable({id: filter.key});\n const style = {transform: CSS.Transform.toString(transform), transition};\n\n const handleDelete = () => {\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: searchState.filters.filter(f => f.index !== filter.index),\n });\n };\n\n const updateFilterValue = (newFilterValue: IFilter['value']) => {\n const newFilters: IFilter[] = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, value: newFilterValue};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const _getValueFromNode = (node: ITreeNode): IFilter['value'] =>\n typeof node === 'undefined' || node.id === (filter as IFilterTree).tree.id\n ? {value: null}\n : {value: node.id, label: String(node.title)};\n\n const toggleActiveStatus = () => {\n const newFilters = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, active: !f.active};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const filterOptions = {\n items: [\n {\n key: 'deactivate',\n label: filter.active ? t('filters.deactivate') : t('filters.activate'),\n onClick: toggleActiveStatus,\n },\n {\n key: 'delete',\n label: t('global.delete'),\n onClick: handleDelete,\n },\n ],\n };\n\n const InputByFormat = useCallback(\n (props: IFilterInputProps) => {\n const showStandardCondition =\n props.filter.condition in AttributeConditionFilter &&\n !(props.filter.condition in TreeConditionFilter) &&\n !formatNotUsingCondition.find(\n format => format === (props.filter as IFilterAttribute).attribute?.format,\n );\n\n const showTreeCondition = props.filter.condition in TreeConditionFilter;\n\n if (showStandardCondition) {\n if (mustHideValue(props.filter.condition as AttributeConditionType)) {\n return <></>;\n }\n\n switch ((props.filter as IFilterAttribute).attribute?.format) {\n case AttributeFormat.date:\n return props.filter.condition === AttributeConditionFilter.BETWEEN ? (\n <DateBetweenFilter {...props} />\n ) : (\n <DateFilter {...props} />\n );\n case AttributeFormat.date_range:\n return <DateFilter {...props} />;\n case AttributeFormat.numeric:\n return <NumericFilter {...props} />;\n case AttributeFormat.text:\n default:\n return <TextFilter {...props} />;\n }\n } else if (showTreeCondition) {\n return (\n <Button disabled={!props.filter.active} onClick={() => setShowSelectTreeNodeModal(true)}>\n {props.filter.value.label || t('global.select')}\n </Button>\n );\n }\n\n return <></>;\n },\n [t],\n );\n\n const embeddedFieldsToAttribute = (\n embeddedFields: AttributesByLibAttributeStandardAttributeFragment['embedded_fields'],\n ): AttributesByLibAttributeStandardAttributeFragment[] =>\n embeddedFields\n ? embeddedFields.map(f => ({\n ...f,\n type: AttributeType.simple,\n multiple_values: undefined,\n linked_tree: undefined,\n system: false,\n readonly: false,\n }))\n : [];\n\n const getAttributes = (): ILibraryDetailExtendedAttribute[] => {\n if (filter.type === FilterType.ATTRIBUTE) {\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n (filter as IFilterAttribute).attribute?.format === AttributeFormat.extended\n ) {\n return embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.embedded_fields);\n }\n\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n typeof (filter as IFilterAttribute).attribute.linkedTree === 'undefined'\n ) {\n return (filter as IFilterAttribute).attribute.linkedLibrary?.attributes;\n }\n\n if (typeof (filter as IFilterAttribute).attribute.parentAttribute !== 'undefined') {\n return (\n (filter as IFilterAttribute).attribute.parentAttribute?.linkedLibrary?.attributes ||\n embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.parentAttribute?.embedded_fields)\n );\n }\n\n if (typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined') {\n const lib = (filter as IFilterAttribute).parentTreeLibrary.parentAttribute.linkedTree.libraries.find(\n l => l.library.id === (filter as IFilterAttribute).parentTreeLibrary.library.id,\n );\n\n return lib.library.attributes;\n }\n\n if (\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return [];\n }\n }\n\n if (filter.type === FilterType.LIBRARY) {\n if (filter.condition !== ThroughConditionFilter.THROUGH) {\n return [];\n }\n\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n const lib = (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries.find(\n l => l.library.id === (filter as IFilterLibrary).library.id,\n );\n\n return lib.library.attributes;\n }\n }\n\n return searchState.library.attributes;\n };\n\n // on tree attribute type with linkedTree\n const getLibraries = (): ILibraryDetailExtendedAttributeParentLinkedTree['libraries'] => {\n if (filter.type === FilterType.LIBRARY) {\n return (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries;\n }\n\n if (\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return (filter as IFilterAttribute).attribute.linkedTree?.libraries;\n }\n\n return [];\n };\n\n const getTrees = (): ILibraryDetailExtended['linkedTrees'] => {\n if (\n filter.type === FilterType.TREE ||\n (filter.condition !== ThroughConditionFilter.THROUGH &&\n filter.type === FilterType.ATTRIBUTE &&\n !(filter as IFilterAttribute).parentTreeLibrary &&\n !(filter as IFilterAttribute).attribute.parentAttribute)\n ) {\n return searchState.trees;\n }\n\n return [];\n };\n\n const _handleResetClick = () => {\n const filters = [...searchState.filters];\n\n const parentAttribute: IAttribute =\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined'\n ? (filter as IFilterAttribute).parentTreeLibrary.parentAttribute\n : filter.type === FilterType.ATTRIBUTE\n ? ((filter as IFilterAttribute).attribute.parentAttribute ?? (filter as IFilterAttribute).attribute)\n : (filter as IFilterLibrary).parentAttribute;\n\n const newFilter: IFilterAttribute = {\n type: FilterType.ATTRIBUTE,\n index: filter.index,\n key: parentAttribute?.id,\n value: {\n value: getDefaultFilterValueByFormat(parentAttribute.format),\n },\n active: true,\n condition: RecordFilterCondition[defaultFilterConditionByAttributeFormat(parentAttribute.format)],\n attribute: parentAttribute,\n };\n\n const filterPos = searchState.filters.findIndex(f => f.index === filter.index);\n filters.splice(filterPos, 1, newFilter);\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters,\n });\n };\n\n const getDropdownLabel = (): string => {\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n return `${t('global.select')}...`;\n }\n\n if (filter.type === FilterType.ATTRIBUTE) {\n return (\n localizedTranslation((filter as IFilterAttribute).attribute?.label, lang) ||\n (filter as IFilterAttribute).attribute?.id\n );\n } else if (filter.type === FilterType.TREE) {\n return localizedTranslation((filter as IFilterTree).tree.label, lang) || (filter as IFilterTree).tree.id;\n }\n\n return (\n localizedTranslation((filter as IFilterLibrary).library.label, lang) ||\n (filter as IFilterLibrary).library.id\n );\n };\n\n const getParentLabel = () =>\n localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterAttribute).attribute?.label\n : (filter as IFilterAttribute).attribute?.parentAttribute?.label ||\n (filter as IFilterLibrary).parentAttribute?.label,\n lang,\n ) ||\n `${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary).parentAttribute?.label\n : (filter as IFilterAttribute).parentTreeLibrary?.parentAttribute?.label,\n lang,\n )} > ${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary)?.library.label\n : (filter as IFilterAttribute).parentTreeLibrary?.library.label,\n lang,\n )} `;\n\n const hasParent = !!(\n filter.condition === ThroughConditionFilter.THROUGH ||\n !!(filter as IFilterAttribute).attribute?.parentAttribute ||\n (filter as IFilterAttribute).parentTreeLibrary ||\n filter.type === FilterType.LIBRARY\n );\n\n const _handlePressEnter = () => {\n searchDispatch({type: SearchActionTypes.APPLY_FILTERS});\n };\n\n return (\n <>\n {showSelectTreeNodeModal && (\n <SelectTreeNodeModalOld\n selectedNodeKey={(filter.value.value as string) || (filter as IFilterTree).tree.id}\n treeId={(filter as IFilterTree).tree.id}\n onSubmit={node => updateFilterValue(_getValueFromNode(node))}\n onClose={() => setShowSelectTreeNodeModal(false)}\n isVisible={showSelectTreeNodeModal}\n canSelectRoot\n />\n )}\n <Wrapper data-testid=\"filter\" $active={filter.active} ref={setNodeRef} style={style} {...attributes}>\n <Handle className=\"filter-handle\" {...listeners} />\n <Content $hasParent={hasParent}>\n {hasParent && (\n <ParentLabel>\n <span>{t('filters.through')}:&nbsp;</span>\n <span>{getParentLabel()}</span>\n <ClearParentButton\n disabled={!filter.active}\n size=\"small\"\n onClick={_handleResetClick}\n shape=\"circle\"\n icon={<CloseCircleFilled />}\n />\n </ParentLabel>\n )}\n <Head>\n <HeadInfos>\n <FiltersDropdown\n libraryId={searchState.library.id}\n button={\n <FilterDropdownButton\n secondary={filter.condition === ThroughConditionFilter.THROUGH}\n >\n {getDropdownLabel()}\n </FilterDropdownButton>\n }\n filter={filter}\n attributes={getAttributes()}\n libraries={getLibraries()}\n trees={getTrees()}\n />\n {(filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (\n <FilterAttributeCondition\n filter={filter as IFilterAttribute | IFilterLibrary}\n updateFilterValue={updateFilterValue}\n />\n )}\n {filter.type === FilterType.TREE && <FilterTreeCondition filter={filter as IFilterTree} />}\n </HeadInfos>\n <Dropdown menu={filterOptions} placement=\"bottomRight\">\n <HeadOptions>\n <MoreOutlined />\n </HeadOptions>\n </Dropdown>\n </Head>\n <InputByFormat\n filter={filter}\n updateFilterValue={updateFilterValue}\n onPressEnter={_handlePressEnter}\n />\n </Content>\n </Wrapper>\n </>\n );\n}\n\nexport default Filter;\n"]}
@@ -56,14 +56,7 @@ const allowedConditionByFormat = {
56
56
  AttributeConditionFilter.IS_EMPTY,
57
57
  AttributeConditionFilter.IS_NOT_EMPTY,
58
58
  ],
59
- [AttributeFormat.color]: [
60
- AttributeConditionFilter.CONTAINS,
61
- AttributeConditionFilter.NOT_CONTAINS,
62
- AttributeConditionFilter.EQUAL,
63
- AttributeConditionFilter.NOT_EQUAL,
64
- AttributeConditionFilter.IS_EMPTY,
65
- AttributeConditionFilter.IS_NOT_EMPTY,
66
- ],
59
+ [AttributeFormat.color]: [],
67
60
  [AttributeFormat.rich_text]: [
68
61
  AttributeConditionFilter.CONTAINS,
69
62
  AttributeConditionFilter.NOT_CONTAINS,