@leav/ui 1.6.0-dfb71145 → 1.6.0-eb8e0390

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 (164) hide show
  1. package/dist/_gqlTypes/index.d.ts +640 -701
  2. package/dist/_gqlTypes/index.js +50 -167
  3. package/dist/_gqlTypes/index.js.map +1 -1
  4. package/dist/_queries/trees/treeNodeChildrenQuery.js +2 -0
  5. package/dist/_queries/trees/treeNodeChildrenQuery.js.map +1 -1
  6. package/dist/_queries/views/viewDetailsFragment.js +1 -0
  7. package/dist/_queries/views/viewDetailsFragment.js.map +1 -1
  8. package/dist/components/AttributesSelectionList/sharedComponents.d.ts +159 -153
  9. package/dist/components/Explorer/Explorer.js +5 -3
  10. package/dist/components/Explorer/Explorer.js.map +1 -1
  11. package/dist/components/Explorer/TableCell.js +6 -7
  12. package/dist/components/Explorer/TableCell.js.map +1 -1
  13. package/dist/components/Explorer/TableNameCell.js +3 -2
  14. package/dist/components/Explorer/TableNameCell.js.map +1 -1
  15. package/dist/components/Explorer/_queries/useExplorerData.d.ts +7 -7
  16. package/dist/components/Explorer/actions-item/useEditStatusItemAction.js +3 -2
  17. package/dist/components/Explorer/actions-item/useEditStatusItemAction.js.map +1 -1
  18. package/dist/components/Explorer/actions-item/useReplaceItemAction.d.ts +2 -1
  19. package/dist/components/Explorer/actions-item/useReplaceItemAction.js +5 -4
  20. package/dist/components/Explorer/actions-item/useReplaceItemAction.js.map +1 -1
  21. package/dist/components/Explorer/actions-mass/export/ExportProfileSelectionModal.d.ts +10 -0
  22. package/dist/components/Explorer/actions-mass/export/ExportProfileSelectionModal.js +46 -0
  23. package/dist/components/Explorer/actions-mass/export/ExportProfileSelectionModal.js.map +1 -0
  24. package/dist/components/Explorer/actions-mass/export/content/NoProfiles.d.ts +1 -0
  25. package/dist/components/Explorer/actions-mass/export/content/NoProfiles.js +17 -0
  26. package/dist/components/Explorer/actions-mass/export/content/NoProfiles.js.map +1 -0
  27. package/dist/components/Explorer/actions-mass/export/content/ProfilesSelection.d.ts +8 -0
  28. package/dist/components/Explorer/actions-mass/export/content/ProfilesSelection.js +49 -0
  29. package/dist/components/Explorer/actions-mass/export/content/ProfilesSelection.js.map +1 -0
  30. package/dist/components/Explorer/actions-mass/export/useGetLibraryExportProfiles.d.ts +27 -0
  31. package/dist/components/Explorer/actions-mass/export/useGetLibraryExportProfiles.js +48 -0
  32. package/dist/components/Explorer/actions-mass/export/useGetLibraryExportProfiles.js.map +1 -0
  33. package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js +3 -2
  34. package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js.map +1 -1
  35. package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js +3 -2
  36. package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js.map +1 -1
  37. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js +3 -2
  38. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js.map +1 -1
  39. package/dist/components/Explorer/actions-mass/useExportMassAction.d.ts +7 -4
  40. package/dist/components/Explorer/actions-mass/useExportMassAction.js +80 -73
  41. package/dist/components/Explorer/actions-mass/useExportMassAction.js.map +1 -1
  42. package/dist/components/Explorer/actions-mass/useMassActions.js +3 -2
  43. package/dist/components/Explorer/actions-mass/useMassActions.js.map +1 -1
  44. package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.js +3 -2
  45. package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.js.map +1 -1
  46. package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.d.ts +2 -1
  47. package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.js +5 -4
  48. package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.js.map +1 -1
  49. package/dist/components/Explorer/link-item/LinkModal.d.ts +1 -0
  50. package/dist/components/Explorer/link-item/LinkModal.js +2 -2
  51. package/dist/components/Explorer/link-item/LinkModal.js.map +1 -1
  52. package/dist/components/Explorer/list-saved-views/SavedViews.js +4 -3
  53. package/dist/components/Explorer/list-saved-views/SavedViews.js.map +1 -1
  54. package/dist/components/Explorer/manage-view-settings/_shared/ColumnItem.js +5 -8
  55. package/dist/components/Explorer/manage-view-settings/_shared/ColumnItem.js.map +1 -1
  56. package/dist/components/Explorer/manage-view-settings/configure-display/attributes/SelectVisibleAttributes.js +3 -2
  57. package/dist/components/Explorer/manage-view-settings/configure-display/attributes/SelectVisibleAttributes.js.map +1 -1
  58. package/dist/components/Explorer/manage-view-settings/filter-items/FilterItems.js +7 -6
  59. package/dist/components/Explorer/manage-view-settings/filter-items/FilterItems.js.map +1 -1
  60. package/dist/components/Explorer/manage-view-settings/filter-items/FilterListItem.js +3 -2
  61. package/dist/components/Explorer/manage-view-settings/filter-items/FilterListItem.js.map +1 -1
  62. package/dist/components/Explorer/manage-view-settings/open-view-settings/useOpenViewSettings.js +4 -3
  63. package/dist/components/Explorer/manage-view-settings/open-view-settings/useOpenViewSettings.js.map +1 -1
  64. package/dist/components/Explorer/manage-view-settings/router-menu/SettingItem.js +3 -2
  65. package/dist/components/Explorer/manage-view-settings/router-menu/SettingItem.js.map +1 -1
  66. package/dist/components/Explorer/manage-view-settings/router-menu/SettingsPanel.js +3 -2
  67. package/dist/components/Explorer/manage-view-settings/router-menu/SettingsPanel.js.map +1 -1
  68. package/dist/components/Explorer/manage-view-settings/save-view/LabelViewFormModal.js +3 -2
  69. package/dist/components/Explorer/manage-view-settings/save-view/LabelViewFormModal.js.map +1 -1
  70. package/dist/components/Explorer/manage-view-settings/save-view/prepareViewForRequest.js +3 -0
  71. package/dist/components/Explorer/manage-view-settings/save-view/prepareViewForRequest.js.map +1 -1
  72. package/dist/components/Explorer/manage-view-settings/save-view/useCreateNewView.js +3 -2
  73. package/dist/components/Explorer/manage-view-settings/save-view/useCreateNewView.js.map +1 -1
  74. package/dist/components/Explorer/manage-view-settings/save-view/useDeleteView.js +4 -3
  75. package/dist/components/Explorer/manage-view-settings/save-view/useDeleteView.js.map +1 -1
  76. package/dist/components/Explorer/manage-view-settings/save-view/useEditLabelView.js +3 -2
  77. package/dist/components/Explorer/manage-view-settings/save-view/useEditLabelView.js.map +1 -1
  78. package/dist/components/Explorer/manage-view-settings/save-view/useResetView.js +3 -2
  79. package/dist/components/Explorer/manage-view-settings/save-view/useResetView.js.map +1 -1
  80. package/dist/components/Explorer/manage-view-settings/save-view/useShareView.js +3 -2
  81. package/dist/components/Explorer/manage-view-settings/save-view/useShareView.js.map +1 -1
  82. package/dist/components/Explorer/manage-view-settings/save-view/useUpdateView.js +3 -2
  83. package/dist/components/Explorer/manage-view-settings/save-view/useUpdateView.js.map +1 -1
  84. package/dist/components/Explorer/manage-view-settings/sort-items/SortItems.js +7 -6
  85. package/dist/components/Explorer/manage-view-settings/sort-items/SortItems.js.map +1 -1
  86. package/dist/components/Explorer/manage-view-settings/sort-items/SortListItem.js +3 -2
  87. package/dist/components/Explorer/manage-view-settings/sort-items/SortListItem.js.map +1 -1
  88. package/dist/components/Filters/_types.d.ts +2 -0
  89. package/dist/components/Filters/_types.js.map +1 -1
  90. package/dist/components/Filters/context/filtersReducer.js +1 -1
  91. package/dist/components/Filters/context/filtersReducer.js.map +1 -1
  92. package/dist/components/Filters/filter-items/CommonFilterItem.js +10 -3
  93. package/dist/components/Filters/filter-items/CommonFilterItem.js.map +1 -1
  94. package/dist/components/Filters/filter-items/EmptyValueCheckbox.d.ts +8 -0
  95. package/dist/components/Filters/filter-items/EmptyValueCheckbox.js +16 -0
  96. package/dist/components/Filters/filter-items/EmptyValueCheckbox.js.map +1 -0
  97. package/dist/components/Filters/filter-items/filter-type/BooleanAttributeDropdown.js +23 -9
  98. package/dist/components/Filters/filter-items/filter-type/BooleanAttributeDropdown.js.map +1 -1
  99. package/dist/components/Filters/filter-items/filter-type/ColorAttributeDropDown.js +9 -8
  100. package/dist/components/Filters/filter-items/filter-type/ColorAttributeDropDown.js.map +1 -1
  101. package/dist/components/Filters/filter-items/filter-type/FilterDropDown.js +3 -2
  102. package/dist/components/Filters/filter-items/filter-type/FilterDropDown.js.map +1 -1
  103. package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js +1 -1
  104. package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js.map +1 -1
  105. package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.d.ts +0 -1
  106. package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.js +17 -23
  107. package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.js.map +1 -1
  108. package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js +10 -12
  109. package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js.map +1 -1
  110. package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js +3 -13
  111. package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js.map +1 -1
  112. package/dist/components/Filters/prepareFiltersForRequest.js +36 -3
  113. package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
  114. package/dist/components/Filters/useFilters.d.ts +5 -0
  115. package/dist/components/Filters/useTransformFilters.js +4 -0
  116. package/dist/components/Filters/useTransformFilters.js.map +1 -1
  117. package/dist/components/LibraryItemsList/FiltersPanel/FiltersOptions.js +1 -8
  118. package/dist/components/LibraryItemsList/FiltersPanel/FiltersOptions.js.map +1 -1
  119. package/dist/components/LibraryItemsList/MenuView/MenuView.js +4 -4
  120. package/dist/components/LibraryItemsList/MenuView/MenuView.js.map +1 -1
  121. package/dist/components/LibraryItemsList/ViewPanel/View/View.js +3 -2
  122. package/dist/components/LibraryItemsList/ViewPanel/View/View.js.map +1 -1
  123. package/dist/components/Notifications/hooks/useNotificationSubscription.js +3 -2
  124. package/dist/components/Notifications/hooks/useNotificationSubscription.js.map +1 -1
  125. package/dist/components/RecordEdition/EditRecordContent/shared/ValuesVersionBtn/ValuesVersionBtn.js +5 -20
  126. package/dist/components/RecordEdition/EditRecordContent/shared/ValuesVersionBtn/ValuesVersionBtn.js.map +1 -1
  127. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useLinkRecords.js +4 -3
  128. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useLinkRecords.js.map +1 -1
  129. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/ExplorerWrapper.d.ts +53 -51
  130. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js +4 -3
  131. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js.map +1 -1
  132. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js +9 -2
  133. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js.map +1 -1
  134. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeFieldWrapper.d.ts +53 -51
  135. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeItem.js +3 -2
  136. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeItem.js.map +1 -1
  137. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.d.ts +2 -1
  138. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.js +4 -7
  139. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.js.map +1 -1
  140. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.d.ts +3 -2
  141. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.js +2 -2
  142. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.js.map +1 -1
  143. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js +3 -2
  144. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js.map +1 -1
  145. package/dist/components/RecordEdition/EditRecordSidebar/RecordSummary/RecordInformations/RecordInformations.js +3 -2
  146. package/dist/components/RecordEdition/EditRecordSidebar/RecordSummary/RecordInformations/RecordInformations.js.map +1 -1
  147. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js +4 -3
  148. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js.map +1 -1
  149. package/dist/components/RecordEdition/EditRecordSidebar/ValuesVersions/ValuesVersions.js +3 -2
  150. package/dist/components/RecordEdition/EditRecordSidebar/ValuesVersions/ValuesVersions.js.map +1 -1
  151. package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.d.ts +1 -0
  152. package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.js +7 -7
  153. package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.js.map +1 -1
  154. package/dist/components/SelectTreeNode/SelectTreeNode.d.ts +2 -1
  155. package/dist/components/SelectTreeNode/SelectTreeNode.js +3 -3
  156. package/dist/components/SelectTreeNode/SelectTreeNode.js.map +1 -1
  157. package/dist/components/SelectTreeNode/SelectTreeNodeContent.d.ts +2 -1
  158. package/dist/components/SelectTreeNode/SelectTreeNodeContent.js +6 -2
  159. package/dist/components/SelectTreeNode/SelectTreeNodeContent.js.map +1 -1
  160. package/dist/components/SelectTreeNode/TreeNodeTitle.js +3 -2
  161. package/dist/components/SelectTreeNode/TreeNodeTitle.js.map +1 -1
  162. package/dist/locales/en/shared.json +15 -3
  163. package/dist/locales/fr/shared.json +15 -3
  164. package/package.json +8 -9
