@leav/ui 1.13.0-6f2d667e → 1.13.0-b8abd53d
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.
- package/dist/components/Filters/_types.d.ts +8 -0
- package/dist/components/Filters/_types.js.map +1 -1
- package/dist/components/Filters/context/filtersReducer.js +22 -4
- package/dist/components/Filters/context/filtersReducer.js.map +1 -1
- package/dist/components/Filters/filter-items/CommonFilterItem.js +4 -1
- package/dist/components/Filters/filter-items/CommonFilterItem.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/FilterDropDown.js +15 -3
- package/dist/components/Filters/filter-items/filter-type/FilterDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.d.ts +3 -1
- package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js +2 -2
- package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/_types.d.ts +3 -1
- package/dist/components/Filters/filter-items/filter-type/_types.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/tree/TreeAttributeDropDown.js +39 -83
- package/dist/components/Filters/filter-items/filter-type/tree/TreeAttributeDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/tree/useGetTreeData.d.ts +1 -0
- package/dist/components/Filters/filter-items/filter-type/tree/useGetTreeData.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/tree/useTreeNodeSelection.d.ts +21 -0
- package/dist/components/Filters/filter-items/filter-type/tree/useTreeNodeSelection.js +85 -0
- package/dist/components/Filters/filter-items/filter-type/tree/useTreeNodeSelection.js.map +1 -0
- package/dist/components/Filters/filter-items/filter-type/tree/useTreePermissions.d.ts +8 -0
- package/dist/components/Filters/filter-items/filter-type/tree/useTreePermissions.js +40 -0
- package/dist/components/Filters/filter-items/filter-type/tree/useTreePermissions.js.map +1 -0
- package/dist/components/Filters/filter-items/filter-type/tree/useTreesSearch.d.ts +2 -3
- package/dist/components/Filters/filter-items/filter-type/tree/useTreesSearch.js +2 -3
- package/dist/components/Filters/filter-items/filter-type/tree/useTreesSearch.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/tree/utils/filterTreeByPermission.d.ts +1 -1
- package/dist/components/Filters/filter-items/filter-type/tree/utils/filterTreeByPermission.js +3 -4
- package/dist/components/Filters/filter-items/filter-type/tree/utils/filterTreeByPermission.js.map +1 -1
- package/dist/components/Filters/filter-items/shared/EmptyValueCheckbox.js +1 -7
- package/dist/components/Filters/filter-items/shared/EmptyValueCheckbox.js.map +1 -1
- package/dist/components/Filters/prepareFiltersForRequest.js +37 -14
- package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
- package/dist/components/Filters/useFilters.d.ts +6 -0
- package/dist/locales/en/shared.json +2 -1
- package/dist/locales/fr/shared.json +2 -1
- package/package.json +1 -1
|
@@ -73,19 +73,21 @@ const _addValuesListForFilters = (valuesList) => [
|
|
|
73
73
|
{ operator: RecordFilterOperator.CLOSE_BRACKET },
|
|
74
74
|
];
|
|
75
75
|
const _generateConditionsFromMultipleValues = (filter) => {
|
|
76
|
-
|
|
76
|
+
const value = filter.value;
|
|
77
|
+
const nodes = isUIFilterTree(filter) ? filter.nodes : undefined;
|
|
78
|
+
if (!value || value.length === 0) {
|
|
77
79
|
return [];
|
|
78
80
|
}
|
|
79
81
|
const filtersWithOperators = [];
|
|
80
|
-
|
|
81
|
-
if (idx === 0 &&
|
|
82
|
+
value.forEach((recordId, idx) => {
|
|
83
|
+
if (idx === 0 && value.length > 1) {
|
|
82
84
|
filtersWithOperators.push({ operator: RecordFilterOperator.OPEN_BRACKET });
|
|
83
85
|
}
|
|
84
|
-
if (
|
|
86
|
+
if (nodes?.length > 0) {
|
|
85
87
|
filtersWithOperators.push({
|
|
86
88
|
value: recordId,
|
|
87
89
|
condition: filter.condition,
|
|
88
|
-
field: `${filter.attribute.id}.${
|
|
90
|
+
field: `${filter.attribute.id}.${nodes[0].libraryId}.id`,
|
|
89
91
|
});
|
|
90
92
|
}
|
|
91
93
|
else {
|
|
@@ -95,23 +97,20 @@ const _generateConditionsFromMultipleValues = (filter) => {
|
|
|
95
97
|
field: Array.isArray(filter.field) ? filter.field[idx] : filter.field,
|
|
96
98
|
});
|
|
97
99
|
}
|
|
98
|
-
if (
|
|
100
|
+
if (idx < value.length - 1) {
|
|
99
101
|
filtersWithOperators.push({
|
|
100
102
|
operator: filter.condition === RecordFilterCondition.NOT_EQUAL
|
|
101
103
|
? RecordFilterOperator.AND
|
|
102
104
|
: RecordFilterOperator.OR,
|
|
103
105
|
});
|
|
104
106
|
}
|
|
105
|
-
if (
|
|
107
|
+
if (value.length > 1 && idx >= value.length - 1) {
|
|
106
108
|
filtersWithOperators.push({ operator: RecordFilterOperator.CLOSE_BRACKET });
|
|
107
109
|
}
|
|
108
110
|
});
|
|
109
111
|
return filtersWithOperators;
|
|
110
112
|
};
|
|
111
113
|
const _addEmptyCondition = (baseConditions, filter) => {
|
|
112
|
-
if (!filter.withEmptyValues) {
|
|
113
|
-
return baseConditions;
|
|
114
|
-
}
|
|
115
114
|
const hasValue = filter.value !== null &&
|
|
116
115
|
filter.value !== undefined &&
|
|
117
116
|
(!Array.isArray(filter.value) || filter.value.length > 0);
|
|
@@ -141,6 +140,12 @@ export const prepareFiltersForRequest = (filters, filtersOperator, valuesList) =
|
|
|
141
140
|
if (filter.withEmptyValues) {
|
|
142
141
|
return true;
|
|
143
142
|
}
|
|
143
|
+
if (isUIFilterTree(filter)) {
|
|
144
|
+
// Skip if: (Toggle ON + no user selection) OR (No user selection + no initial value)
|
|
145
|
+
const noUserSelectionNoInitialValue = filter.userNodes == null && (!filter.value || filter.value.length === 0);
|
|
146
|
+
const toggleOnNoUserSelection = filter.includeHiddenOptions && filter.userNodes == null;
|
|
147
|
+
return !(noUserSelectionNoInitialValue || toggleOnNoUserSelection);
|
|
148
|
+
}
|
|
144
149
|
if (isUIFilterWithSmartFilter(filter)) {
|
|
145
150
|
return ((filter.value !== null && filter.value.length > 0) ||
|
|
146
151
|
(filter.condition && nullValueConditions.includes(filter.condition)));
|
|
@@ -173,18 +178,34 @@ export const prepareFiltersForRequest = (filters, filtersOperator, valuesList) =
|
|
|
173
178
|
.map(filter => {
|
|
174
179
|
//@ts-ignore typscript does not recognize filter as a UIFilter
|
|
175
180
|
if (isUIFilterValueList(filter) || isUIFilterTree(filter) || isUIFilterWithSmartFilter(filter)) {
|
|
181
|
+
const field = (Array.isArray(filter.field) ? filter.field[0] : filter.field) || filter.attribute.id;
|
|
176
182
|
if (filter.condition && nullValueConditions.includes(filter.condition)) {
|
|
177
183
|
const baseConditions = [
|
|
178
184
|
{
|
|
179
|
-
field
|
|
185
|
+
field,
|
|
180
186
|
condition: filter.condition,
|
|
181
187
|
value: null,
|
|
182
188
|
},
|
|
183
189
|
];
|
|
184
|
-
return
|
|
190
|
+
return !filter.withEmptyValues
|
|
191
|
+
? baseConditions
|
|
192
|
+
: _addEmptyCondition(baseConditions, filter);
|
|
193
|
+
}
|
|
194
|
+
if (isUIFilterTree(filter)) {
|
|
195
|
+
// No user selection (null or undefined): add IS_EMPTY to filters
|
|
196
|
+
// TODO : include IS_EMPTY to permissions
|
|
197
|
+
if (filter.userNodes == null) {
|
|
198
|
+
if (filter.withEmptyValues) {
|
|
199
|
+
return [{ field, condition: RecordFilterCondition.IS_EMPTY, value: null }];
|
|
200
|
+
}
|
|
201
|
+
const baseConditions = _generateConditionsFromMultipleValues(filter);
|
|
202
|
+
return _addEmptyCondition(baseConditions, filter);
|
|
203
|
+
}
|
|
185
204
|
}
|
|
186
205
|
const baseConditions = _generateConditionsFromMultipleValues(filter);
|
|
187
|
-
return
|
|
206
|
+
return !filter.withEmptyValues
|
|
207
|
+
? baseConditions
|
|
208
|
+
: _addEmptyCondition(baseConditions, filter);
|
|
188
209
|
}
|
|
189
210
|
if (isUIFilterStandard(filter)) {
|
|
190
211
|
switch (filter.attribute.format) {
|
|
@@ -204,7 +225,9 @@ export const prepareFiltersForRequest = (filters, filtersOperator, valuesList) =
|
|
|
204
225
|
value: filterWithStringValue.value,
|
|
205
226
|
},
|
|
206
227
|
];
|
|
207
|
-
return
|
|
228
|
+
return !filter.withEmptyValues
|
|
229
|
+
? baseConditions
|
|
230
|
+
: _addEmptyCondition(baseConditions, filter);
|
|
208
231
|
}));
|
|
209
232
|
return [
|
|
210
233
|
...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 IUIFilterLink,\n type IUIFilterStandard,\n type IUIFilterThrough,\n type IUIFilterTree,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n type IUIFilterValueList,\n type FiltersOperator,\n isUIFilterLinkWithValueList,\n isUIFilterWithSmartFilter,\n type IUIFilterSmartFiler,\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 = (\n filter: IUIFilterTree | IUIFilterValueList | IUIFilterSmartFiler,\n): 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 (isUIFilterWithSmartFilter(filter)) {\n return (\n (filter.value !== null && filter.value.length > 0) ||\n (filter.condition && nullValueConditions.includes(filter.condition))\n );\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) || isUIFilterWithSmartFilter(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(\n baseConditions,\n filter as IUIFilterTree | IUIFilterValueList | IUIFilterSmartFiler,\n );\n }\n const baseConditions = _generateConditionsFromMultipleValues(\n filter as IUIFilterTree | IUIFilterValueList | IUIFilterSmartFiler,\n );\n return _addEmptyCondition(\n baseConditions,\n filter as IUIFilterTree | IUIFilterValueList | IUIFilterSmartFiler,\n );\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 filterWithStringValue = filter as IUIFilterStandard | IUIFilterLink | IUIFilterThrough;\n const baseConditions: RecordFilterInput[] = [\n {\n field: filterWithStringValue.field as string,\n condition: filterWithStringValue.condition as RecordFilterCondition,\n value: filterWithStringValue.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"]}
|
|
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 IUIFilterLink,\n type IUIFilterStandard,\n type IUIFilterThrough,\n type IUIFilterTree,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n type IUIFilterValueList,\n type FiltersOperator,\n isUIFilterLinkWithValueList,\n isUIFilterWithSmartFilter,\n type IUIFilterSmartFiler,\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 = (\n filter: IUIFilterTree | IUIFilterValueList | IUIFilterSmartFiler,\n): RecordFilterInput[] => {\n const value = filter.value;\n const nodes = isUIFilterTree(filter) ? filter.nodes : undefined;\n\n if (!value || value.length === 0) {\n return [];\n }\n const filtersWithOperators: RecordFilterInput[] = [];\n value.forEach((recordId, idx) => {\n if (idx === 0 && value.length > 1) {\n filtersWithOperators.push({operator: RecordFilterOperator.OPEN_BRACKET});\n }\n if (nodes?.length > 0) {\n filtersWithOperators.push({\n value: recordId,\n condition: filter.condition,\n field: `${filter.attribute.id}.${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 (idx < value.length - 1) {\n filtersWithOperators.push({\n operator:\n filter.condition === RecordFilterCondition.NOT_EQUAL\n ? RecordFilterOperator.AND\n : RecordFilterOperator.OR,\n });\n }\n if (value.length > 1 && idx >= 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 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 if (isUIFilterTree(filter)) {\n // Skip if: (Toggle ON + no user selection) OR (No user selection + no initial value)\n const noUserSelectionNoInitialValue =\n filter.userNodes == null && (!filter.value || filter.value.length === 0);\n const toggleOnNoUserSelection = filter.includeHiddenOptions && filter.userNodes == null;\n return !(noUserSelectionNoInitialValue || toggleOnNoUserSelection);\n }\n if (isUIFilterWithSmartFilter(filter)) {\n return (\n (filter.value !== null && filter.value.length > 0) ||\n (filter.condition && nullValueConditions.includes(filter.condition))\n );\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) || isUIFilterWithSmartFilter(filter)) {\n const field = (Array.isArray(filter.field) ? filter.field[0] : filter.field) || filter.attribute.id;\n if (filter.condition && nullValueConditions.includes(filter.condition)) {\n const baseConditions: RecordFilterInput[] = [\n {\n field,\n condition: filter.condition,\n value: null,\n },\n ];\n return !filter.withEmptyValues\n ? baseConditions\n : _addEmptyCondition(\n baseConditions,\n filter as IUIFilterTree | IUIFilterValueList | IUIFilterSmartFiler,\n );\n }\n if (isUIFilterTree(filter)) {\n // No user selection (null or undefined): add IS_EMPTY to filters\n // TODO : include IS_EMPTY to permissions\n if (filter.userNodes == null) {\n if (filter.withEmptyValues) {\n return [{field, condition: RecordFilterCondition.IS_EMPTY, value: null}];\n }\n const baseConditions = _generateConditionsFromMultipleValues(filter as IUIFilterTree);\n return _addEmptyCondition(baseConditions, filter as IUIFilterTree);\n }\n }\n const baseConditions = _generateConditionsFromMultipleValues(\n filter as IUIFilterTree | IUIFilterValueList | IUIFilterSmartFiler,\n );\n return !filter.withEmptyValues\n ? baseConditions\n : _addEmptyCondition(\n baseConditions,\n filter as IUIFilterTree | IUIFilterValueList | IUIFilterSmartFiler,\n );\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 filterWithStringValue = filter as IUIFilterStandard | IUIFilterLink | IUIFilterThrough;\n const baseConditions: RecordFilterInput[] = [\n {\n field: filterWithStringValue.field as string,\n condition: filterWithStringValue.condition as RecordFilterCondition,\n value: filterWithStringValue.value,\n },\n ];\n return !filter.withEmptyValues\n ? baseConditions\n : _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"]}
|
|
@@ -2053,6 +2053,12 @@ export declare const useFilters: (pinFilters?: boolean) => {
|
|
|
2053
2053
|
libraryId: string;
|
|
2054
2054
|
}>;
|
|
2055
2055
|
field: string[];
|
|
2056
|
+
includeHiddenOptions?: boolean;
|
|
2057
|
+
userNodes?: null | Array<{
|
|
2058
|
+
nodeId: string;
|
|
2059
|
+
libraryId: string;
|
|
2060
|
+
}>;
|
|
2061
|
+
userFormattedValue?: string[] | null;
|
|
2056
2062
|
id: string;
|
|
2057
2063
|
hidden?: boolean | undefined;
|
|
2058
2064
|
withEmptyValues?: boolean;
|
|
@@ -313,7 +313,8 @@
|
|
|
313
313
|
"empty-value": "Undefined",
|
|
314
314
|
"visible-by-default": "Value(s) visible by default",
|
|
315
315
|
"hidden-by-default": "Value(s) hidden by default",
|
|
316
|
-
"select-all": "Select All"
|
|
316
|
+
"select-all": "Select All",
|
|
317
|
+
"show-hidden-options": "Include hidden options"
|
|
317
318
|
},
|
|
318
319
|
"filter-item": {
|
|
319
320
|
"no-operator": "If"
|
|
@@ -313,7 +313,8 @@
|
|
|
313
313
|
"empty-value": "Non défini",
|
|
314
314
|
"visible-by-default": "Valeurs affichée(s) par défaut",
|
|
315
315
|
"hidden-by-default": "Valeurs masquée(s) par défaut",
|
|
316
|
-
"select-all": "Tout sélectionner"
|
|
316
|
+
"select-all": "Tout sélectionner",
|
|
317
|
+
"show-hidden-options": "Inclure les options masquées"
|
|
317
318
|
},
|
|
318
319
|
"filter-item": {
|
|
319
320
|
"no-operator": "Si"
|