@reltio/components 1.4.1731 → 1.4.1733
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/cjs/components/AttributesFiltersBuilder/AttributesFiltersBuilder.d.ts +7 -3
- package/cjs/components/AttributesFiltersBuilder/AttributesFiltersBuilder.js +34 -19
- package/cjs/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.js +7 -5
- package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.js +3 -2
- package/cjs/components/AttributesFiltersBuilder/components/ValuesEditor/ValuesEditor.js +5 -3
- package/cjs/components/AttributesFiltersBuilder/components/ValuesEditor/styles.js +1 -1
- package/cjs/components/AttributesFiltersBuilder/helpers.d.ts +5 -4
- package/cjs/components/AttributesFiltersBuilder/helpers.js +33 -19
- package/cjs/components/AttributesFiltersBuilder/types.d.ts +3 -2
- package/cjs/components/AttributesFiltersButton/AttributesFiltersButton.d.ts +10 -3
- package/cjs/components/AttributesFiltersButton/AttributesFiltersButton.js +10 -6
- package/cjs/components/BasicAttributeSelector/styles.js +1 -0
- package/cjs/components/LogicOperator/LogicOperator.d.ts +9 -0
- package/cjs/components/LogicOperator/LogicOperator.js +29 -0
- package/cjs/components/LogicOperator/styles.d.ts +2 -0
- package/cjs/components/LogicOperator/styles.js +15 -0
- package/cjs/components/ReltioGridLayout/ReltioGridLayout.d.ts +3 -6
- package/cjs/components/ReltioGridLayout/ReltioGridLayout.js +19 -1
- package/cjs/components/index.d.ts +1 -0
- package/cjs/components/index.js +3 -1
- package/cjs/types/index.d.ts +16 -13
- package/esm/components/AttributesFiltersBuilder/AttributesFiltersBuilder.d.ts +7 -3
- package/esm/components/AttributesFiltersBuilder/AttributesFiltersBuilder.js +36 -21
- package/esm/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.js +9 -7
- package/esm/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.js +3 -2
- package/esm/components/AttributesFiltersBuilder/components/ValuesEditor/ValuesEditor.js +5 -3
- package/esm/components/AttributesFiltersBuilder/components/ValuesEditor/styles.js +1 -1
- package/esm/components/AttributesFiltersBuilder/helpers.d.ts +5 -4
- package/esm/components/AttributesFiltersBuilder/helpers.js +34 -20
- package/esm/components/AttributesFiltersBuilder/types.d.ts +3 -2
- package/esm/components/AttributesFiltersButton/AttributesFiltersButton.d.ts +10 -3
- package/esm/components/AttributesFiltersButton/AttributesFiltersButton.js +10 -6
- package/esm/components/BasicAttributeSelector/styles.js +1 -0
- package/esm/components/LogicOperator/LogicOperator.d.ts +9 -0
- package/esm/components/LogicOperator/LogicOperator.js +24 -0
- package/esm/components/LogicOperator/styles.d.ts +2 -0
- package/esm/components/LogicOperator/styles.js +13 -0
- package/esm/components/ReltioGridLayout/ReltioGridLayout.d.ts +3 -6
- package/esm/components/ReltioGridLayout/ReltioGridLayout.js +21 -3
- package/esm/components/index.d.ts +1 -0
- package/esm/components/index.js +1 -0
- package/esm/types/index.d.ts +16 -13
- package/package.json +2 -2
package/cjs/types/index.d.ts
CHANGED
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { AttributeType, SearchFilter } from '@reltio/mdm-sdk';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
x: number;
|
|
6
|
-
y: number;
|
|
7
|
-
w: number;
|
|
8
|
-
h: number;
|
|
9
|
-
minW?: number;
|
|
10
|
-
minH?: number;
|
|
11
|
-
maxW?: number;
|
|
12
|
-
maxH?: number;
|
|
13
|
-
static?: boolean;
|
|
14
|
-
};
|
|
2
|
+
import { AttributeType, SearchFilter, SearchOperator } from '@reltio/mdm-sdk';
|
|
3
|
+
import { Layout as LayoutItem } from 'react-grid-layout';
|
|
4
|
+
export type ReactGridLayoutItem = LayoutItem;
|
|
15
5
|
export type ReltioGridLayoutOptions = {
|
|
16
6
|
cols: number;
|
|
17
7
|
rowHeight: number;
|
|
@@ -46,6 +36,7 @@ export type FiltersRowData = {
|
|
|
46
36
|
filter: string;
|
|
47
37
|
id: number;
|
|
48
38
|
values: SearchFilter['values'];
|
|
39
|
+
operator?: SearchOperator;
|
|
49
40
|
};
|
|
50
41
|
export type AttributeSelectorItem = {
|
|
51
42
|
attrType?: AttributeType;
|
|
@@ -62,6 +53,11 @@ export type AttributeSelectorItemsGroup = {
|
|
|
62
53
|
title: string;
|
|
63
54
|
attributes: AttributeSelectorItem[];
|
|
64
55
|
};
|
|
56
|
+
export type AttributesTypesGroup = {
|
|
57
|
+
id?: string;
|
|
58
|
+
title: string;
|
|
59
|
+
attributeTypes: AttributeType[];
|
|
60
|
+
};
|
|
65
61
|
export type AttributeSelectionInfo = {
|
|
66
62
|
index: number;
|
|
67
63
|
checked: boolean;
|
|
@@ -137,3 +133,10 @@ export type AnyAction = {
|
|
|
137
133
|
type: string;
|
|
138
134
|
[key: string]: any;
|
|
139
135
|
};
|
|
136
|
+
export type AttributesFilterComponentsClasses = {
|
|
137
|
+
attributeSelectorContainer?: string;
|
|
138
|
+
valuesEditorContainer?: string;
|
|
139
|
+
filterSelectorContainer?: string;
|
|
140
|
+
actionsContainer?: string;
|
|
141
|
+
filterPopup?: string;
|
|
142
|
+
};
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { SearchFilter
|
|
2
|
+
import { SearchFilter } from '@reltio/mdm-sdk';
|
|
3
|
+
import { AttributeSelectionInfo, AttributesFilterComponentsClasses, AttributesTypesGroup } from '../../types';
|
|
3
4
|
type Props = {
|
|
5
|
+
classes?: AttributesFilterComponentsClasses;
|
|
4
6
|
filters: SearchFilter[];
|
|
5
7
|
onChange: (filters: SearchFilter[]) => void;
|
|
6
|
-
|
|
8
|
+
attributesTypesGroups: AttributesTypesGroup[];
|
|
7
9
|
components?: {
|
|
8
10
|
ValuesEditor?: React.ElementType;
|
|
9
11
|
FilterSelector?: React.ElementType;
|
|
12
|
+
LogicalOperator?: React.ElementType;
|
|
10
13
|
};
|
|
14
|
+
onFilterAttributeChange?: (attrSelectInfo: AttributeSelectionInfo) => void;
|
|
11
15
|
};
|
|
12
|
-
declare const _default: React.MemoExoticComponent<({
|
|
16
|
+
declare const _default: React.MemoExoticComponent<({ classes, attributesTypesGroups, filters, onChange, components, onFilterAttributeChange }: Props) => JSX.Element>;
|
|
13
17
|
export default _default;
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
1
12
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
13
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
14
|
if (ar || !(i in from)) {
|
|
@@ -9,35 +20,43 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
9
20
|
};
|
|
10
21
|
import React, { useCallback, useRef, useMemo, useEffect, memo } from 'react';
|
|
11
22
|
import { always, evolve } from 'ramda';
|
|
12
|
-
import { getEntityType } from '@reltio/mdm-sdk';
|
|
13
|
-
import { getAttributeSelectorItems,
|
|
23
|
+
import { SearchOperator, findClosestCommonAncestor, getEntityType } from '@reltio/mdm-sdk';
|
|
24
|
+
import { getAttributeSelectorItems, getEntityTypeFromAttrTypes, getRowsDataFromFilters } from './helpers';
|
|
14
25
|
import FilterSelector from './components/FilterSelector/FilterSelector';
|
|
15
26
|
import RowActions from './components/RowActions/RowActions';
|
|
16
27
|
import QueryBuilderRowsGroup from '../QueryBuilderRowsGroup/QueryBuilderRowsGroup';
|
|
28
|
+
import { useMdmMetadata } from '../../contexts';
|
|
29
|
+
import { EmptyStub } from '../../core';
|
|
17
30
|
import AttributeSelector from './components/AttributeSelector/AttributeSelector';
|
|
18
31
|
import ValuesEditor from './components/ValuesEditor/ValuesEditor';
|
|
19
|
-
import { useMdmMetadata } from '../../contexts';
|
|
20
32
|
import { useStyles } from './styles';
|
|
21
|
-
var EMPTY_FILTER = { fieldName: null, filter: null, values: [] };
|
|
22
|
-
var Stub = function () { return null; };
|
|
33
|
+
var EMPTY_FILTER = { fieldName: null, filter: null, operator: SearchOperator.and, values: [] };
|
|
23
34
|
var AttributesFiltersBuilder = function (_a) {
|
|
24
|
-
var
|
|
25
|
-
var CustomValuesEditor = components.ValuesEditor, CustomFilterSelector = components.FilterSelector;
|
|
26
|
-
var
|
|
35
|
+
var _b = _a.classes, classes = _b === void 0 ? {} : _b, attributesTypesGroups = _a.attributesTypesGroups, filters = _a.filters, onChange = _a.onChange, _c = _a.components, components = _c === void 0 ? {} : _c, onFilterAttributeChange = _a.onFilterAttributeChange;
|
|
36
|
+
var CustomValuesEditor = components.ValuesEditor, CustomFilterSelector = components.FilterSelector, _d = components.LogicalOperator, LogicalOperator = _d === void 0 ? EmptyStub : _d;
|
|
37
|
+
var styles = useStyles();
|
|
27
38
|
var actualFilters = useRef(filters);
|
|
28
39
|
var attributeFilterRef = useRef(null);
|
|
29
40
|
var lastAttributesCountRef = useRef(null);
|
|
30
41
|
var attributesCountRef = useRef(null);
|
|
31
42
|
var metadata = useMdmMetadata();
|
|
32
|
-
var entityType = getEntityType(metadata, getEntityTypeFromAttrTypes(attributeTypes));
|
|
33
43
|
actualFilters.current = filters;
|
|
34
44
|
var rowClasses = useMemo(function () { return ({
|
|
35
|
-
attributeSelectorContainer: attrSelector,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var
|
|
45
|
+
attributeSelectorContainer: classes.attributeSelectorContainer || styles.attrSelector,
|
|
46
|
+
valuesEditorContainer: classes.valuesEditorContainer || '',
|
|
47
|
+
filterSelectorContainer: styles.filterSelector,
|
|
48
|
+
actionsContainer: styles.actionContainer
|
|
49
|
+
}); }, [classes, styles]);
|
|
50
|
+
var currentEntityType = useMemo(function () {
|
|
51
|
+
var entityTypesUris = attributesTypesGroups.map(function (_a) {
|
|
52
|
+
var attributeTypes = _a.attributeTypes;
|
|
53
|
+
return getEntityTypeFromAttrTypes(attributeTypes);
|
|
54
|
+
});
|
|
55
|
+
var closestEntityTypeAncestorUri = findClosestCommonAncestor(metadata, entityTypesUris);
|
|
56
|
+
return getEntityType(metadata, closestEntityTypeAncestorUri);
|
|
57
|
+
}, [attributesTypesGroups, metadata]);
|
|
58
|
+
var attributeSelectorItemsGroups = useMemo(function () { return getAttributeSelectorItems(attributesTypesGroups, metadata); }, [attributesTypesGroups, metadata]);
|
|
59
|
+
var rowsData = useMemo(function () { return (filters.length ? getRowsDataFromFilters(filters, attributeSelectorItemsGroups) : []); }, [attributeSelectorItemsGroups, filters]);
|
|
41
60
|
attributesCountRef.current = rowsData.length;
|
|
42
61
|
useEffect(function () {
|
|
43
62
|
if (attributeFilterRef.current && lastAttributesCountRef.current !== attributesCountRef.current) {
|
|
@@ -63,11 +82,7 @@ var AttributesFiltersBuilder = function (_a) {
|
|
|
63
82
|
}, [onChange]);
|
|
64
83
|
var duplicateRow = useCallback(function (index) {
|
|
65
84
|
var newFilters = __spreadArray([], actualFilters.current, true);
|
|
66
|
-
newFilters.splice(index + 1, 0, {
|
|
67
|
-
fieldName: actualFilters.current[index].fieldName,
|
|
68
|
-
filter: actualFilters.current[index].filter,
|
|
69
|
-
values: actualFilters.current[index].values
|
|
70
|
-
});
|
|
85
|
+
newFilters.splice(index + 1, 0, __assign({}, actualFilters.current[index]));
|
|
71
86
|
onChange(newFilters);
|
|
72
87
|
}, [onChange]);
|
|
73
88
|
var changeFilter = useCallback(function (newFilter, id) {
|
|
@@ -80,6 +95,6 @@ var AttributesFiltersBuilder = function (_a) {
|
|
|
80
95
|
var addNewFilter = useCallback(function (newFilter) {
|
|
81
96
|
onChange(__spreadArray(__spreadArray([], actualFilters.current, true), [newFilter], false));
|
|
82
97
|
}, [onChange]);
|
|
83
|
-
return (React.createElement(QueryBuilderRowsGroup, { rowClasses: rowClasses, rowsData: rowsData, AttributeSelectorComponent: AttributeSelector, FilterSelectorComponent: CustomFilterSelector || FilterSelector, ValuesEditorComponent: CustomValuesEditor || ValuesEditor, ActionsComponent: RowActions, LogicOperatorComponent:
|
|
98
|
+
return (React.createElement(QueryBuilderRowsGroup, { rowClasses: rowClasses, rowsData: rowsData, AttributeSelectorComponent: AttributeSelector, FilterSelectorComponent: CustomFilterSelector || FilterSelector, ValuesEditorComponent: CustomValuesEditor || ValuesEditor, ActionsComponent: RowActions, LogicOperatorComponent: LogicalOperator, filterSelectorRefIndex: lastAttributesCountRef.current, filterSelectorRef: attributeFilterRef, lastRowAttributeSelectorProps: lastRowAttributeSelectorProps, attributeSelectorItemsGroups: attributeSelectorItemsGroups, entityType: currentEntityType, changeFilter: changeFilter, addNewFilter: addNewFilter, addRowAfterIndex: addRowAfterIndex, removeRow: removeRow, duplicateRow: duplicateRow, onFilterAttributeChange: onFilterAttributeChange }));
|
|
84
99
|
};
|
|
85
100
|
export default memo(AttributesFiltersBuilder);
|
package/esm/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import React, { useCallback,
|
|
2
|
-
import { getSearchGroupAttributeLabel } from '@reltio/mdm-sdk';
|
|
1
|
+
import React, { useCallback, memo } from 'react';
|
|
2
|
+
import { SearchOperator, getSearchGroupAttributeLabel } from '@reltio/mdm-sdk';
|
|
3
3
|
import BasicAttributeSelector from '../../../BasicAttributeSelector/BasicAttributeSelector';
|
|
4
4
|
var AttributeSelector = function (_a) {
|
|
5
5
|
var rowData = _a.rowData, rowContext = _a.rowContext, attributeSelectorProps = _a.attributeSelectorProps;
|
|
6
|
-
var _b = rowData || {}, attribute = _b.attribute, id = _b.id, filter = _b.filter;
|
|
7
|
-
var changeFilter = rowContext.changeFilter, addNewFilter = rowContext.addNewFilter,
|
|
6
|
+
var _b = rowData || {}, attribute = _b.attribute, id = _b.id, filter = _b.filter, operator = _b.operator;
|
|
7
|
+
var changeFilter = rowContext.changeFilter, addNewFilter = rowContext.addNewFilter, attributeSelectorItemsGroups = rowContext.attributeSelectorItemsGroups, onFilterAttributeChange = rowContext.onFilterAttributeChange;
|
|
8
8
|
var getSelectedAttributeLabel = useCallback(function (data) { return getSearchGroupAttributeLabel({ data: data }); }, []);
|
|
9
|
-
var itemsGroup = useMemo(function () { return [{ id: '', title: '', attributes: attributesGroup }]; }, [attributesGroup]);
|
|
10
9
|
var changeAttribute = useCallback(function (selectInfo) {
|
|
11
10
|
if (rowData) {
|
|
12
11
|
var newFilter = {
|
|
13
12
|
fieldName: selectInfo.attribute.fieldName,
|
|
14
13
|
filter: filter,
|
|
14
|
+
operator: operator,
|
|
15
15
|
values: []
|
|
16
16
|
};
|
|
17
17
|
changeFilter(newFilter, id);
|
|
@@ -20,10 +20,12 @@ var AttributeSelector = function (_a) {
|
|
|
20
20
|
addNewFilter({
|
|
21
21
|
fieldName: selectInfo.attribute.fieldName,
|
|
22
22
|
filter: null,
|
|
23
|
+
operator: SearchOperator.and,
|
|
23
24
|
values: []
|
|
24
25
|
});
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
onFilterAttributeChange && onFilterAttributeChange(selectInfo);
|
|
28
|
+
}, [rowData, onFilterAttributeChange, filter, operator, changeFilter, id, addNewFilter]);
|
|
29
|
+
return (React.createElement(BasicAttributeSelector, { itemsGroups: attributeSelectorItemsGroups, ungroup: attributeSelectorItemsGroups.length < 2, single: true, value: attribute, getLabel: getSelectedAttributeLabel, onSelect: changeAttribute, onOpenPopup: attributeSelectorProps.onOpen }));
|
|
28
30
|
};
|
|
29
31
|
export default memo(AttributeSelector);
|
|
@@ -10,7 +10,7 @@ var FilterSelector = function (_a) {
|
|
|
10
10
|
var _b;
|
|
11
11
|
var rowData = _a.rowData, rowContext = _a.rowContext, textFieldInputRef = _a.textFieldInputRef, optionsProp = _a.options;
|
|
12
12
|
var styles = useStyles();
|
|
13
|
-
var _c = rowData || {}, _d = _c.attribute, _e = _d === void 0 ? {} : _d, _f = _e.attrType, attrType = _f === void 0 ? {} : _f, _g = _e.fieldName, fieldName = _g === void 0 ? null : _g, filter = _c.filter, id = _c.id;
|
|
13
|
+
var _c = rowData || {}, _d = _c.attribute, _e = _d === void 0 ? {} : _d, _f = _e.attrType, attrType = _f === void 0 ? {} : _f, _g = _e.fieldName, fieldName = _g === void 0 ? null : _g, filter = _c.filter, id = _c.id, operator = _c.operator;
|
|
14
14
|
var changeFilter = rowContext.changeFilter;
|
|
15
15
|
var options = optionsProp ||
|
|
16
16
|
(attrType &&
|
|
@@ -20,10 +20,11 @@ var FilterSelector = function (_a) {
|
|
|
20
20
|
var newFilter = {
|
|
21
21
|
fieldName: fieldName,
|
|
22
22
|
filter: filterOption.value,
|
|
23
|
+
operator: operator,
|
|
23
24
|
values: []
|
|
24
25
|
};
|
|
25
26
|
changeFilter(newFilter, id);
|
|
26
|
-
}, [changeFilter, id
|
|
27
|
+
}, [fieldName, operator, changeFilter, id]);
|
|
27
28
|
useEffect(function () {
|
|
28
29
|
if ((fieldName && !filter) || (fieldName && !findValue(options, filter))) {
|
|
29
30
|
onChangeFilter(options[0]);
|
|
@@ -7,14 +7,15 @@ var ValuesEditor = function (_a) {
|
|
|
7
7
|
var styles = useStyles();
|
|
8
8
|
var canFilterAcceptValues = (rowData === null || rowData === void 0 ? void 0 : rowData.attribute) && checkIfOptionHasValues(rowData.filter);
|
|
9
9
|
var changeFilter = rowContext.changeFilter;
|
|
10
|
-
var _b = (rowData || {}), _c = _b.values, values = _c === void 0 ? [] : _c, _d = _b.attribute, _e = _d === void 0 ? {} : _d, attrType = _e.attrType, _f = _e.fieldName, fieldName = _f === void 0 ? null : _f, filter = _b.filter, id = _b.id;
|
|
10
|
+
var _b = (rowData || {}), _c = _b.values, values = _c === void 0 ? [] : _c, _d = _b.attribute, _e = _d === void 0 ? {} : _d, attrType = _e.attrType, _f = _e.fieldName, fieldName = _f === void 0 ? null : _f, filter = _b.filter, id = _b.id, operator = _b.operator;
|
|
11
11
|
var valueDataTypeDefinition = attrType && getAttrDataTypeDefinition(attrType);
|
|
12
12
|
var filterValueDataTypeDefinition = valueDataTypeDefinition && getDataTypeDefinitionForFilterValue(valueDataTypeDefinition, filter);
|
|
13
13
|
var editorFilter = useMemo(function () { return ({
|
|
14
14
|
filter: filter,
|
|
15
15
|
fieldName: fieldName,
|
|
16
|
+
operator: operator,
|
|
16
17
|
values: values || []
|
|
17
|
-
}); }, [filter, fieldName, values]);
|
|
18
|
+
}); }, [filter, fieldName, operator, values]);
|
|
18
19
|
var TextFieldProps = useMemo(function () { return ({
|
|
19
20
|
InputProps: {
|
|
20
21
|
classes: {
|
|
@@ -27,10 +28,11 @@ var ValuesEditor = function (_a) {
|
|
|
27
28
|
var newFilter = {
|
|
28
29
|
fieldName: fieldName,
|
|
29
30
|
filter: filter,
|
|
31
|
+
operator: operator,
|
|
30
32
|
values: newValues
|
|
31
33
|
};
|
|
32
34
|
changeFilter(newFilter, id);
|
|
33
|
-
}, [
|
|
35
|
+
}, [fieldName, filter, operator, changeFilter, id]);
|
|
34
36
|
return (React.createElement("div", { className: styles.valuesEditor }, (rowData === null || rowData === void 0 ? void 0 : rowData.attribute) && canFilterAcceptValues && (React.createElement(FilterValueEditor, { "data-reltio-id": "filter-value-editor", filter: editorFilter, onChange: changeValue, dataTypeDefinition: filterValueDataTypeDefinition, fullWidth: true, TextFieldProps: TextFieldProps, color: "primary", classes: editorClasses, orientation: "horizontal" }))));
|
|
35
37
|
};
|
|
36
38
|
export default memo(ValuesEditor);
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { AttributeType,
|
|
2
|
-
import { AttributeSelectorItem } from '../../types';
|
|
1
|
+
import { AttributeType, Metadata, SearchFilter } from '@reltio/mdm-sdk';
|
|
2
|
+
import { AttributeSelectorItem, AttributeSelectorItemsGroup, AttributesTypesGroup } from '../../types';
|
|
3
3
|
import { FilterOption } from './types';
|
|
4
|
-
export declare const getAttributeSelectorItems: (
|
|
4
|
+
export declare const getAttributeSelectorItems: (attributesTypesGroups: AttributesTypesGroup[], metadata: Metadata) => AttributeSelectorItemsGroup[];
|
|
5
5
|
export declare const findValue: (options: FilterOption[], filter: string) => FilterOption;
|
|
6
|
-
export declare const getRowsDataFromFilters: (filters: SearchFilter[],
|
|
6
|
+
export declare const getRowsDataFromFilters: (filters: SearchFilter[], attributesGroupArr: AttributeSelectorItemsGroup[]) => {
|
|
7
7
|
attribute: AttributeSelectorItem;
|
|
8
8
|
filter: string;
|
|
9
|
+
operator: import("@reltio/mdm-sdk").SearchOperator;
|
|
9
10
|
id: number;
|
|
10
11
|
values: (import("@reltio/mdm-sdk").PrimitiveValue | Pick<import("@reltio/mdm-sdk").SimpleAttributeValue, "value" | "lookupCode">)[] | [(import("@reltio/mdm-sdk").PrimitiveValue | Pick<import("@reltio/mdm-sdk").SimpleAttributeValue, "value" | "lookupCode">)[]];
|
|
11
12
|
}[];
|
|
@@ -18,7 +18,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
18
18
|
}
|
|
19
19
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
20
|
};
|
|
21
|
-
import { getAttributesTreeFromAttributes, attributeUriToSearchUri, isSpecialAttribute, getBaseUri, getEntityTypeLabel } from '@reltio/mdm-sdk';
|
|
21
|
+
import { getAttributesTreeFromAttributes, attributeUriToSearchUri, isSpecialAttribute, getBaseUri, getEntityTypeLabel, getEntityType, findRegularAttribute } from '@reltio/mdm-sdk';
|
|
22
22
|
import { chain, prop } from 'ramda';
|
|
23
23
|
var createAttributeItem = function (metadata, attrType, entityTypeUri, parents) {
|
|
24
24
|
var entityTypeLabel = getEntityTypeLabel(metadata, { type: entityTypeUri });
|
|
@@ -48,44 +48,58 @@ var createAttributesConfig = function (metadata, attrNode, entityTypeUri, parent
|
|
|
48
48
|
}
|
|
49
49
|
return resConfig;
|
|
50
50
|
};
|
|
51
|
-
export var getAttributeSelectorItems = function (
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
var
|
|
55
|
-
return
|
|
51
|
+
export var getAttributeSelectorItems = function (attributesTypesGroups, metadata) {
|
|
52
|
+
return attributesTypesGroups.map(function (_a) {
|
|
53
|
+
var id = _a.id, title = _a.title, attributeTypes = _a.attributeTypes;
|
|
54
|
+
var entityType = getEntityType(metadata, getEntityTypeFromAttrTypes(attributeTypes));
|
|
55
|
+
return {
|
|
56
|
+
id: id,
|
|
57
|
+
title: title,
|
|
58
|
+
attributes: getAttributesTreeFromAttributes(attributeTypes, metadata).map(function (attrNode) {
|
|
59
|
+
var entityTypeUri = isSpecialAttribute(attrNode) ? null : entityType.uri;
|
|
60
|
+
return createAttributesConfig(metadata, attrNode, entityTypeUri);
|
|
61
|
+
})
|
|
62
|
+
};
|
|
56
63
|
});
|
|
57
64
|
};
|
|
58
65
|
var findAttributeSelectorItem = function (fieldName, attributesGroup) {
|
|
59
66
|
var attrGroup;
|
|
60
|
-
var
|
|
61
|
-
|
|
62
|
-
var
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
var _loop_1 = function (attributesGroupItem) {
|
|
68
|
+
var findAttribute = function (fieldName, attributesSelectorItems) {
|
|
69
|
+
for (var _i = 0, attributesSelectorItems_1 = attributesSelectorItems; _i < attributesSelectorItems_1.length; _i++) {
|
|
70
|
+
var attributeGroup = attributesSelectorItems_1[_i];
|
|
71
|
+
if (fieldName === attributeGroup.fieldName) {
|
|
72
|
+
attrGroup = attributeGroup;
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if ('children' in attributeGroup) {
|
|
76
|
+
findAttribute(fieldName, attributeGroup.children);
|
|
77
|
+
}
|
|
69
78
|
}
|
|
70
|
-
}
|
|
79
|
+
};
|
|
80
|
+
findAttribute(fieldName, attributesGroupItem.attributes);
|
|
71
81
|
};
|
|
72
|
-
|
|
82
|
+
for (var _i = 0, attributesGroup_1 = attributesGroup; _i < attributesGroup_1.length; _i++) {
|
|
83
|
+
var attributesGroupItem = attributesGroup_1[_i];
|
|
84
|
+
_loop_1(attributesGroupItem);
|
|
85
|
+
}
|
|
73
86
|
return attrGroup;
|
|
74
87
|
};
|
|
75
88
|
export var findValue = function (options, filter) {
|
|
76
89
|
return options ? options.find(function (option) { return option.value === filter; }) : null;
|
|
77
90
|
};
|
|
78
|
-
export var getRowsDataFromFilters = function (filters,
|
|
91
|
+
export var getRowsDataFromFilters = function (filters, attributesGroupArr) {
|
|
79
92
|
return filters.map(function (filter, index) {
|
|
80
93
|
return {
|
|
81
|
-
attribute: filter.fieldName ? findAttributeSelectorItem(filter.fieldName,
|
|
94
|
+
attribute: filter.fieldName ? findAttributeSelectorItem(filter.fieldName, attributesGroupArr) : undefined,
|
|
82
95
|
filter: filter.filter,
|
|
96
|
+
operator: filter.operator,
|
|
83
97
|
id: index,
|
|
84
98
|
values: filter.values
|
|
85
99
|
};
|
|
86
100
|
});
|
|
87
101
|
};
|
|
88
102
|
export var getEntityTypeFromAttrTypes = function (attributeTypes) {
|
|
89
|
-
var regularAttribute = attributeTypes
|
|
103
|
+
var regularAttribute = findRegularAttribute(attributeTypes);
|
|
90
104
|
return regularAttribute ? getBaseUri(regularAttribute.uri) : null;
|
|
91
105
|
};
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { SearchFilter, TEntityType } from '@reltio/mdm-sdk';
|
|
2
|
-
import {
|
|
2
|
+
import { AttributeSelectionInfo, AttributeSelectorItemsGroup, FiltersRowData } from '../../types';
|
|
3
3
|
export type FilterOption = {
|
|
4
4
|
value: string;
|
|
5
5
|
label: string;
|
|
6
6
|
};
|
|
7
7
|
export type RowContext = {
|
|
8
|
-
|
|
8
|
+
attributeSelectorItemsGroups: AttributeSelectorItemsGroup[];
|
|
9
9
|
entityType: TEntityType;
|
|
10
10
|
addNewFilter: (newFilter: SearchFilter) => void;
|
|
11
11
|
addRowAfterIndex: (index: number) => void;
|
|
12
12
|
changeFilter: (newFilter: SearchFilter, id: number) => void;
|
|
13
13
|
duplicateRow: (index: number) => void;
|
|
14
14
|
removeRow: (index: number) => void;
|
|
15
|
+
onFilterAttributeChange?: (attrSelectInfo: AttributeSelectionInfo) => void;
|
|
15
16
|
};
|
|
16
17
|
export type AttributeFiltersComponentProps = {
|
|
17
18
|
rowData: FiltersRowData;
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { SearchFilter
|
|
2
|
+
import { SearchFilter } from '@reltio/mdm-sdk';
|
|
3
|
+
import { AttributeSelectionInfo, AttributesFilterComponentsClasses, AttributesTypesGroup } from '../../types';
|
|
3
4
|
type Props = {
|
|
5
|
+
classes?: AttributesFilterComponentsClasses;
|
|
4
6
|
filters: SearchFilter[];
|
|
5
7
|
onChange: (filters: SearchFilter[]) => void;
|
|
6
|
-
|
|
8
|
+
attributesTypesGroups: AttributesTypesGroup[];
|
|
7
9
|
components?: {
|
|
8
10
|
ValuesEditor?: React.ElementType;
|
|
9
11
|
FilterSelector?: React.ElementType;
|
|
12
|
+
LogicalOperator?: React.ElementType;
|
|
10
13
|
};
|
|
11
14
|
children?: React.ReactNode;
|
|
12
15
|
onTogglePopup?: (open: boolean) => void;
|
|
13
16
|
isFiltersApplied?: boolean;
|
|
14
17
|
dataReltioId?: string;
|
|
18
|
+
onFilterAttributeChange?: (attrSelectInfo: AttributeSelectionInfo) => void;
|
|
19
|
+
onClear?: () => void;
|
|
20
|
+
onCancel?: () => void;
|
|
21
|
+
onApply?: () => void;
|
|
15
22
|
};
|
|
16
|
-
declare const _default: React.MemoExoticComponent<({ filters: filtersProp,
|
|
23
|
+
declare const _default: React.MemoExoticComponent<({ filters: filtersProp, classes, attributesTypesGroups, onChange, components, children, onTogglePopup, isFiltersApplied: isFiltersAppliedProp, dataReltioId, onFilterAttributeChange, onCancel, onClear, onApply }: Props) => JSX.Element>;
|
|
17
24
|
export default _default;
|
|
@@ -5,12 +5,13 @@ import Button from '@mui/material/Button';
|
|
|
5
5
|
import FilterIcon from '@mui/icons-material/FilterList';
|
|
6
6
|
import Typography from '@mui/material/Typography';
|
|
7
7
|
import Divider from '@mui/material/Divider';
|
|
8
|
+
import classNames from 'classnames';
|
|
8
9
|
import { buildFilterQueryString } from '@reltio/mdm-sdk';
|
|
9
10
|
import AttributesFiltersBuilder from '../AttributesFiltersBuilder/AttributesFiltersBuilder';
|
|
10
11
|
import ActionButtons from './ActionButtons/ActionButtons';
|
|
11
12
|
import { useStyles } from './styles';
|
|
12
13
|
var AttributesFiltersButton = function (_a) {
|
|
13
|
-
var filtersProp = _a.filters,
|
|
14
|
+
var filtersProp = _a.filters, classes = _a.classes, attributesTypesGroups = _a.attributesTypesGroups, onChange = _a.onChange, components = _a.components, children = _a.children, onTogglePopup = _a.onTogglePopup, isFiltersAppliedProp = _a.isFiltersApplied, dataReltioId = _a.dataReltioId, onFilterAttributeChange = _a.onFilterAttributeChange, onCancel = _a.onCancel, onClear = _a.onClear, onApply = _a.onApply;
|
|
14
15
|
var styles = useStyles();
|
|
15
16
|
var buttonRef = useRef();
|
|
16
17
|
var _b = useState(false), isOpen = _b[0], setIsOpen = _b[1];
|
|
@@ -30,21 +31,24 @@ var AttributesFiltersButton = function (_a) {
|
|
|
30
31
|
}, [filtersProp, isOpen]);
|
|
31
32
|
var applyButtonHandler = useCallback(function () {
|
|
32
33
|
onChange(filters);
|
|
34
|
+
onApply && onApply();
|
|
33
35
|
togglePopup();
|
|
34
|
-
}, [filters, onChange]);
|
|
36
|
+
}, [filters, onChange, onApply]);
|
|
35
37
|
var cancelButtonHandler = useCallback(function () {
|
|
38
|
+
onCancel && onCancel();
|
|
36
39
|
togglePopup();
|
|
37
|
-
}, []);
|
|
40
|
+
}, [onCancel]);
|
|
38
41
|
var clearAllButtonHandler = useCallback(function () {
|
|
42
|
+
onClear && onClear();
|
|
39
43
|
setFilters([]);
|
|
40
|
-
}, []);
|
|
44
|
+
}, [onClear]);
|
|
41
45
|
return (React.createElement(React.Fragment, null,
|
|
42
46
|
React.createElement(Button, { "data-reltio-id": dataReltioId, ref: buttonRef, color: buttonColor, classes: {
|
|
43
47
|
root: styles.triggerButton,
|
|
44
48
|
textPrimary: styles.changedFiltersIndicator
|
|
45
49
|
}, onClick: togglePopup },
|
|
46
50
|
React.createElement(FilterIcon, { color: buttonColor })),
|
|
47
|
-
React.createElement(Popover, { open: isOpen, classes: { paper: styles.popupContent }, anchorEl: buttonRef.current, onClose: togglePopup, anchorOrigin: {
|
|
51
|
+
React.createElement(Popover, { open: isOpen, classes: { paper: classNames(styles.popupContent, classes === null || classes === void 0 ? void 0 : classes.filterPopup) }, anchorEl: buttonRef.current, onClose: togglePopup, anchorOrigin: {
|
|
48
52
|
vertical: 'bottom',
|
|
49
53
|
horizontal: 'right'
|
|
50
54
|
}, transformOrigin: {
|
|
@@ -55,7 +59,7 @@ var AttributesFiltersButton = function (_a) {
|
|
|
55
59
|
React.createElement(Typography, { variant: "h6" }, i18n.text('Filter')),
|
|
56
60
|
React.createElement("div", { className: styles.filtersBuilderWrapper },
|
|
57
61
|
children,
|
|
58
|
-
React.createElement(AttributesFiltersBuilder, {
|
|
62
|
+
React.createElement(AttributesFiltersBuilder, { attributesTypesGroups: attributesTypesGroups, filters: filters, onChange: setFilters, components: components, onFilterAttributeChange: onFilterAttributeChange, classes: classes })),
|
|
59
63
|
React.createElement(Divider, { className: styles.divider }),
|
|
60
64
|
React.createElement(ActionButtons, { onApply: applyButtonHandler, onCancel: cancelButtonHandler, onClear: clearAllButtonHandler })))));
|
|
61
65
|
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { SearchOperator } from '@reltio/mdm-sdk';
|
|
3
|
+
type Props = {
|
|
4
|
+
className?: string;
|
|
5
|
+
value: string;
|
|
6
|
+
onChange: (value: SearchOperator) => void;
|
|
7
|
+
};
|
|
8
|
+
declare const LogicOperator: ({ className, value, onChange }: Props) => JSX.Element;
|
|
9
|
+
export default LogicOperator;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import React from 'react';
|
|
13
|
+
import classnames from 'classnames';
|
|
14
|
+
import { DropDownEditor } from '@reltio/components';
|
|
15
|
+
import { operatorOptions } from '@reltio/mdm-sdk';
|
|
16
|
+
import i18n from 'ui-i18n';
|
|
17
|
+
import useStyles from './styles';
|
|
18
|
+
var LogicOperator = function (_a) {
|
|
19
|
+
var className = _a.className, value = _a.value, onChange = _a.onChange;
|
|
20
|
+
var classes = useStyles();
|
|
21
|
+
var entries = operatorOptions.map(function (operator) { return (__assign(__assign({}, operator), { label: i18n.text(operator.label) })); });
|
|
22
|
+
return (React.createElement(DropDownEditor, { className: classnames(classes.dropDown, className), classes: classes, value: value, entries: entries, onChange: onChange }));
|
|
23
|
+
};
|
|
24
|
+
export default LogicOperator;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { makeStyles } from '@mui/styles';
|
|
2
|
+
var useStyles = makeStyles(function () { return ({
|
|
3
|
+
select: {
|
|
4
|
+
padding: '6px 16px 7px'
|
|
5
|
+
},
|
|
6
|
+
dropDown: {
|
|
7
|
+
width: '100px',
|
|
8
|
+
'&:before': {
|
|
9
|
+
content: 'none !important'
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}); });
|
|
13
|
+
export default useStyles;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { ElementType } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { ReactGridLayoutProps } from 'react-grid-layout';
|
|
3
3
|
import { ReltioGridLayoutItem } from '@reltio/mdm-sdk';
|
|
4
4
|
import { ReactGridLayoutItem, ReltioGridLayoutOptions } from '../../types';
|
|
5
5
|
type Props<ViewConfig = Record<string, unknown>> = {
|
|
@@ -8,10 +8,7 @@ type Props<ViewConfig = Record<string, unknown>> = {
|
|
|
8
8
|
layoutOptions?: ReltioGridLayoutOptions;
|
|
9
9
|
onLayoutChanged?: (layout: ReltioGridLayoutItem[]) => void;
|
|
10
10
|
onDrop?: (layout: ReltioGridLayoutItem[], layoutItem: ReltioGridLayoutItem, e: Event) => void;
|
|
11
|
-
onDropDragOver?:
|
|
12
|
-
w?: number;
|
|
13
|
-
h?: number;
|
|
14
|
-
} | false | undefined;
|
|
11
|
+
onDropDragOver?: ReactGridLayoutProps['onDropDragOver'];
|
|
15
12
|
onRemove?: (id: string) => void;
|
|
16
13
|
LayoutItem: ElementType;
|
|
17
14
|
draggableHandle?: string;
|
|
@@ -22,7 +19,7 @@ type Props<ViewConfig = Record<string, unknown>> = {
|
|
|
22
19
|
root?: string;
|
|
23
20
|
item?: string;
|
|
24
21
|
};
|
|
25
|
-
onResize?:
|
|
22
|
+
onResize?: ReactGridLayoutProps['onResize'];
|
|
26
23
|
};
|
|
27
24
|
declare const _default: React.MemoExoticComponent<{
|
|
28
25
|
({ views, layout, layoutOptions, onLayoutChanged, draggableHandle, LayoutItem, onRemove, onDrop, droppingItem, isDroppable, onDropDragOver, isStatic, classes, onResize }: Props<Record<string, unknown>>): JSX.Element;
|