@@ -1 +1 @@
1
- {"version":3,"file":"FilterValueListDropDown.js","sourceRoot":"","sources":["../../../../../src/components/Filters/filter-items/filter-type/FilterValueListDropDown.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 {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {FaCheck} from 'react-icons/fa';\nimport {type ComponentProps, type FunctionComponent, type KeyboardEvent, useMemo, useState} from 'react';\nimport {KitInput, KitSelect} from 'aristid-ds';\nimport styled from 'styled-components';\nimport {RecordFilterCondition} from '_ui/_gqlTypes';\nimport {\n isUIFilterLinkWithValueList,\n isUIFilterStandardWithValueList,\n type IUIFilterValueList,\n type UIFilter,\n} from '../../_types';\n\ninterface IFilterValueListDropDownProps {\n filter: IUIFilterValueList;\n onFilterChange: (filter: UIFilter) => void;\n selectDropDownRef?: React.RefObject<HTMLDivElement>;\n}\n\nconst ListDivStyled = styled.div`\n display: flex;\n flex-direction: column;\n gap: calc(var(--general-spacing-xxs) * 1px);\n`;\n\nconst OptionRow = styled.div<{$selected: boolean}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 calc(var(--general-spacing-xs) * 1px);\n height: 36px;\n border-radius: calc(var(--general-spacing-xs) * 1px);\n cursor: pointer;\n background: ${props => (props.$selected ? 'var(--general-utilities-main-light)' : 'transparent')};\n color: var(--general-utilities-text-primary);\n\n &:hover {\n background: var(--general-utilities-main-light);\n }\n`;\n\nconst RightIcon = styled(FaCheck)<{$visible: boolean}>`\n color: var(--general-utilities-main-default);\n opacity: ${props => (props.$visible ? 1 : 0)};\n transition: opacity 0.12s ease-in-out;\n`;\n\nconst Label = styled.div`\n flex: 1;\n min-width: 0; /* allow flex child to shrink for ellipsis */\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nexport const FilterValueListDropDown: FunctionComponent<IFilterValueListDropDownProps> = ({\n filter,\n onFilterChange,\n selectDropDownRef,\n}) => {\n const {t} = useSharedTranslation();\n const [searchText, setSearchText] = useState('');\n\n const getOptionLabelText = (label: any): string => (typeof label === 'string' ? label : '');\n\n const availableConditionsOptions = [\n {label: t('filters.equal'), value: RecordFilterCondition.EQUAL},\n // disable NOT_EQUAL for now because of backend condition filter issue\n // {label: t('filters.not-equal'), value: RecordFilterCondition.NOT_EQUAL}\n {label: t('filters.is-empty'), value: RecordFilterCondition.IS_EMPTY},\n {label: t('filters.is-not-empty'), value: RecordFilterCondition.IS_NOT_EMPTY},\n ];\n\n const _onConditionChanged: ComponentProps<typeof KitSelect>['onChange'] = condition => {\n onFilterChange({...filter, condition});\n };\n\n // Generate an option list for the filter dropdown to select a value\n const _createOptionListFromValueList = () => {\n let valueListFormatted: Array<{label: string; value: string}> = [];\n if (isUIFilterStandardWithValueList(filter)) {\n valueListFormatted =\n filter.attribute.valuesList?.values?.map(value => ({\n label: value,\n value,\n })) || [];\n } else if (isUIFilterLinkWithValueList(filter)) {\n valueListFormatted =\n filter.attribute.valuesList?.linkedValues?.map(value => ({\n label: value.whoAmI.label!,\n value: value.id,\n })) || [];\n }\n\n return [...valueListFormatted];\n };\n\n const _handleToggle = (toggledValue: string) => {\n // remove or add the toggledValue from the filter.value\n const currentList = filter.value || [];\n const current = new Set(currentList);\n if (current.has(toggledValue)) {\n current.delete(toggledValue);\n } else {\n current.add(toggledValue);\n }\n const valuesSelected = Array.from(current);\n\n if (valuesSelected.length === 0) {\n // Clear filter when nothing selected\n onFilterChange({\n ...filter,\n value: [],\n field: (filter as any).field,\n });\n return;\n }\n\n // Keep EQUAL/NOT_EQUAL condition per item; default to EQUAL if none chosen yet\n const condition: RecordFilterCondition =\n filter.condition === RecordFilterCondition.NOT_EQUAL\n ? RecordFilterCondition.NOT_EQUAL\n : RecordFilterCondition.EQUAL;\n\n onFilterChange({\n ...filter,\n condition,\n value: valuesSelected,\n });\n };\n\n const options = _createOptionListFromValueList();\n\n const isChecked = (optionValue: string) => {\n const set = new Set(filter.value ?? []);\n return set.has(optionValue);\n };\n\n const filteredOptions = useMemo(() => {\n if (!searchText) {\n return options;\n }\n const st = searchText.toLowerCase();\n const specials = new Set(['']);\n return options.filter(o => specials.has(o.value) || getOptionLabelText(o.label).toLowerCase().includes(st));\n }, [options, searchText]);\n\n const onKeyToggle = (e: KeyboardEvent<HTMLDivElement>, value: string) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n _handleToggle(value);\n }\n };\n\n return (\n <>\n <KitSelect\n options={availableConditionsOptions}\n onChange={_onConditionChanged}\n allowClear={false}\n value={filter.condition ?? RecordFilterCondition.EQUAL}\n aria-label={String(t('explorer.filter-condition'))}\n getPopupContainer={() => selectDropDownRef?.current ?? document.body}\n />\n {filter.condition === RecordFilterCondition.EQUAL && (\n <>\n <KitInput\n value={searchText}\n onChange={e => setSearchText(e.target.value)}\n placeholder={t('global.search') + '...'}\n allowClear\n />\n <ListDivStyled role=\"group\" aria-label={String(t('explorer.filter-value'))}>\n {filteredOptions.map(opt => {\n const selected = isChecked(opt.value);\n return (\n <OptionRow\n key={opt.value}\n $selected={selected}\n role=\"button\"\n aria-pressed={selected}\n tabIndex={0}\n onClick={() => _handleToggle(opt.value)}\n onKeyDown={e => onKeyToggle(e, opt.value)}\n >\n <Label>{opt.label}</Label>\n <RightIcon $visible={selected} />\n </OptionRow>\n );\n })}\n </ListDivStyled>\n </>\n )}\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"FilterValueListDropDown.js","sourceRoot":"","sources":["../../../../../src/components/Filters/filter-items/filter-type/FilterValueListDropDown.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 {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type FunctionComponent, type KeyboardEvent, useMemo, useState} from 'react';\nimport {KitInput} from 'aristid-ds';\nimport styled from 'styled-components';\nimport {RecordFilterCondition} from '_ui/_gqlTypes';\nimport {\n isUIFilterLinkWithValueList,\n isUIFilterStandardWithValueList,\n type IUIFilterValueList,\n type UIFilter,\n} from '../../_types';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faCheck} from '@fortawesome/free-solid-svg-icons';\nimport {EmptyValueCheckbox} from '../EmptyValueCheckbox';\n\ninterface IFilterValueListDropDownProps {\n filter: IUIFilterValueList;\n onFilterChange: (filter: UIFilter) => void;\n}\n\nconst ListDivStyled = styled.div`\n display: flex;\n flex-direction: column;\n gap: calc(var(--general-spacing-xxs) * 1px);\n`;\n\nconst OptionRow = styled.div<{$selected: boolean}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 calc(var(--general-spacing-xs) * 1px);\n height: 36px;\n border-radius: calc(var(--general-spacing-xs) * 1px);\n cursor: pointer;\n background: ${props => (props.$selected ? 'var(--general-utilities-main-light)' : 'transparent')};\n color: var(--general-utilities-text-primary);\n\n &:hover {\n background: var(--general-utilities-main-light);\n }\n`;\n\nconst RightIcon = styled(FontAwesomeIcon)<{$visible: boolean}>`\n color: var(--general-utilities-main-default);\n opacity: ${props => (props.$visible ? 1 : 0)};\n transition: opacity 0.12s ease-in-out;\n`;\n\nconst Label = styled.div`\n flex: 1;\n min-width: 0; /* allow flex child to shrink for ellipsis */\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nexport const FilterValueListDropDown: FunctionComponent<IFilterValueListDropDownProps> = ({filter, onFilterChange}) => {\n const {t} = useSharedTranslation();\n const [searchText, setSearchText] = useState('');\n\n const getOptionLabelText = (label: any): string => (typeof label === 'string' ? label : '');\n\n // Generate an option list for the filter dropdown to select a value\n const _createOptionListFromValueList = () => {\n let valueListFormatted: Array<{label: string; value: string}> = [];\n if (isUIFilterStandardWithValueList(filter)) {\n valueListFormatted =\n filter.attribute.valuesList?.values?.map(value => ({\n label: value,\n value,\n })) || [];\n } else if (isUIFilterLinkWithValueList(filter)) {\n valueListFormatted =\n filter.attribute.valuesList?.linkedValues?.map(value => ({\n label: value.whoAmI.label!,\n value: value.id,\n })) || [];\n }\n\n return [...valueListFormatted];\n };\n\n const _handleOnCheckEmptyValue = (selected: boolean) => {\n onFilterChange({\n ...filter,\n withEmptyValues: selected,\n });\n };\n\n const _handleToggle = (toggledValue: string) => {\n // remove or add the toggledValue from the filter.value\n const currentList = filter.value || [];\n const current = new Set(currentList);\n if (current.has(toggledValue)) {\n current.delete(toggledValue);\n } else {\n current.add(toggledValue);\n }\n const valuesSelected = Array.from(current);\n\n if (valuesSelected.length === 0) {\n // Clear filter when nothing selected\n onFilterChange({\n ...filter,\n value: [],\n field: (filter as any).field,\n });\n return;\n }\n\n onFilterChange({\n ...filter,\n condition: RecordFilterCondition.EQUAL,\n value: valuesSelected,\n });\n };\n\n const options = _createOptionListFromValueList();\n\n const isChecked = (optionValue: string) => {\n const set = new Set(filter.value ?? []);\n return set.has(optionValue);\n };\n\n const filteredOptions = useMemo(() => {\n if (!searchText) {\n return options;\n }\n const st = searchText.toLowerCase();\n const specials = new Set(['']);\n return options.filter(o => specials.has(o.value) || getOptionLabelText(o.label).toLowerCase().includes(st));\n }, [options, searchText]);\n\n const onKeyToggle = (e: KeyboardEvent<HTMLDivElement>, value: string) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n _handleToggle(value);\n }\n };\n\n return (\n <>\n <KitInput\n value={searchText}\n onChange={e => setSearchText(e.target.value)}\n placeholder={t('global.search') + '...'}\n allowClear\n />\n <EmptyValueCheckbox onSelect={_handleOnCheckEmptyValue} filter={filter} />\n {filter.condition === RecordFilterCondition.EQUAL && (\n <ListDivStyled role=\"group\" aria-label={String(t('explorer.filter-value'))}>\n {filteredOptions.map(opt => {\n const selected = isChecked(opt.value);\n return (\n <OptionRow\n key={opt.value}\n $selected={selected}\n role=\"button\"\n aria-pressed={selected}\n tabIndex={0}\n onClick={() => _handleToggle(opt.value)}\n onKeyDown={e => onKeyToggle(e, opt.value)}\n >\n <Label>{opt.label}</Label>\n <RightIcon $visible={selected} icon={faCheck} />\n </OptionRow>\n );\n })}\n </ListDivStyled>\n )}\n </>\n );\n};\n"]}
@@ -1,19 +1,20 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { KitSelect } from 'aristid-ds';
3
- import { useSharedTranslation } from '../../../../hooks/useSharedTranslation';
4
- import { AttributeConditionFilter } from '../../../../types';
5
2
  import { RecordFilterCondition } from '../../../../_gqlTypes';
6
3
  import { SelectTreeNode } from '../../../../components/SelectTreeNode';
7
4
  import styled from 'styled-components';
8
- import { useConditionsOptionsByType } from './useConditionOptionsByType';
5
+ import { EmptyValueCheckbox } from '../EmptyValueCheckbox';
9
6
  const DivStyled = styled.div `
10
7
  max-height: 30rem;
11
8
  overflow: auto;
12
9
  `;
13
- export const TreeAttributeDropDown = ({ filter, onFilterChange, selectDropDownRef, }) => {
14
- const { t } = useSharedTranslation();
10
+ export const TreeAttributeDropDown = ({ filter, onFilterChange, }) => {
15
11
  const selectedNodesIds = (filter.nodes ?? []).map(node => node.nodeId);
16
- const { conditionOptionsByType: availableConditionsOptions } = useConditionsOptionsByType(filter);
12
+ const _handleOnCheckEmptyValue = (selected) => {
13
+ onFilterChange({
14
+ ...filter,
15
+ withEmptyValues: selected,
16
+ });
17
+ };
17
18
  const _handleOnSelect = (node, selected) => {
18
19
  let newSelectedIds;
19
20
  if (selected) {
@@ -27,7 +28,6 @@ export const TreeAttributeDropDown = ({ filter, onFilterChange, selectDropDownRe
27
28
  nodes: newSelectedIds.map(id => ({ nodeId: id, libraryId: node.record.whoAmI.library.id })),
28
29
  });
29
30
  };
30
- const _onConditionChanged = condition => onFilterChange({ ...filter, condition });
31
31
  const _getRecursiveChildrenRecord = (nodes) => {
32
32
  const records = [];
33
33
  const collectRecordIdsRecursively = (nodeList) => {
@@ -62,12 +62,10 @@ export const TreeAttributeDropDown = ({ filter, onFilterChange, selectDropDownRe
62
62
  })),
63
63
  value: records.map(record => record.id),
64
64
  formattedValue: records.map(record => record.whoAmI.label).filter(Boolean),
65
- condition: filter.condition ?? RecordFilterCondition.EQUAL,
65
+ condition: RecordFilterCondition.EQUAL,
66
66
  field: fields,
67
67
  });
68
68
  };
69
- const showSearch = filter.condition &&
70
- ![AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY].includes(filter.condition);
71
- return (_jsxs(DivStyled, { children: [_jsx(KitSelect, { options: availableConditionsOptions, onChange: _onConditionChanged, value: filter.condition, getPopupContainer: () => selectDropDownRef?.current ?? document.body, "aria-label": String(t('explorer.filter-link-condition')) }), showSearch && (_jsx(SelectTreeNode, { treeId: filter.attribute.linkedTree?.id ?? '', selectedNodes: selectedNodesIds, onSelect: _handleOnSelect, onCheck: _handleOnCheck, multiple: true, canSelectRoot: true, checkStrictly: false, checkable: true, loadRecursively: true, noPagination: true }))] }));
69
+ return (_jsxs(DivStyled, { children: [_jsx(EmptyValueCheckbox, { onSelect: _handleOnCheckEmptyValue, filter: filter }), _jsx(SelectTreeNode, { treeId: filter.attribute.linkedTree?.id ?? '', selectedNodes: selectedNodesIds, onSelect: _handleOnSelect, onCheck: _handleOnCheck, multiple: true, canSelectRoot: true, checkStrictly: false, checkable: true, loadRecursively: true, noPagination: true })] }));
72
70
  };
73
71
  //# sourceMappingURL=TreeAttributeDropDown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeAttributeDropDown.js","sourceRoot":"","sources":["../../../../../src/components/Filters/filter-items/filter-type/TreeAttributeDropDown.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type ComponentProps, type FunctionComponent, useEffect, useState} from 'react';\nimport {KitSelect} from 'aristid-ds';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {AttributeConditionFilter, type IRecordIdentity, type ITreeNodeWithRecord} from '_ui/types';\nimport {RecordFilterCondition} from '_ui/_gqlTypes';\nimport {type IFilterChildrenTreeDropDownProps} from './_types';\nimport {SelectTreeNode} from '_ui/components/SelectTreeNode';\nimport styled from 'styled-components';\nimport {useConditionsOptionsByType} from './useConditionOptionsByType';\n\nconst DivStyled = styled.div`\n max-height: 30rem;\n overflow: auto;\n`;\n\nexport const TreeAttributeDropDown: FunctionComponent<IFilterChildrenTreeDropDownProps> = ({\n filter,\n onFilterChange,\n selectDropDownRef,\n}) => {\n const {t} = useSharedTranslation();\n\n const selectedNodesIds = (filter.nodes ?? []).map(node => node.nodeId);\n\n const {conditionOptionsByType: availableConditionsOptions} = useConditionsOptionsByType(filter);\n\n const _handleOnSelect = (node: ITreeNodeWithRecord, selected: boolean) => {\n let newSelectedIds: string[];\n if (selected) {\n newSelectedIds = [...selectedNodesIds, node.id];\n } else {\n newSelectedIds = selectedNodesIds.filter(selectedValue => selectedValue !== node.id);\n }\n onFilterChange({\n ...filter,\n nodes: newSelectedIds.map(id => ({nodeId: id, libraryId: node.record.whoAmI.library.id})),\n });\n };\n\n const _onConditionChanged: ComponentProps<typeof KitSelect>['onChange'] = condition =>\n onFilterChange({...filter, condition});\n\n const _getRecursiveChildrenRecord = (nodes: ITreeNodeWithRecord[]): IRecordIdentity[] => {\n const records: IRecordIdentity[] = [];\n const collectRecordIdsRecursively = (nodeList: ITreeNodeWithRecord[]) => {\n for (const node of nodeList) {\n if (node.id === filter.attribute.linkedTree?.id) {\n continue;\n }\n if (node.record) {\n records.push(node.record);\n }\n if (node.children && node.children.length > 0) {\n collectRecordIdsRecursively(node.children);\n }\n }\n };\n collectRecordIdsRecursively(nodes);\n // Delete duplicates\n return Array.from(new Set(records));\n };\n const _getRecursiveFieldsFromLibraries = (nodes: ITreeNodeWithRecord[]): string[] =>\n nodes\n .filter(node => !!node.record?.whoAmI?.library?.id)\n .map(node => `${filter.attribute.id}.${node.record?.whoAmI?.library?.id}.id`);\n\n const _handleOnCheck = (selection: ITreeNodeWithRecord[]) => {\n const newSelectedNodes = selection.filter(node => !node?.disabled);\n\n const records = _getRecursiveChildrenRecord(selection);\n const fields = _getRecursiveFieldsFromLibraries(selection);\n\n onFilterChange({\n ...filter,\n nodes: newSelectedNodes.map(node => ({\n nodeId: node.id,\n libraryId: node.record?.whoAmI.library.id ?? records[0]?.whoAmI.library.id ?? '',\n })),\n value: records.map(record => record.id),\n formattedValue: records.map(record => record.whoAmI.label).filter(Boolean),\n condition: filter.condition ?? RecordFilterCondition.EQUAL,\n field: fields,\n });\n };\n\n const showSearch =\n filter.condition &&\n ![AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY].includes(filter.condition);\n\n return (\n <DivStyled>\n <KitSelect\n options={availableConditionsOptions}\n onChange={_onConditionChanged}\n value={filter.condition}\n getPopupContainer={() => selectDropDownRef?.current ?? document.body}\n aria-label={String(t('explorer.filter-link-condition'))}\n />\n {showSearch && (\n <SelectTreeNode\n treeId={filter.attribute.linkedTree?.id ?? ''}\n selectedNodes={selectedNodesIds}\n onSelect={_handleOnSelect}\n onCheck={_handleOnCheck}\n multiple\n canSelectRoot={true}\n checkStrictly={false}\n checkable\n loadRecursively={true}\n noPagination={true}\n />\n )}\n </DivStyled>\n );\n};\n"]}
1
+ {"version":3,"file":"TreeAttributeDropDown.js","sourceRoot":"","sources":["../../../../../src/components/Filters/filter-items/filter-type/TreeAttributeDropDown.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent} from 'react';\nimport {type IRecordIdentity, type ITreeNodeWithRecord} from '_ui/types';\nimport {RecordFilterCondition} from '_ui/_gqlTypes';\nimport {type IFilterChildrenTreeDropDownProps} from './_types';\nimport {SelectTreeNode} from '_ui/components/SelectTreeNode';\nimport styled from 'styled-components';\nimport {EmptyValueCheckbox} from '../EmptyValueCheckbox';\n\nconst DivStyled = styled.div`\n max-height: 30rem;\n overflow: auto;\n`;\n\nexport const TreeAttributeDropDown: FunctionComponent<IFilterChildrenTreeDropDownProps> = ({\n filter,\n onFilterChange,\n}) => {\n const selectedNodesIds = (filter.nodes ?? []).map(node => node.nodeId);\n\n const _handleOnCheckEmptyValue = (selected: boolean) => {\n onFilterChange({\n ...filter,\n withEmptyValues: selected,\n });\n };\n\n const _handleOnSelect = (node: ITreeNodeWithRecord, selected: boolean) => {\n let newSelectedIds: string[];\n if (selected) {\n newSelectedIds = [...selectedNodesIds, node.id];\n } else {\n newSelectedIds = selectedNodesIds.filter(selectedValue => selectedValue !== node.id);\n }\n onFilterChange({\n ...filter,\n nodes: newSelectedIds.map(id => ({nodeId: id, libraryId: node.record.whoAmI.library.id})),\n });\n };\n\n const _getRecursiveChildrenRecord = (nodes: ITreeNodeWithRecord[]): IRecordIdentity[] => {\n const records: IRecordIdentity[] = [];\n const collectRecordIdsRecursively = (nodeList: ITreeNodeWithRecord[]) => {\n for (const node of nodeList) {\n if (node.id === filter.attribute.linkedTree?.id) {\n continue;\n }\n if (node.record) {\n records.push(node.record);\n }\n if (node.children && node.children.length > 0) {\n collectRecordIdsRecursively(node.children);\n }\n }\n };\n collectRecordIdsRecursively(nodes);\n // Delete duplicates\n return Array.from(new Set(records));\n };\n const _getRecursiveFieldsFromLibraries = (nodes: ITreeNodeWithRecord[]): string[] =>\n nodes\n .filter(node => !!node.record?.whoAmI?.library?.id)\n .map(node => `${filter.attribute.id}.${node.record?.whoAmI?.library?.id}.id`);\n\n const _handleOnCheck = (selection: ITreeNodeWithRecord[]) => {\n const newSelectedNodes = selection.filter(node => !node?.disabled);\n\n const records = _getRecursiveChildrenRecord(selection);\n const fields = _getRecursiveFieldsFromLibraries(selection);\n\n onFilterChange({\n ...filter,\n nodes: newSelectedNodes.map(node => ({\n nodeId: node.id,\n libraryId: node.record?.whoAmI.library.id ?? records[0]?.whoAmI.library.id ?? '',\n })),\n value: records.map(record => record.id),\n formattedValue: records.map(record => record.whoAmI.label).filter(Boolean),\n condition: RecordFilterCondition.EQUAL,\n field: fields,\n });\n };\n\n return (\n <DivStyled>\n <EmptyValueCheckbox onSelect={_handleOnCheckEmptyValue} filter={filter} />\n <SelectTreeNode\n treeId={filter.attribute.linkedTree?.id ?? ''}\n selectedNodes={selectedNodesIds}\n onSelect={_handleOnSelect}\n onCheck={_handleOnCheck}\n multiple\n canSelectRoot={true}\n checkStrictly={false}\n checkable\n loadRecursively={true}\n noPagination={true}\n />\n </DivStyled>\n );\n};\n"]}
@@ -40,7 +40,7 @@ export const conditionsByFormat = {
40
40
  [AttributeFormat.date_range]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],
41
41
  [AttributeFormat.encrypted]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],
42
42
  [AttributeFormat.extended]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],
