@leav/ui 1.14.0-099d7b51 → 1.14.0-3c4d7f0f
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/context/filtersReducer.js +43 -51
- package/dist/components/Filters/context/filtersReducer.js.map +1 -1
- package/dist/components/Filters/context/useFiltersReducer.js +21 -12
- package/dist/components/Filters/context/useFiltersReducer.js.map +1 -1
- package/dist/components/Filters/filter-items/CommonFilterItem.js +11 -7
- package/dist/components/Filters/filter-items/CommonFilterItem.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js +16 -3
- package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js.map +1 -1
- package/dist/components/Filters/prepareFiltersForRequest.js +148 -115
- package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
- package/dist/components/Filters/useTransformFilters.d.ts +1 -3
- package/dist/components/Filters/useTransformFilters.js +135 -133
- package/dist/components/Filters/useTransformFilters.js.map +1 -1
- package/package.json +2 -1
|
@@ -17,64 +17,56 @@ export const FiltersActionTypes = {
|
|
|
17
17
|
RESTORE_INITIAL_VIEW_SETTINGS: 'RESTORE_INITIAL_VIEW_SETTINGS',
|
|
18
18
|
UPDATE_VIEWS: 'UPDATE_VIEWS',
|
|
19
19
|
};
|
|
20
|
-
const _buildSmartThroughFilter = (payload) => {
|
|
21
|
-
const through = payload.attribute?.smartFilter?.through;
|
|
22
|
-
return {
|
|
23
|
-
...payload,
|
|
24
|
-
field: payload.field,
|
|
25
|
-
id: window.crypto.randomUUID(),
|
|
26
|
-
condition: ThroughConditionFilter.THROUGH,
|
|
27
|
-
subCondition: AttributeConditionFilter.EQUAL,
|
|
28
|
-
subField: `${through.id}.id`,
|
|
29
|
-
value: null,
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
const _buildTreeFilter = (payload, initialFilters) => {
|
|
33
|
-
const existing = initialFilters.find(f => f.attribute.id === payload.attribute.id);
|
|
34
|
-
if (existing) {
|
|
35
|
-
// TODO: include IS_EMPTY to permissions
|
|
36
|
-
return { ...existing, withEmptyValues: true };
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
...payload,
|
|
40
|
-
id: window.crypto.randomUUID(),
|
|
41
|
-
field: Array.isArray(payload.field) ? payload.field : [payload.field],
|
|
42
|
-
condition: hasOnlyNoValueConditions(payload.attribute.format)
|
|
43
|
-
? null
|
|
44
|
-
: getFirstConditionByFilterType(payload)[0],
|
|
45
|
-
value: null,
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
const _buildDefaultFilter = (payload) => {
|
|
49
|
-
let condition = null;
|
|
50
|
-
if (payload.attribute.valuesList?.enable || isUIFilterWithSmartFilter(payload)) {
|
|
51
|
-
condition = AttributeConditionFilter.EQUAL;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
condition = hasOnlyNoValueConditions(payload.attribute.format)
|
|
55
|
-
? null
|
|
56
|
-
: (conditionsByFormat[payload.attribute.format][0] ?? null);
|
|
57
|
-
}
|
|
58
|
-
return {
|
|
59
|
-
...payload,
|
|
60
|
-
field: isLinkAttribute(payload.attribute.type) ? `${payload.field}.id` : payload.field,
|
|
61
|
-
id: window.crypto.randomUUID(),
|
|
62
|
-
condition,
|
|
63
|
-
value: null,
|
|
64
|
-
};
|
|
65
|
-
};
|
|
66
20
|
const addFilter = (state, payload) => {
|
|
21
|
+
const hasValueList = payload.attribute.valuesList?.enable;
|
|
67
22
|
const isSmartFilter = isUIFilterWithSmartFilter(payload);
|
|
68
|
-
|
|
23
|
+
let condition = hasOnlyNoValueConditions(payload.attribute.format)
|
|
24
|
+
? null
|
|
25
|
+
: (conditionsByFormat[payload.attribute.format][0] ?? null);
|
|
26
|
+
if (hasValueList || isSmartFilter) {
|
|
27
|
+
condition = AttributeConditionFilter.EQUAL;
|
|
28
|
+
}
|
|
69
29
|
let filterToAdd;
|
|
70
|
-
if (isSmartFilter &&
|
|
71
|
-
|
|
30
|
+
if (isSmartFilter && payload.attribute.smartFilter.through) {
|
|
31
|
+
if (payload.attribute.smartFilter.through) {
|
|
32
|
+
filterToAdd = {
|
|
33
|
+
...payload,
|
|
34
|
+
field: payload.field,
|
|
35
|
+
id: window.crypto.randomUUID(),
|
|
36
|
+
condition: ThroughConditionFilter.THROUGH,
|
|
37
|
+
subCondition: AttributeConditionFilter.EQUAL,
|
|
38
|
+
subField: `${payload.attribute.smartFilter.through.id}.id`,
|
|
39
|
+
value: null,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
72
42
|
}
|
|
73
43
|
else if (isUIFilterTree(payload)) {
|
|
74
|
-
|
|
44
|
+
const filterWithDefaultValues = state.initialFilters.find(initialFilter => initialFilter.attribute.id === payload.attribute.id);
|
|
45
|
+
if (filterWithDefaultValues !== undefined) {
|
|
46
|
+
// TODO : include IS_EMPTY to permissions
|
|
47
|
+
filterToAdd = { ...filterWithDefaultValues, withEmptyValues: true };
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
filterToAdd = {
|
|
51
|
+
...payload,
|
|
52
|
+
id: window.crypto.randomUUID(),
|
|
53
|
+
field: Array.isArray(payload.field) ? payload.field : [payload.field],
|
|
54
|
+
condition: hasOnlyNoValueConditions(payload.attribute.format)
|
|
55
|
+
? null
|
|
56
|
+
: getFirstConditionByFilterType(payload)[0],
|
|
57
|
+
value: null,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
75
60
|
}
|
|
76
61
|
else {
|
|
77
|
-
filterToAdd =
|
|
62
|
+
filterToAdd = {
|
|
63
|
+
...payload,
|
|
64
|
+
field: isLinkAttribute(payload.attribute.type) ? `${payload.field}.id` : payload.field,
|
|
65
|
+
id: window.crypto.randomUUID(),
|
|
66
|
+
condition,
|
|
67
|
+
value: null,
|
|
68
|
+
valuesList: hasValueList ? payload.attribute.valuesList : undefined,
|
|
69
|
+
};
|
|
78
70
|
}
|
|
79
71
|
return {
|
|
80
72
|
...state,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtersReducer.js","sourceRoot":"","sources":["../../../../src/components/Filters/context/filtersReducer.ts"],"names":[],"mappings":"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","sourcesContent":["import {AttributeFormat, type RecordFilterCondition} from '_ui/_gqlTypes';\nimport {\n type UIFilter,\n type IUIFilterStandard,\n type IUIFilterTree,\n isUIFilterLink,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n isUIFilterWithSmartFilter,\n type FiltersOperator,\n type IUIFilterLinkAttribute,\n type IUIFilterThrough,\n} from '../_types';\nimport {hasOnlyNoValueConditions, nullValueConditions} from '../conditionsHelper';\nimport {conditionsByFormat, getFirstConditionByFilterType} from '../filter-items/filter-type/useConditionOptionsByType';\nimport {AttributeConditionFilter, ThroughConditionFilter} from '_ui/types';\nimport {isLinkAttribute} from '_ui/_utils/attributeType';\nimport {type AttributesById} from '../useTransformFilters';\n\nexport type ViewType = 'table' | 'list' | 'timeline' | 'mosaic';\n\nexport const FiltersActionTypes = {\n ADD_FILTER: 'ADD_FILTER',\n SET_FILTERS: 'SET_FILTERS',\n SET_FILTERS_AND_OPERATOR: 'SET_FILTERS_AND_OPERATOR',\n RESET_FILTER: 'RESET_FILTER',\n REMOVE_FILTER: 'REMOVE_FILTER',\n MOVE_FILTER: 'MOVE_FILTER',\n CHANGE_FILTER_CONFIG: 'CHANGE_FILTER_CONFIG',\n LOAD_VIEW: 'LOAD_VIEW',\n RESET: 'RESET',\n RESTORE_INITIAL_VIEW_SETTINGS: 'RESTORE_INITIAL_VIEW_SETTINGS',\n UPDATE_VIEWS: 'UPDATE_VIEWS',\n} as const;\n\nexport interface IUIFiltersState {\n libraryId: string;\n viewId: string | null;\n filtersOperator: FiltersOperator;\n filters: UIFilter[] | IUIFilterTree[];\n initialFilters: UIFilter[] | IUIFilterTree[];\n attributesDataById: AttributesById;\n loading: boolean;\n}\n\ninterface IUIFiltersActionAddFilter {\n type: typeof FiltersActionTypes.ADD_FILTER;\n payload: Omit<UIFilter, 'id' | 'value' | 'condition'>;\n}\n\ninterface IUIFiltersActionSetFilters {\n type: typeof FiltersActionTypes.SET_FILTERS;\n payload: UIFilter[];\n}\n\ninterface IUIFiltersActionSetFiltersAndOperator {\n type: typeof FiltersActionTypes.SET_FILTERS_AND_OPERATOR;\n payload: {filters: UIFilter[]; filtersOperator: FiltersOperator};\n}\n\ninterface IIUIFiltersActionResetFilter {\n type: typeof FiltersActionTypes.RESET_FILTER;\n payload: Pick<UIFilter, 'id'>;\n}\n\ninterface IUIFiltersActionRemoveFilter {\n type: typeof FiltersActionTypes.REMOVE_FILTER;\n payload: Pick<UIFilter, 'id'>;\n}\n\ninterface IUIFiltersActionChangeFilterConfig {\n type: typeof FiltersActionTypes.CHANGE_FILTER_CONFIG;\n payload: UIFilter | IUIFilterTree;\n}\n\ninterface IUIFiltersActionMoveFilter {\n type: typeof FiltersActionTypes.MOVE_FILTER;\n payload: {\n indexFrom: number;\n indexTo: number;\n };\n}\n\ninterface IUIFiltersActionReset {\n type: typeof FiltersActionTypes.RESET;\n payload: IUIFiltersState;\n}\n\ninterface IUIFiltersActionLoadView {\n type: typeof FiltersActionTypes.LOAD_VIEW;\n payload: Pick<IUIFiltersState, 'filters' | 'viewId' | 'attributesDataById'>;\n}\n\ninterface IUIFiltersActionRestoreInitialViewSettings {\n type: typeof FiltersActionTypes.RESTORE_INITIAL_VIEW_SETTINGS;\n}\n\ninterface IUIFiltersActionUpdateViewListAndCurrentView {\n type: typeof FiltersActionTypes.UPDATE_VIEWS;\n payload: IUIFiltersState;\n}\n\ntype Reducer<\n PAYLOAD extends {\n type: keyof typeof FiltersActionTypes;\n payload?: unknown;\n } = {type: any; payload: 'no_payload'},\n> = PAYLOAD['payload'] extends 'no_payload'\n ? (state: IUIFiltersState) => IUIFiltersState\n : (state: IUIFiltersState, payload: PAYLOAD['payload']) => IUIFiltersState;\n\nexport type UIFiltersAction =\n | IUIFiltersActionAddFilter\n | IUIFiltersActionSetFilters\n | IUIFiltersActionSetFiltersAndOperator\n | IIUIFiltersActionResetFilter\n | IUIFiltersActionRemoveFilter\n | IUIFiltersActionChangeFilterConfig\n | IUIFiltersActionMoveFilter\n | IUIFiltersActionReset\n | IUIFiltersActionLoadView\n | IUIFiltersActionRestoreInitialViewSettings\n | IUIFiltersActionUpdateViewListAndCurrentView;\n\nconst _buildSmartThroughFilter = (payload: IUIFiltersActionAddFilter['payload']): IUIFilterThrough => {\n const through = (payload.attribute as IUIFilterLinkAttribute)?.smartFilter?.through;\n return {\n ...payload,\n field: payload.field as string,\n id: window.crypto.randomUUID(),\n condition: ThroughConditionFilter.THROUGH,\n subCondition: AttributeConditionFilter.EQUAL,\n subField: `${through.id}.id`,\n value: null,\n };\n};\n\nconst _buildTreeFilter = (\n payload: IUIFiltersActionAddFilter['payload'],\n initialFilters: IUIFiltersState['initialFilters'],\n): UIFilter => {\n const existing = initialFilters.find(f => f.attribute.id === payload.attribute.id);\n if (existing) {\n // TODO: include IS_EMPTY to permissions\n return {...existing, withEmptyValues: true};\n }\n return {\n ...payload,\n id: window.crypto.randomUUID(),\n field: Array.isArray(payload.field) ? payload.field : [payload.field],\n condition: hasOnlyNoValueConditions((payload as IUIFilterStandard).attribute.format)\n ? null\n : (getFirstConditionByFilterType(payload as UIFilter) as RecordFilterCondition[])[0],\n value: null,\n };\n};\n\nconst _buildDefaultFilter = (payload: IUIFiltersActionAddFilter['payload']): UIFilter => {\n let condition: RecordFilterCondition | null = null;\n if (payload.attribute.valuesList?.enable || isUIFilterWithSmartFilter(payload as UIFilter)) {\n condition = AttributeConditionFilter.EQUAL;\n } else {\n condition = hasOnlyNoValueConditions((payload as IUIFilterStandard).attribute.format)\n ? null\n : (conditionsByFormat[(payload as IUIFilterStandard).attribute.format][0] ?? null);\n }\n return {\n ...payload,\n field: isLinkAttribute(payload.attribute.type) ? `${payload.field}.id` : (payload.field as string),\n id: window.crypto.randomUUID(),\n condition,\n value: null,\n };\n};\n\nconst addFilter: Reducer<IUIFiltersActionAddFilter> = (state, payload) => {\n const isSmartFilter = isUIFilterWithSmartFilter(payload as UIFilter);\n const smartFilterThrough = (payload.attribute as IUIFilterLinkAttribute)?.smartFilter?.through;\n\n let filterToAdd: UIFilter;\n if (isSmartFilter && smartFilterThrough) {\n filterToAdd = _buildSmartThroughFilter(payload);\n } else if (isUIFilterTree(payload as UIFilter)) {\n filterToAdd = _buildTreeFilter(payload, state.initialFilters);\n } else {\n filterToAdd = _buildDefaultFilter(payload);\n }\n\n return {\n ...state,\n filters: [...state.filters, filterToAdd],\n };\n};\n\nconst setFilters: Reducer<IUIFiltersActionSetFilters> = (state, payload) => ({\n ...state,\n filters: payload,\n});\n\nconst setFiltersAndOperator: Reducer<IUIFiltersActionSetFiltersAndOperator> = (state, payload) => ({\n ...state,\n filters: payload.filters,\n filtersOperator: payload.filtersOperator,\n});\n\nconst resetFilter: Reducer<IIUIFiltersActionResetFilter> = (state, payload) => ({\n ...state,\n filters: state.filters.map(filter => {\n if (filter.id === payload.id) {\n const initialFilter = state.initialFilters.find(({id}) => id === payload.id);\n if (initialFilter) {\n return initialFilter;\n }\n\n if (isUIFilterValueList(filter)) {\n return {\n ...filter,\n condition: null,\n value: null,\n };\n }\n\n if (isUIFilterStandard(filter)) {\n return {\n ...filter,\n condition: hasOnlyNoValueConditions(filter.attribute.format)\n ? null\n : conditionsByFormat[filter.attribute.format][0],\n value: null,\n formattedValue: null,\n };\n }\n\n if (isUIFilterThrough(filter)) {\n return {\n ...filter,\n condition: ThroughConditionFilter.THROUGH,\n value: null,\n formattedValue: null,\n };\n }\n\n if (isUIFilterLink(filter)) {\n return {\n ...filter,\n condition: conditionsByFormat[AttributeFormat.text][0],\n value: null,\n formattedValue: null,\n };\n }\n\n if (isUIFilterTree(filter)) {\n return {\n ...filter,\n condition: null,\n value: null,\n nodes: null,\n userNodes: null,\n userFormattedValue: null,\n includeHiddenOptions: false,\n };\n }\n }\n return filter;\n }),\n});\n\nconst removeFilter: Reducer<IUIFiltersActionRemoveFilter> = (state, payload) => ({\n ...state,\n filters: state.filters.filter(({id}) => id !== payload.id),\n});\n\nconst changeFilterConfig: Reducer<IUIFiltersActionChangeFilterConfig> = (state, payload) => ({\n ...state,\n filters: state.filters.map(filter => {\n if (filter.id !== payload.id) {\n return filter;\n }\n if (isUIFilterTree(filter)) {\n const treePayload = payload as IUIFilterTree;\n // Convert empty user selection to null (deselecting all → no user selection)\n // Restore initial value/nodes so the filter keeps its viewByDefault values\n if (Array.isArray(treePayload.value) && treePayload.value.length === 0) {\n const initialFilter = state.initialFilters.find(({id}) => id === filter.id) as\n | IUIFilterTree\n | undefined;\n return {\n ...filter,\n ...payload,\n value: initialFilter?.value ?? null,\n nodes: initialFilter?.nodes ?? null,\n userNodes: null,\n userFormattedValue: null,\n };\n }\n return {...filter, ...payload};\n }\n if (isUIFilterValueList(filter) && filter.condition && nullValueConditions.includes(filter.condition)) {\n return {...filter, ...payload, value: null};\n }\n return {...filter, ...payload};\n }),\n});\n\nconst moveFilter: Reducer<IUIFiltersActionMoveFilter> = (state, payload) => {\n const attributesUsedToFilter = [...state.filters];\n const [filterToMove] = attributesUsedToFilter.splice(payload.indexFrom, 1);\n attributesUsedToFilter.splice(payload.indexTo, 0, filterToMove);\n return {\n ...state,\n filters: attributesUsedToFilter,\n };\n};\n\nconst reset: Reducer<IUIFiltersActionReset> = (_, payload) => payload;\n\nconst loadView: Reducer<IUIFiltersActionLoadView> = (state, payload) => ({\n ...state,\n ...payload,\n initialFilters: payload.filters,\n});\n\nconst restoreInitialViewSettings: Reducer = state => ({\n ...state,\n filters: state.initialFilters,\n});\n\nexport const filtersReducer =\n setRefetchViews =>\n (state: IUIFiltersState, action: UIFiltersAction): IUIFiltersState => {\n switch (action.type) {\n case FiltersActionTypes.ADD_FILTER: {\n return addFilter(state, action.payload);\n }\n case FiltersActionTypes.SET_FILTERS: {\n return setFilters(state, action.payload);\n }\n case FiltersActionTypes.SET_FILTERS_AND_OPERATOR: {\n return setFiltersAndOperator(state, action.payload);\n }\n case FiltersActionTypes.RESET_FILTER: {\n return resetFilter(state, action.payload);\n }\n case FiltersActionTypes.REMOVE_FILTER: {\n return removeFilter(state, action.payload);\n }\n case FiltersActionTypes.CHANGE_FILTER_CONFIG: {\n return changeFilterConfig(state, action.payload);\n }\n case FiltersActionTypes.MOVE_FILTER: {\n return moveFilter(state, action.payload);\n }\n case FiltersActionTypes.RESET: {\n return reset(state, action.payload);\n }\n case FiltersActionTypes.LOAD_VIEW: {\n return loadView(state, action.payload);\n }\n case FiltersActionTypes.RESTORE_INITIAL_VIEW_SETTINGS: {\n return restoreInitialViewSettings(state);\n }\n case FiltersActionTypes.UPDATE_VIEWS: {\n setRefetchViews?.(true);\n return state;\n }\n default:\n return state;\n }\n };\n"]}
|
|
1
|
+
{"version":3,"file":"filtersReducer.js","sourceRoot":"","sources":["../../../../src/components/Filters/context/filtersReducer.ts"],"names":[],"mappings":"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","sourcesContent":["import {AttributeFormat, type RecordFilterCondition} from '_ui/_gqlTypes';\nimport {\n type UIFilter,\n type IUIFilterStandard,\n type IUIFilterTree,\n isUIFilterLink,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n isUIFilterWithSmartFilter,\n type FiltersOperator,\n type IUIFilterLinkAttribute,\n type IUIFilterThrough,\n} from '../_types';\nimport {hasOnlyNoValueConditions, nullValueConditions} from '../conditionsHelper';\nimport {conditionsByFormat, getFirstConditionByFilterType} from '../filter-items/filter-type/useConditionOptionsByType';\nimport {AttributeConditionFilter, ThroughConditionFilter} from '_ui/types';\nimport {isLinkAttribute} from '_ui/_utils/attributeType';\nimport {type AttributesById} from '../useTransformFilters';\n\nexport type ViewType = 'table' | 'list' | 'timeline' | 'mosaic';\n\nexport const FiltersActionTypes = {\n ADD_FILTER: 'ADD_FILTER',\n SET_FILTERS: 'SET_FILTERS',\n SET_FILTERS_AND_OPERATOR: 'SET_FILTERS_AND_OPERATOR',\n RESET_FILTER: 'RESET_FILTER',\n REMOVE_FILTER: 'REMOVE_FILTER',\n MOVE_FILTER: 'MOVE_FILTER',\n CHANGE_FILTER_CONFIG: 'CHANGE_FILTER_CONFIG',\n LOAD_VIEW: 'LOAD_VIEW',\n RESET: 'RESET',\n RESTORE_INITIAL_VIEW_SETTINGS: 'RESTORE_INITIAL_VIEW_SETTINGS',\n UPDATE_VIEWS: 'UPDATE_VIEWS',\n} as const;\n\nexport interface IUIFiltersState {\n libraryId: string;\n viewId: string | null;\n filtersOperator: FiltersOperator;\n filters: UIFilter[] | IUIFilterTree[];\n initialFilters: UIFilter[] | IUIFilterTree[];\n attributesDataById: AttributesById;\n loading: boolean;\n}\n\ninterface IUIFiltersActionAddFilter {\n type: typeof FiltersActionTypes.ADD_FILTER;\n payload: Omit<UIFilter, 'id' | 'value' | 'condition'>;\n}\n\ninterface IUIFiltersActionSetFilters {\n type: typeof FiltersActionTypes.SET_FILTERS;\n payload: UIFilter[];\n}\n\ninterface IUIFiltersActionSetFiltersAndOperator {\n type: typeof FiltersActionTypes.SET_FILTERS_AND_OPERATOR;\n payload: {filters: UIFilter[]; filtersOperator: FiltersOperator};\n}\n\ninterface IIUIFiltersActionResetFilter {\n type: typeof FiltersActionTypes.RESET_FILTER;\n payload: Pick<UIFilter, 'id'>;\n}\n\ninterface IUIFiltersActionRemoveFilter {\n type: typeof FiltersActionTypes.REMOVE_FILTER;\n payload: Pick<UIFilter, 'id'>;\n}\n\ninterface IUIFiltersActionChangeFilterConfig {\n type: typeof FiltersActionTypes.CHANGE_FILTER_CONFIG;\n payload: UIFilter | IUIFilterTree;\n}\n\ninterface IUIFiltersActionMoveFilter {\n type: typeof FiltersActionTypes.MOVE_FILTER;\n payload: {\n indexFrom: number;\n indexTo: number;\n };\n}\n\ninterface IUIFiltersActionReset {\n type: typeof FiltersActionTypes.RESET;\n payload: IUIFiltersState;\n}\n\ninterface IUIFiltersActionLoadView {\n type: typeof FiltersActionTypes.LOAD_VIEW;\n payload: Pick<IUIFiltersState, 'filters' | 'viewId' | 'attributesDataById'>;\n}\n\ninterface IUIFiltersActionRestoreInitialViewSettings {\n type: typeof FiltersActionTypes.RESTORE_INITIAL_VIEW_SETTINGS;\n}\n\ninterface IUIFiltersActionUpdateViewListAndCurrentView {\n type: typeof FiltersActionTypes.UPDATE_VIEWS;\n payload: IUIFiltersState;\n}\n\ntype Reducer<\n PAYLOAD extends {\n type: keyof typeof FiltersActionTypes;\n payload?: unknown;\n } = {type: any; payload: 'no_payload'},\n> = PAYLOAD['payload'] extends 'no_payload'\n ? (state: IUIFiltersState) => IUIFiltersState\n : (state: IUIFiltersState, payload: PAYLOAD['payload']) => IUIFiltersState;\n\nexport type UIFiltersAction =\n | IUIFiltersActionAddFilter\n | IUIFiltersActionSetFilters\n | IUIFiltersActionSetFiltersAndOperator\n | IIUIFiltersActionResetFilter\n | IUIFiltersActionRemoveFilter\n | IUIFiltersActionChangeFilterConfig\n | IUIFiltersActionMoveFilter\n | IUIFiltersActionReset\n | IUIFiltersActionLoadView\n | IUIFiltersActionRestoreInitialViewSettings\n | IUIFiltersActionUpdateViewListAndCurrentView;\n\nconst addFilter: Reducer<IUIFiltersActionAddFilter> = (state, payload) => {\n const hasValueList = payload.attribute.valuesList?.enable;\n const isSmartFilter = isUIFilterWithSmartFilter(payload as UIFilter);\n let condition: RecordFilterCondition | null = hasOnlyNoValueConditions(\n (payload as IUIFilterStandard).attribute.format,\n )\n ? null\n : (conditionsByFormat[(payload as IUIFilterStandard).attribute.format][0] ?? null);\n if (hasValueList || isSmartFilter) {\n condition = AttributeConditionFilter.EQUAL;\n }\n\n let filterToAdd;\n if (isSmartFilter && (payload.attribute as IUIFilterLinkAttribute).smartFilter.through) {\n if ((payload.attribute as IUIFilterLinkAttribute).smartFilter.through) {\n filterToAdd = {\n ...payload,\n field: payload.field as string,\n id: window.crypto.randomUUID(),\n condition: ThroughConditionFilter.THROUGH,\n subCondition: AttributeConditionFilter.EQUAL,\n subField: `${(payload.attribute as IUIFilterLinkAttribute).smartFilter.through.id}.id`,\n value: null,\n } satisfies IUIFilterThrough;\n }\n } else if (isUIFilterTree(payload as UIFilter)) {\n const filterWithDefaultValues = state.initialFilters.find(\n initialFilter => initialFilter.attribute.id === payload.attribute.id,\n );\n if (filterWithDefaultValues !== undefined) {\n // TODO : include IS_EMPTY to permissions\n filterToAdd = {...filterWithDefaultValues, withEmptyValues: true};\n } else {\n filterToAdd = {\n ...payload,\n id: window.crypto.randomUUID(),\n field: Array.isArray(payload.field) ? payload.field : [payload.field],\n condition: hasOnlyNoValueConditions((payload as IUIFilterStandard).attribute.format)\n ? null\n : (getFirstConditionByFilterType(payload as UIFilter) as RecordFilterCondition[])[0],\n value: null,\n };\n }\n } else {\n filterToAdd = {\n ...payload,\n field: isLinkAttribute(payload.attribute.type) ? `${payload.field}.id` : (payload.field as string),\n id: window.crypto.randomUUID(),\n condition,\n value: null,\n valuesList: hasValueList ? payload.attribute.valuesList : undefined,\n };\n }\n\n return {\n ...state,\n filters: [...state.filters, filterToAdd],\n };\n};\n\nconst setFilters: Reducer<IUIFiltersActionSetFilters> = (state, payload) => ({\n ...state,\n filters: payload,\n});\n\nconst setFiltersAndOperator: Reducer<IUIFiltersActionSetFiltersAndOperator> = (state, payload) => ({\n ...state,\n filters: payload.filters,\n filtersOperator: payload.filtersOperator,\n});\n\nconst resetFilter: Reducer<IIUIFiltersActionResetFilter> = (state, payload) => ({\n ...state,\n filters: state.filters.map(filter => {\n if (filter.id === payload.id) {\n const initialFilter = state.initialFilters.find(({id}) => id === payload.id);\n if (initialFilter) {\n return initialFilter;\n }\n\n if (isUIFilterValueList(filter)) {\n return {\n ...filter,\n condition: null,\n value: null,\n };\n }\n\n if (isUIFilterStandard(filter)) {\n return {\n ...filter,\n condition: hasOnlyNoValueConditions(filter.attribute.format)\n ? null\n : conditionsByFormat[filter.attribute.format][0],\n value: null,\n formattedValue: null,\n };\n }\n\n if (isUIFilterThrough(filter)) {\n return {\n ...filter,\n condition: ThroughConditionFilter.THROUGH,\n value: null,\n formattedValue: null,\n };\n }\n\n if (isUIFilterLink(filter)) {\n return {\n ...filter,\n condition: conditionsByFormat[AttributeFormat.text][0],\n value: null,\n formattedValue: null,\n };\n }\n\n if (isUIFilterTree(filter)) {\n return {\n ...filter,\n condition: null,\n value: null,\n nodes: null,\n userNodes: null,\n userFormattedValue: null,\n includeHiddenOptions: false,\n };\n }\n }\n return filter;\n }),\n});\n\nconst removeFilter: Reducer<IUIFiltersActionRemoveFilter> = (state, payload) => ({\n ...state,\n filters: state.filters.filter(({id}) => id !== payload.id),\n});\n\nconst changeFilterConfig: Reducer<IUIFiltersActionChangeFilterConfig> = (state, payload) => ({\n ...state,\n filters: state.filters.map(filter => {\n if (filter.id !== payload.id) {\n return filter;\n }\n if (isUIFilterTree(filter)) {\n const treePayload = payload as IUIFilterTree;\n // Convert empty user selection to null (deselecting all → no user selection)\n // Restore initial value/nodes so the filter keeps its viewByDefault values\n if (Array.isArray(treePayload.value) && treePayload.value.length === 0) {\n const initialFilter = state.initialFilters.find(({id}) => id === filter.id) as\n | IUIFilterTree\n | undefined;\n return {\n ...filter,\n ...payload,\n value: initialFilter?.value ?? null,\n nodes: initialFilter?.nodes ?? null,\n userNodes: null,\n userFormattedValue: null,\n };\n }\n return {...filter, ...payload};\n }\n if (isUIFilterValueList(filter) && filter.condition && nullValueConditions.includes(filter.condition)) {\n return {...filter, ...payload, value: null};\n }\n return {...filter, ...payload};\n }),\n});\n\nconst moveFilter: Reducer<IUIFiltersActionMoveFilter> = (state, payload) => {\n const attributesUsedToFilter = [...state.filters];\n const [filterToMove] = attributesUsedToFilter.splice(payload.indexFrom, 1);\n attributesUsedToFilter.splice(payload.indexTo, 0, filterToMove);\n return {\n ...state,\n filters: attributesUsedToFilter,\n };\n};\n\nconst reset: Reducer<IUIFiltersActionReset> = (_, payload) => payload;\n\nconst loadView: Reducer<IUIFiltersActionLoadView> = (state, payload) => ({\n ...state,\n ...payload,\n initialFilters: payload.filters,\n});\n\nconst restoreInitialViewSettings: Reducer = state => ({\n ...state,\n filters: state.initialFilters,\n});\n\nexport const filtersReducer =\n setRefetchViews =>\n (state: IUIFiltersState, action: UIFiltersAction): IUIFiltersState => {\n switch (action.type) {\n case FiltersActionTypes.ADD_FILTER: {\n return addFilter(state, action.payload);\n }\n case FiltersActionTypes.SET_FILTERS: {\n return setFilters(state, action.payload);\n }\n case FiltersActionTypes.SET_FILTERS_AND_OPERATOR: {\n return setFiltersAndOperator(state, action.payload);\n }\n case FiltersActionTypes.RESET_FILTER: {\n return resetFilter(state, action.payload);\n }\n case FiltersActionTypes.REMOVE_FILTER: {\n return removeFilter(state, action.payload);\n }\n case FiltersActionTypes.CHANGE_FILTER_CONFIG: {\n return changeFilterConfig(state, action.payload);\n }\n case FiltersActionTypes.MOVE_FILTER: {\n return moveFilter(state, action.payload);\n }\n case FiltersActionTypes.RESET: {\n return reset(state, action.payload);\n }\n case FiltersActionTypes.LOAD_VIEW: {\n return loadView(state, action.payload);\n }\n case FiltersActionTypes.RESTORE_INITIAL_VIEW_SETTINGS: {\n return restoreInitialViewSettings(state);\n }\n case FiltersActionTypes.UPDATE_VIEWS: {\n setRefetchViews?.(true);\n return state;\n }\n default:\n return state;\n }\n };\n"]}
|
|
@@ -5,7 +5,6 @@ import { useTransformFilters } from '../useTransformFilters';
|
|
|
5
5
|
import { useExplorerAttributesQuery, useGetViewsListQuery } from '../../../_gqlTypes';
|
|
6
6
|
import { useSharedTranslation } from '../../../hooks/useSharedTranslation';
|
|
7
7
|
import { useGetTreeFilters } from './useGetTreeFilters';
|
|
8
|
-
const _selectUserView = (viewList, viewId) => (viewId && viewList.find(v => v.id === viewId)) || viewList.at(-1) || null;
|
|
9
8
|
export const useFiltersReducer = ({ libraryId, viewId, filters, filtersOperator = 'AND', ignoreViewByDefault = false, skip, }) => {
|
|
10
9
|
const { t } = useSharedTranslation();
|
|
11
10
|
const [refetchViews, setRefetchViews] = useState(false);
|
|
@@ -15,20 +14,30 @@ export const useFiltersReducer = ({ libraryId, viewId, filters, filtersOperator
|
|
|
15
14
|
});
|
|
16
15
|
const { toValidFilters, toUIFilters } = useTransformFilters();
|
|
17
16
|
const needToReload = refetchViews || (libraryId && libraryId !== filtersData.libraryId);
|
|
18
|
-
const {
|
|
17
|
+
const {
|
|
18
|
+
/**
|
|
19
|
+
* List of my views and shared views
|
|
20
|
+
*/
|
|
21
|
+
data: viewData, loading: viewsLoading, } = useGetViewsListQuery({
|
|
19
22
|
skip: skip || (libraryId === null && !needToReload),
|
|
20
|
-
variables: {
|
|
23
|
+
variables: {
|
|
24
|
+
libraryId: libraryId,
|
|
25
|
+
},
|
|
21
26
|
});
|
|
22
27
|
const { data: treeFilters, loading: treeFiltersLoading } = useGetTreeFilters({ libraryId, skip });
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const
|
|
28
|
+
let userView;
|
|
29
|
+
if (viewId) {
|
|
30
|
+
userView = viewData?.views?.list?.find(viewItem => viewItem.id === viewId);
|
|
31
|
+
}
|
|
32
|
+
userView = userView ?? viewData?.views?.list?.at(-1) ?? null;
|
|
33
|
+
const userViewFilters = ignoreViewByDefault ? [] : toValidFilters(userView?.filters ?? []);
|
|
34
|
+
const preparedDefaultFilters = toValidFilters(filters ?? []);
|
|
35
|
+
const allFilters = preparedDefaultFilters.concat(userViewFilters);
|
|
36
|
+
const attributesToGet = allFilters.map(filter => filter.field);
|
|
30
37
|
const { data: attributesData, loading: attributesLoading } = useExplorerAttributesQuery({
|
|
31
|
-
variables: {
|
|
38
|
+
variables: {
|
|
39
|
+
ids: attributesToGet,
|
|
40
|
+
},
|
|
32
41
|
skip: libraryId === null || viewsLoading || attributesToGet.length === 0,
|
|
33
42
|
});
|
|
34
43
|
const attributesDataById = useMemo(() => (attributesData?.attributes?.list ?? []).reduce((acc, attr) => {
|
|
@@ -40,7 +49,7 @@ export const useFiltersReducer = ({ libraryId, viewId, filters, filtersOperator
|
|
|
40
49
|
useEffect(() => {
|
|
41
50
|
if (!viewsLoading && !treeFiltersLoading) {
|
|
42
51
|
setRefetchViews(false);
|
|
43
|
-
const uiFilters = toUIFilters({ filters: allFilters, treeFilters, attributesDataById, t });
|
|
52
|
+
const uiFilters = toUIFilters({ filters: allFilters ?? [], treeFilters, attributesDataById, t });
|
|
44
53
|
dispatch({
|
|
45
54
|
type: 'RESET',
|
|
46
55
|
payload: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFiltersReducer.js","sourceRoot":"","sources":["../../../../src/components/Filters/context/useFiltersReducer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAsB,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAyB,0BAA0B,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAEvG,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useFiltersReducer.js","sourceRoot":"","sources":["../../../../src/components/Filters/context/useFiltersReducer.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useEffect, useMemo, useReducer, useState} from 'react';\nimport {filtersReducer} from './filtersReducer';\nimport {filtersInitialState} from './filtersInitialState';\nimport {type AttributesById, useTransformFilters} from '../useTransformFilters';\nimport {type GetViewsListQuery, useExplorerAttributesQuery, useGetViewsListQuery} from '_ui/_gqlTypes';\nimport {type FiltersOperator, type UIFilter} from '../_types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {useGetTreeFilters} from './useGetTreeFilters';\n\nexport interface IFiltersProviderProps {\n libraryId: string | null;\n viewId?: string;\n filters?: UIFilter[];\n filtersOperator?: FiltersOperator;\n ignoreViewByDefault?: boolean;\n pinFilters?: boolean;\n skip: boolean;\n}\n\nexport const useFiltersReducer = ({\n libraryId,\n viewId,\n filters,\n filtersOperator = 'AND',\n ignoreViewByDefault = false,\n skip,\n}: IFiltersProviderProps) => {\n const {t} = useSharedTranslation();\n const [refetchViews, setRefetchViews] = useState(false);\n const [filtersData, dispatch] = useReducer(filtersReducer(setRefetchViews), {\n ...filtersInitialState,\n filtersOperator: filtersOperator ?? filtersInitialState.filtersOperator,\n });\n const {toValidFilters, toUIFilters} = useTransformFilters();\n\n const needToReload = refetchViews || (libraryId && libraryId !== filtersData.libraryId);\n\n const {\n /**\n * List of my views and shared views\n */\n data: viewData,\n loading: viewsLoading,\n } = useGetViewsListQuery({\n skip: skip || (libraryId === null && !needToReload),\n variables: {\n libraryId: libraryId as string,\n },\n });\n\n const {data: treeFilters, loading: treeFiltersLoading} = useGetTreeFilters({libraryId, skip});\n\n let userView: GetViewsListQuery['views']['list'][number] | undefined;\n if (viewId) {\n userView = viewData?.views?.list?.find(viewItem => viewItem.id === viewId);\n }\n userView = userView ?? viewData?.views?.list?.at(-1) ?? null;\n\n const userViewFilters = ignoreViewByDefault ? [] : toValidFilters(userView?.filters ?? []);\n\n const preparedDefaultFilters = toValidFilters(filters ?? []);\n const allFilters = preparedDefaultFilters.concat(userViewFilters);\n\n const attributesToGet = allFilters.map(filter => filter.field);\n\n const {data: attributesData, loading: attributesLoading} = useExplorerAttributesQuery({\n variables: {\n ids: attributesToGet,\n },\n skip: libraryId === null || viewsLoading || attributesToGet.length === 0,\n });\n\n const attributesDataById = useMemo(\n () =>\n (attributesData?.attributes?.list ?? []).reduce<AttributesById>((acc, attr) => {\n if (attr.permissions.access_attribute) {\n acc[attr.id] = attr;\n }\n return acc;\n }, {}),\n [attributesData],\n );\n\n useEffect(() => {\n if (!viewsLoading && !treeFiltersLoading) {\n setRefetchViews(false);\n const uiFilters = toUIFilters({filters: allFilters ?? [], treeFilters, attributesDataById, t});\n dispatch({\n type: 'RESET',\n payload: {\n libraryId,\n viewId,\n filtersOperator: filtersOperator ?? filtersInitialState.filtersOperator,\n filters: uiFilters,\n initialFilters: uiFilters,\n attributesDataById,\n loading: viewsLoading || attributesLoading,\n },\n });\n }\n }, [attributesDataById, viewsLoading, treeFiltersLoading]);\n\n return {filtersData, dispatch};\n};\n"]}
|
|
@@ -42,14 +42,18 @@ const isActiveAttribute = (filter) => filter.attribute.format === AttributeForma
|
|
|
42
42
|
isUIFilterStandard(filter);
|
|
43
43
|
export const CommonFilterItem = ({ filter, isPinned = false, readonly = false, disabled, }) => {
|
|
44
44
|
const { t } = useSharedTranslation();
|
|
45
|
-
|
|
46
|
-
// Active attribute
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
let canReset = true;
|
|
46
|
+
// Active attribute is a special case, we need to handle it differently
|
|
47
|
+
if (isActiveAttribute(filter)) {
|
|
48
|
+
canReset = false;
|
|
49
|
+
if (!filter.value) {
|
|
50
|
+
filter.value = 'true';
|
|
51
|
+
filter.formattedValue = t('explorer.true');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return (_jsx(FilterStyled, { disabled: disabled, readonly: readonly, expandable: !readonly, label: filter.attribute.label, values: getFilterValues(filter, t), dropDownProps: {
|
|
51
55
|
placement: 'bottomLeft',
|
|
52
|
-
dropdownRender: () =>
|
|
56
|
+
dropdownRender: () => _jsx(FilterDropDown, { filter: filter, canReset: canReset, canRemove: !isPinned }),
|
|
53
57
|
}, showSingleValue: true }));
|
|
54
58
|
};
|
|
55
59
|
//# sourceMappingURL=CommonFilterItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommonFilterItem.js","sourceRoot":"","sources":["../../../../src/components/Filters/filter-items/CommonFilterItem.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CommonFilterItem.js","sourceRoot":"","sources":["../../../../src/components/Filters/filter-items/CommonFilterItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import {type FunctionComponent} from 'react';\nimport {FilterDropDown} from '../filter-items/filter-type/FilterDropDown';\nimport styled from 'styled-components';\nimport {KitFilter} from 'aristid-ds';\nimport {AttributeFormat, type RecordFilterCondition} from '_ui/_gqlTypes';\nimport {getAttributeConditionOptions} from '../filter-items/filter-type/useConditionOptionsByType';\nimport {type TFunction} from 'i18next';\nimport {nullValueConditions} from '../conditionsHelper';\nimport {\n isUIFilterStandard,\n isUIFilterTree,\n isUIFilterWithSmartFilter,\n type IUIFilterStandard,\n type UIFilter,\n} from '../_types';\nimport {ACTIVE_ATTRIBUTE_ID} from '_ui/constants';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\n\nconst FilterStyled = styled(KitFilter)`\n flex: 0 0 auto;\n`;\nconst getFilterValues = (filter: UIFilter, t: TFunction): string[] => {\n if (filter.condition && nullValueConditions.includes(filter.condition as RecordFilterCondition)) {\n const conditionOption = getAttributeConditionOptions(t).find(option => option.value === filter.condition);\n return [conditionOption?.label ?? ''];\n }\n\n const filterValues: string[] = filter.withEmptyValues ? [t('filters.empty-value')] : [];\n\n if (isUIFilterTree(filter)) {\n return [...filterValues, ...(filter.userFormattedValue ?? [])];\n }\n\n if (isUIFilterWithSmartFilter(filter)) {\n return [...filterValues, ...(filter.formattedValue ?? [])];\n }\n\n if (\n isUIFilterStandard(filter) &&\n [AttributeFormat.date, AttributeFormat.boolean].includes(filter.attribute.format)\n ) {\n return filter.formattedValue ? [...filterValues, filter.formattedValue] : filterValues;\n }\n\n const valuesList = filter.attribute.valuesList;\n if (!valuesList || !('linkedValues' in valuesList) || !filter.value) {\n return filterValues;\n }\n\n const valuesFilter = Array.isArray(filter.value) ? filter.value : [filter.value];\n const labels = (valuesList.linkedValues ?? [])\n .filter(val => valuesFilter.includes(val?.id))\n .map(val => val?.whoAmI?.label ?? '');\n return [...filterValues, ...labels];\n};\n\nexport interface ICommonFilterProps {\n filter: UIFilter;\n isPinned?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n}\n\nconst isActiveAttribute = (filter: UIFilter): filter is IUIFilterStandard =>\n filter.attribute.format === AttributeFormat.boolean &&\n filter.attribute.id === ACTIVE_ATTRIBUTE_ID &&\n isUIFilterStandard(filter);\n\nexport const CommonFilterItem: FunctionComponent<ICommonFilterProps> = ({\n filter,\n isPinned = false,\n readonly = false,\n disabled,\n}) => {\n const {t} = useSharedTranslation();\n\n let canReset = true;\n\n // Active attribute is a special case, we need to handle it differently\n if (isActiveAttribute(filter)) {\n canReset = false;\n\n if (!filter.value) {\n filter.value = 'true';\n filter.formattedValue = t('explorer.true');\n }\n }\n\n return (\n <FilterStyled\n disabled={disabled}\n readonly={readonly}\n expandable={!readonly}\n label={filter.attribute.label}\n values={getFilterValues(filter, t)}\n dropDownProps={{\n placement: 'bottomLeft',\n dropdownRender: () => <FilterDropDown filter={filter} canReset={canReset} canRemove={!isPinned} />,\n }}\n showSingleValue\n />\n );\n};\n"]}
|
|
@@ -110,14 +110,27 @@ export const getFirstConditionByFilterType = (filter) => {
|
|
|
110
110
|
};
|
|
111
111
|
export const useConditionsOptionsByType = (filter) => {
|
|
112
112
|
const { t } = useSharedTranslation();
|
|
113
|
-
const allowedConditions = getFirstConditionByFilterType(filter);
|
|
114
113
|
return {
|
|
115
114
|
conditionOptionsByType: getAttributeConditionOptions(t)
|
|
116
|
-
.filter(({ value }) =>
|
|
115
|
+
.filter(({ value }) => {
|
|
116
|
+
// Use special condition set for text fields with closed list values
|
|
117
|
+
if (isUIFilterValueList(filter)) {
|
|
118
|
+
return valueListTextConditions.includes(value);
|
|
119
|
+
}
|
|
120
|
+
if (isUIFilterStandard(filter)) {
|
|
121
|
+
return conditionsByFormat[filter.attribute.format].includes(value);
|
|
122
|
+
}
|
|
123
|
+
if (isUIFilterLink(filter) || isUIFilterThrough(filter)) {
|
|
124
|
+
return linkFilterConditions.includes(value);
|
|
125
|
+
}
|
|
126
|
+
if (isUIFilterTree(filter)) {
|
|
127
|
+
return treeFilterConditions.includes(value);
|
|
128
|
+
}
|
|
129
|
+
})
|
|
117
130
|
.map(option => ({
|
|
118
131
|
...option,
|
|
119
132
|
label: isUIFilterStandard(filter) && option.textByFormat?.[filter.attribute.format]
|
|
120
|
-
? option.textByFormat[filter.attribute.format]
|
|
133
|
+
? option.textByFormat?.[filter.attribute.format]
|
|
121
134
|
: option.label,
|
|
122
135
|
})),
|
|
123
136
|
};
|
|
@@ -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":["import {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 const allowedConditions = getFirstConditionByFilterType(filter);\n\n return {\n conditionOptionsByType: getAttributeConditionOptions(t)\n .filter(({value}) => allowedConditions.includes(value))\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":["import {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 as RecordFilterCondition);\n }\n if (isUIFilterStandard(filter)) {\n return conditionsByFormat[filter.attribute.format].includes(value as RecordFilterCondition);\n }\n if (isUIFilterLink(filter) || isUIFilterThrough(filter)) {\n return linkFilterConditions.includes(value);\n }\n if (isUIFilterTree(filter)) {\n return treeFilterConditions.includes(value as RecordFilterCondition);\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"]}
|