43
- [AttributeFormat.color]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],
43
+ [AttributeFormat.color]: [],
44
44
  [AttributeFormat.numeric]: [
45
45
  AttributeConditionFilter.EQUAL,
46
46
  AttributeConditionFilter.NOT_EQUAL,
@@ -55,18 +55,8 @@ export const linkFilterConditions = [
55
55
  ...conditionsByFormat[AttributeFormat.text].filter(f => f !== AttributeConditionFilter.NOT_EQUAL),
56
56
  AttributeConditionFilter.THROUGH,
57
57
  ];
58
- export const treeFilterConditions = [
59
- AttributeConditionFilter.EQUAL,
60
- AttributeConditionFilter.IS_EMPTY,
61
- AttributeConditionFilter.IS_NOT_EMPTY,
62
- // disable NOT_EQUAL for now because of backend condition filter issue
63
- // AttributeConditionFilter.NOT_EQUAL
64
- ];
65
- export const valueListTextConditions = [
66
- AttributeConditionFilter.EQUAL,
67
- // disable NOT_EQUAL for now because of backend condition filter issue
68
- // AttributeConditionFilter.NOT_EQUAL
69
- ];
58
+ export const treeFilterConditions = [AttributeConditionFilter.EQUAL];
59
+ export const valueListTextConditions = [AttributeConditionFilter.EQUAL];
70
60
  export const getAttributeConditionOptions = (t) => [
71
61
  { label: t('filters.contains'), value: AttributeConditionFilter.CONTAINS },
72
62
  { label: t('filters.not-contains'), value: AttributeConditionFilter.NOT_CONTAINS },
@@ -1 +1 @@
1
- {"version":3,"file":"useConditionOptionsByType.js","sourceRoot":"","sources":["../../../../../src/components/Filters/filter-items/filter-type/useConditionOptionsByType.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 {AttributeFormat, type RecordFilterCondition} from '_ui/_gqlTypes';\nimport {AttributeConditionFilter, type AttributeConditionType, type ThroughConditionFilter} from '_ui/types';\nimport {type TFunction} from 'i18next';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n isUIFilterLink,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n type UIFilter,\n} from '../../_types';\n\nexport const conditionsByFormat: Record<AttributeFormat, RecordFilterCondition[]> = {\n [AttributeFormat.text]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.NOT_CONTAINS,\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.BEGIN_WITH,\n AttributeConditionFilter.END_WITH,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.rich_text]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.NOT_CONTAINS,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.boolean]: [],\n [AttributeFormat.date]: [\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.GREATER_THAN,\n AttributeConditionFilter.LESS_THAN,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n AttributeConditionFilter.TODAY,\n AttributeConditionFilter.TOMORROW,\n AttributeConditionFilter.YESTERDAY,\n AttributeConditionFilter.LAST_MONTH,\n AttributeConditionFilter.NEXT_MONTH,\n AttributeConditionFilter.BETWEEN,\n ],\n [AttributeFormat.date_range]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],\n [AttributeFormat.encrypted]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],\n [AttributeFormat.extended]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],\n [AttributeFormat.color]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],\n [AttributeFormat.numeric]: [\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n AttributeConditionFilter.LESS_THAN,\n AttributeConditionFilter.GREATER_THAN,\n ],\n};\n\nexport const linkFilterConditions: Array<RecordFilterCondition | ThroughConditionFilter> = [\n // disable NOT_EQUAL for now because of backend condition filter issue\n ...conditionsByFormat[AttributeFormat.text].filter(f => f !== AttributeConditionFilter.NOT_EQUAL),\n AttributeConditionFilter.THROUGH,\n];\nexport const treeFilterConditions: RecordFilterCondition[] = [\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n // disable NOT_EQUAL for now because of backend condition filter issue\n // AttributeConditionFilter.NOT_EQUAL\n];\nexport const valueListTextConditions: RecordFilterCondition[] = [\n AttributeConditionFilter.EQUAL,\n // disable NOT_EQUAL for now because of backend condition filter issue\n // AttributeConditionFilter.NOT_EQUAL\n];\n\ninterface IUIFilterConditionOption<T> {\n label: string;\n value: T;\n textByFormat?: {[key in AttributeFormat]?: string};\n}\n\nexport const getAttributeConditionOptions = (t: TFunction): Array<IUIFilterConditionOption<AttributeConditionType>> => [\n {label: t('filters.contains'), value: AttributeConditionFilter.CONTAINS},\n {label: t('filters.not-contains'), value: AttributeConditionFilter.NOT_CONTAINS},\n {label: t('filters.equal'), value: AttributeConditionFilter.EQUAL},\n {label: t('filters.not-equal'), value: AttributeConditionFilter.NOT_EQUAL},\n {label: t('filters.begin-with'), value: AttributeConditionFilter.BEGIN_WITH},\n {label: t('filters.end-with'), value: AttributeConditionFilter.END_WITH},\n {\n label: t('filters.less-than'),\n textByFormat: {[AttributeFormat.date]: String(t('filters.before'))},\n value: AttributeConditionFilter.LESS_THAN,\n },\n {\n label: t('filters.greater-than'),\n textByFormat: {[AttributeFormat.date]: String(t('filters.after'))},\n value: AttributeConditionFilter.GREATER_THAN,\n },\n {label: t('filters.today'), value: AttributeConditionFilter.TODAY},\n {label: t('filters.tomorrow'), value: AttributeConditionFilter.TOMORROW},\n {label: t('filters.yesterday'), value: AttributeConditionFilter.YESTERDAY},\n {label: t('filters.last-month'), value: AttributeConditionFilter.LAST_MONTH},\n {label: t('filters.next-month'), value: AttributeConditionFilter.NEXT_MONTH},\n {label: t('filters.between'), value: AttributeConditionFilter.BETWEEN},\n {label: t('filters.start-on'), value: AttributeConditionFilter.START_ON},\n {label: t('filters.start-after'), value: AttributeConditionFilter.START_AFTER},\n {label: t('filters.start-before'), value: AttributeConditionFilter.START_BEFORE},\n {label: t('filters.end-on'), value: AttributeConditionFilter.END_ON},\n {label: t('filters.end-after'), value: AttributeConditionFilter.END_AFTER},\n {label: t('filters.end-before'), value: AttributeConditionFilter.END_BEFORE},\n {label: t('filters.is-empty'), value: AttributeConditionFilter.IS_EMPTY},\n {label: t('filters.is-not-empty'), value: AttributeConditionFilter.IS_NOT_EMPTY},\n {label: t('filters.values-count-equal'), value: AttributeConditionFilter.VALUES_COUNT_EQUAL},\n {label: t('filters.values-count-greater-than'), value: AttributeConditionFilter.VALUES_COUNT_GREATER_THAN},\n {label: t('filters.values-count-lower-than'), value: AttributeConditionFilter.VALUES_COUNT_LOWER_THAN},\n {label: t('filters.through'), value: AttributeConditionFilter.THROUGH},\n];\n\nexport const getFirstConditionByFilterType = (\n filter: UIFilter,\n): Array<RecordFilterCondition | ThroughConditionFilter> => {\n if (isUIFilterValueList(filter)) {\n return valueListTextConditions;\n }\n if (isUIFilterStandard(filter)) {\n return conditionsByFormat[filter.attribute.format] ?? [];\n }\n if (isUIFilterLink(filter)) {\n return linkFilterConditions ?? [];\n }\n if (isUIFilterTree(filter)) {\n return treeFilterConditions ?? [];\n }\n if (isUIFilterThrough(filter)) {\n return [AttributeConditionFilter.THROUGH];\n }\n return [];\n};\n\nexport const useConditionsOptionsByType = (filter: UIFilter) => {\n const {t} = useSharedTranslation();\n\n return {\n conditionOptionsByType: getAttributeConditionOptions(t)\n .filter(({value}) => {\n // Use special condition set for text fields with closed list values\n if (isUIFilterValueList(filter)) {\n return valueListTextConditions.includes(value);\n }\n if (isUIFilterStandard(filter)) {\n return conditionsByFormat[filter.attribute.format].includes(value);\n }\n if (isUIFilterLink(filter) || isUIFilterThrough(filter)) {\n return linkFilterConditions.includes(value);\n }\n if (isUIFilterTree(filter)) {\n return treeFilterConditions.includes(value);\n }\n })\n .map(option => ({\n ...option,\n label:\n isUIFilterStandard(filter) && option.textByFormat?.[filter.attribute.format]\n ? option.textByFormat?.[filter.attribute.format]\n : option.label,\n })),\n };\n};\n"]}
1
+ {"version":3,"file":"useConditionOptionsByType.js","sourceRoot":"","sources":["../../../../../src/components/Filters/filter-items/filter-type/useConditionOptionsByType.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 {AttributeFormat, type RecordFilterCondition} from '_ui/_gqlTypes';\nimport {AttributeConditionFilter, type AttributeConditionType, type ThroughConditionFilter} from '_ui/types';\nimport {type TFunction} from 'i18next';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n isUIFilterLink,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n type UIFilter,\n} from '../../_types';\n\nexport const conditionsByFormat: Record<AttributeFormat, RecordFilterCondition[]> = {\n [AttributeFormat.text]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.NOT_CONTAINS,\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.BEGIN_WITH,\n AttributeConditionFilter.END_WITH,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.rich_text]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.NOT_CONTAINS,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.boolean]: [],\n [AttributeFormat.date]: [\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.GREATER_THAN,\n AttributeConditionFilter.LESS_THAN,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n AttributeConditionFilter.TODAY,\n AttributeConditionFilter.TOMORROW,\n AttributeConditionFilter.YESTERDAY,\n AttributeConditionFilter.LAST_MONTH,\n AttributeConditionFilter.NEXT_MONTH,\n AttributeConditionFilter.BETWEEN,\n ],\n [AttributeFormat.date_range]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],\n [AttributeFormat.encrypted]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],\n [AttributeFormat.extended]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],\n [AttributeFormat.color]: [],\n [AttributeFormat.numeric]: [\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n AttributeConditionFilter.LESS_THAN,\n AttributeConditionFilter.GREATER_THAN,\n ],\n};\n\nexport const linkFilterConditions: Array<RecordFilterCondition | ThroughConditionFilter> = [\n // disable NOT_EQUAL for now because of backend condition filter issue\n ...conditionsByFormat[AttributeFormat.text].filter(f => f !== AttributeConditionFilter.NOT_EQUAL),\n AttributeConditionFilter.THROUGH,\n];\nexport const treeFilterConditions: RecordFilterCondition[] = [AttributeConditionFilter.EQUAL];\nexport const valueListTextConditions: RecordFilterCondition[] = [AttributeConditionFilter.EQUAL];\n\ninterface IUIFilterConditionOption<T> {\n label: string;\n value: T;\n textByFormat?: {[key in AttributeFormat]?: string};\n}\n\nexport const getAttributeConditionOptions = (t: TFunction): Array<IUIFilterConditionOption<AttributeConditionType>> => [\n {label: t('filters.contains'), value: AttributeConditionFilter.CONTAINS},\n {label: t('filters.not-contains'), value: AttributeConditionFilter.NOT_CONTAINS},\n {label: t('filters.equal'), value: AttributeConditionFilter.EQUAL},\n {label: t('filters.not-equal'), value: AttributeConditionFilter.NOT_EQUAL},\n {label: t('filters.begin-with'), value: AttributeConditionFilter.BEGIN_WITH},\n {label: t('filters.end-with'), value: AttributeConditionFilter.END_WITH},\n {\n label: t('filters.less-than'),\n textByFormat: {[AttributeFormat.date]: String(t('filters.before'))},\n value: AttributeConditionFilter.LESS_THAN,\n },\n {\n label: t('filters.greater-than'),\n textByFormat: {[AttributeFormat.date]: String(t('filters.after'))},\n value: AttributeConditionFilter.GREATER_THAN,\n },\n {label: t('filters.today'), value: AttributeConditionFilter.TODAY},\n {label: t('filters.tomorrow'), value: AttributeConditionFilter.TOMORROW},\n {label: t('filters.yesterday'), value: AttributeConditionFilter.YESTERDAY},\n {label: t('filters.last-month'), value: AttributeConditionFilter.LAST_MONTH},\n {label: t('filters.next-month'), value: AttributeConditionFilter.NEXT_MONTH},\n {label: t('filters.between'), value: AttributeConditionFilter.BETWEEN},\n {label: t('filters.start-on'), value: AttributeConditionFilter.START_ON},\n {label: t('filters.start-after'), value: AttributeConditionFilter.START_AFTER},\n {label: t('filters.start-before'), value: AttributeConditionFilter.START_BEFORE},\n {label: t('filters.end-on'), value: AttributeConditionFilter.END_ON},\n {label: t('filters.end-after'), value: AttributeConditionFilter.END_AFTER},\n {label: t('filters.end-before'), value: AttributeConditionFilter.END_BEFORE},\n {label: t('filters.is-empty'), value: AttributeConditionFilter.IS_EMPTY},\n {label: t('filters.is-not-empty'), value: AttributeConditionFilter.IS_NOT_EMPTY},\n {label: t('filters.values-count-equal'), value: AttributeConditionFilter.VALUES_COUNT_EQUAL},\n {label: t('filters.values-count-greater-than'), value: AttributeConditionFilter.VALUES_COUNT_GREATER_THAN},\n {label: t('filters.values-count-lower-than'), value: AttributeConditionFilter.VALUES_COUNT_LOWER_THAN},\n {label: t('filters.through'), value: AttributeConditionFilter.THROUGH},\n];\n\nexport const getFirstConditionByFilterType = (\n filter: UIFilter,\n): Array<RecordFilterCondition | ThroughConditionFilter> => {\n if (isUIFilterValueList(filter)) {\n return valueListTextConditions;\n }\n if (isUIFilterStandard(filter)) {\n return conditionsByFormat[filter.attribute.format] ?? [];\n }\n if (isUIFilterLink(filter)) {\n return linkFilterConditions ?? [];\n }\n if (isUIFilterTree(filter)) {\n return treeFilterConditions ?? [];\n }\n if (isUIFilterThrough(filter)) {\n return [AttributeConditionFilter.THROUGH];\n }\n return [];\n};\n\nexport const useConditionsOptionsByType = (filter: UIFilter) => {\n const {t} = useSharedTranslation();\n\n return {\n conditionOptionsByType: getAttributeConditionOptions(t)\n .filter(({value}) => {\n // Use special condition set for text fields with closed list values\n if (isUIFilterValueList(filter)) {\n return valueListTextConditions.includes(value);\n }\n if (isUIFilterStandard(filter)) {\n return conditionsByFormat[filter.attribute.format].includes(value);\n }\n if (isUIFilterLink(filter) || isUIFilterThrough(filter)) {\n return linkFilterConditions.includes(value);\n }\n if (isUIFilterTree(filter)) {\n return treeFilterConditions.includes(value);\n }\n })\n .map(option => ({\n ...option,\n label:\n isUIFilterStandard(filter) && option.textByFormat?.[filter.attribute.format]\n ? option.textByFormat?.[filter.attribute.format]\n : option.label,\n })),\n };\n};\n"]}
@@ -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"]}
@@ -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,