@reltio/components 1.4.1069 → 1.4.1074
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/AttributeGroupIcon/AttributeGroupIcon.d.ts +11 -0
- package/cjs/components/AttributeGroupIcon/AttributeGroupIcon.js +20 -0
- package/cjs/components/AttributeGroupIcon/styles.d.ts +1 -0
- package/cjs/components/AttributeGroupIcon/styles.js +11 -0
- package/cjs/components/AttributesFiltersBuilder/AttributesFiltersBuilder.d.ts +9 -0
- package/cjs/components/AttributesFiltersBuilder/AttributesFiltersBuilder.js +112 -0
- package/cjs/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.d.ts +9 -0
- package/cjs/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.js +53 -0
- package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.d.ts +7 -0
- package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.js +56 -0
- package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/styles.d.ts +2 -0
- package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/styles.js +9 -0
- package/cjs/components/AttributesFiltersBuilder/components/RowActions/RowActions.d.ts +4 -0
- package/cjs/components/AttributesFiltersBuilder/components/RowActions/RowActions.js +51 -0
- package/cjs/components/AttributesFiltersBuilder/components/RowActions/styles.d.ts +1 -0
- package/cjs/components/AttributesFiltersBuilder/components/RowActions/styles.js +23 -0
- package/cjs/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.d.ts +4 -0
- package/cjs/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.js +60 -0
- package/cjs/components/AttributesFiltersBuilder/components/ValueEditor/styles.d.ts +1 -0
- package/cjs/components/AttributesFiltersBuilder/components/ValueEditor/styles.js +25 -0
- package/cjs/components/AttributesFiltersBuilder/helpers.d.ts +12 -0
- package/cjs/components/AttributesFiltersBuilder/helpers.js +77 -0
- package/cjs/components/AttributesFiltersBuilder/styles.d.ts +1 -0
- package/cjs/components/AttributesFiltersBuilder/styles.js +21 -0
- package/cjs/components/AttributesFiltersBuilder/types.d.ts +24 -0
- package/cjs/components/AttributesFiltersBuilder/types.js +2 -0
- package/cjs/components/AttributesFiltersButton/ActionButtons/ActionButtons.d.ts +8 -0
- package/cjs/components/AttributesFiltersButton/ActionButtons/ActionButtons.js +18 -0
- package/cjs/components/AttributesFiltersButton/ActionButtons/styles.d.ts +1 -0
- package/cjs/components/AttributesFiltersButton/ActionButtons/styles.js +26 -0
- package/cjs/components/AttributesFiltersButton/AttributesFiltersButton.d.ts +9 -0
- package/cjs/components/AttributesFiltersButton/AttributesFiltersButton.js +82 -0
- package/cjs/components/AttributesFiltersButton/styles.d.ts +1 -0
- package/cjs/components/AttributesFiltersButton/styles.js +30 -0
- package/cjs/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.d.ts +14 -0
- package/cjs/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.js +27 -0
- package/cjs/components/BasicAttributeSelector/AttributeTitle/styles.d.ts +2 -0
- package/cjs/components/BasicAttributeSelector/AttributeTitle/styles.js +44 -0
- package/cjs/components/BasicAttributeSelector/BasicAttributeSelector.d.ts +4 -0
- package/cjs/components/BasicAttributeSelector/BasicAttributeSelector.js +99 -0
- package/cjs/components/BasicAttributeSelector/helpers.d.ts +22 -0
- package/cjs/components/BasicAttributeSelector/helpers.js +80 -0
- package/cjs/components/BasicAttributeSelector/styles.d.ts +2 -0
- package/cjs/components/BasicAttributeSelector/styles.js +14 -0
- package/cjs/components/ConnectionEditor/ConnectionEditor.d.ts +12 -3
- package/cjs/components/ConnectionEditor/ConnectionEditor.js +72 -5
- package/cjs/components/ConnectionEditor/styles.d.ts +1 -0
- package/cjs/components/ConnectionEditor/styles.js +12 -0
- package/cjs/components/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.js +3 -2
- package/cjs/components/QueryBuilderRow/QueryBuilderRow.d.ts +2 -2
- package/cjs/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.d.ts +2 -2
- package/cjs/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js +1 -1
- package/cjs/components/SelectAttributesList/SelectAttributesList.d.ts +14 -0
- package/cjs/components/SelectAttributesList/SelectAttributesList.js +75 -0
- package/cjs/components/SelectAttributesList/styles.d.ts +1 -0
- package/cjs/components/SelectAttributesList/styles.js +16 -0
- package/cjs/components/SelectionPopup/SelectionPopup.d.ts +1 -1
- package/cjs/components/SidePanel/SidePanelContentHeader/SidePanelContentHeader.d.ts +2 -2
- package/cjs/components/attributes/editMode/EntitySelector/EntitySelector.d.ts +1 -1
- package/cjs/components/attributes/editMode/EntitySelector/EntitySelector.js +13 -6
- package/cjs/components/index.d.ts +4 -0
- package/cjs/components/index.js +9 -1
- package/cjs/components/workflow/hooks/useWorkflowAssignee.d.ts +1 -1
- package/cjs/components/workflow/hooks/useWorkflowAssignee.js +2 -2
- package/cjs/constants/prop-types.d.ts +1 -1
- package/cjs/constants/prop-types.js +1 -1
- package/cjs/hooks/useEditableConnection.d.ts +10 -4
- package/cjs/hooks/useEditableConnection.js +27 -3
- package/cjs/icons/Duplicate.d.ts +3 -0
- package/cjs/icons/Duplicate.js +28 -0
- package/cjs/icons/index.d.ts +6 -3
- package/cjs/icons/index.js +14 -7
- package/cjs/types/index.d.ts +40 -0
- package/esm/components/AttributeGroupIcon/AttributeGroupIcon.d.ts +11 -0
- package/esm/components/AttributeGroupIcon/AttributeGroupIcon.js +15 -0
- package/esm/components/AttributeGroupIcon/styles.d.ts +1 -0
- package/esm/components/AttributeGroupIcon/styles.js +8 -0
- package/esm/components/AttributesFiltersBuilder/AttributesFiltersBuilder.d.ts +9 -0
- package/esm/components/AttributesFiltersBuilder/AttributesFiltersBuilder.js +88 -0
- package/esm/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.d.ts +9 -0
- package/esm/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.js +29 -0
- package/esm/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.d.ts +7 -0
- package/esm/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.js +32 -0
- package/esm/components/AttributesFiltersBuilder/components/FilterSelector/styles.d.ts +2 -0
- package/esm/components/AttributesFiltersBuilder/components/FilterSelector/styles.js +7 -0
- package/esm/components/AttributesFiltersBuilder/components/RowActions/RowActions.d.ts +4 -0
- package/esm/components/AttributesFiltersBuilder/components/RowActions/RowActions.js +27 -0
- package/esm/components/AttributesFiltersBuilder/components/RowActions/styles.d.ts +1 -0
- package/esm/components/AttributesFiltersBuilder/components/RowActions/styles.js +20 -0
- package/esm/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.d.ts +4 -0
- package/esm/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.js +36 -0
- package/esm/components/AttributesFiltersBuilder/components/ValueEditor/styles.d.ts +1 -0
- package/esm/components/AttributesFiltersBuilder/components/ValueEditor/styles.js +22 -0
- package/esm/components/AttributesFiltersBuilder/helpers.d.ts +12 -0
- package/esm/components/AttributesFiltersBuilder/helpers.js +70 -0
- package/esm/components/AttributesFiltersBuilder/styles.d.ts +1 -0
- package/esm/components/AttributesFiltersBuilder/styles.js +18 -0
- package/esm/components/AttributesFiltersBuilder/types.d.ts +24 -0
- package/esm/components/AttributesFiltersBuilder/types.js +1 -0
- package/esm/components/AttributesFiltersButton/ActionButtons/ActionButtons.d.ts +8 -0
- package/esm/components/AttributesFiltersButton/ActionButtons/ActionButtons.js +13 -0
- package/esm/components/AttributesFiltersButton/ActionButtons/styles.d.ts +1 -0
- package/esm/components/AttributesFiltersButton/ActionButtons/styles.js +23 -0
- package/esm/components/AttributesFiltersButton/AttributesFiltersButton.d.ts +9 -0
- package/esm/components/AttributesFiltersButton/AttributesFiltersButton.js +58 -0
- package/esm/components/AttributesFiltersButton/styles.d.ts +1 -0
- package/esm/components/AttributesFiltersButton/styles.js +27 -0
- package/esm/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.d.ts +14 -0
- package/esm/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.js +22 -0
- package/esm/components/BasicAttributeSelector/AttributeTitle/styles.d.ts +2 -0
- package/esm/components/BasicAttributeSelector/AttributeTitle/styles.js +42 -0
- package/esm/components/BasicAttributeSelector/BasicAttributeSelector.d.ts +4 -0
- package/esm/components/BasicAttributeSelector/BasicAttributeSelector.js +75 -0
- package/esm/components/BasicAttributeSelector/helpers.d.ts +22 -0
- package/esm/components/BasicAttributeSelector/helpers.js +72 -0
- package/esm/components/BasicAttributeSelector/styles.d.ts +2 -0
- package/esm/components/BasicAttributeSelector/styles.js +12 -0
- package/esm/components/ConnectionEditor/ConnectionEditor.d.ts +12 -3
- package/esm/components/ConnectionEditor/ConnectionEditor.js +74 -7
- package/esm/components/ConnectionEditor/styles.d.ts +1 -0
- package/esm/components/ConnectionEditor/styles.js +9 -0
- package/esm/components/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.js +3 -2
- package/esm/components/QueryBuilderRow/QueryBuilderRow.d.ts +2 -2
- package/esm/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.d.ts +2 -2
- package/esm/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js +1 -1
- package/esm/components/SelectAttributesList/SelectAttributesList.d.ts +14 -0
- package/esm/components/SelectAttributesList/SelectAttributesList.js +51 -0
- package/esm/components/SelectAttributesList/styles.d.ts +1 -0
- package/esm/components/SelectAttributesList/styles.js +13 -0
- package/esm/components/SelectionPopup/SelectionPopup.d.ts +1 -1
- package/esm/components/SidePanel/SidePanelContentHeader/SidePanelContentHeader.d.ts +2 -2
- package/esm/components/attributes/editMode/EntitySelector/EntitySelector.d.ts +1 -1
- package/esm/components/attributes/editMode/EntitySelector/EntitySelector.js +13 -6
- package/esm/components/index.d.ts +4 -0
- package/esm/components/index.js +4 -0
- package/esm/components/workflow/hooks/useWorkflowAssignee.d.ts +1 -1
- package/esm/components/workflow/hooks/useWorkflowAssignee.js +1 -1
- package/esm/constants/prop-types.d.ts +1 -1
- package/esm/constants/prop-types.js +1 -1
- package/esm/hooks/useEditableConnection.d.ts +10 -4
- package/esm/hooks/useEditableConnection.js +24 -3
- package/esm/icons/Duplicate.d.ts +3 -0
- package/esm/icons/Duplicate.js +23 -0
- package/esm/icons/index.d.ts +6 -3
- package/esm/icons/index.js +6 -3
- package/esm/types/index.d.ts +40 -0
- package/package.json +3 -3
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useSelector } from 'react-redux';
|
|
3
|
+
import mdm from '@reltio/mdm-module';
|
|
4
|
+
import { getAbsoluteImageUrl, getEntityTypeGraphIcon } from '@reltio/mdm-sdk';
|
|
5
|
+
import AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';
|
|
6
|
+
import { useStyles } from './styles';
|
|
7
|
+
var AttributeGroupIcon = function (_a) {
|
|
8
|
+
var group = _a.group, metadata = _a.metadata;
|
|
9
|
+
var styles = useStyles();
|
|
10
|
+
var absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);
|
|
11
|
+
var entityTypeGraphIcon = getEntityTypeGraphIcon(metadata, { type: group.id });
|
|
12
|
+
var absoluteImageUrl = getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);
|
|
13
|
+
return React.createElement(AvatarWithFallback, { className: styles.icon, icon: absoluteImageUrl, avatarText: group.title[0] });
|
|
14
|
+
};
|
|
15
|
+
export default AttributeGroupIcon;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"icon">;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SearchFilter, AttributeType } from '@reltio/mdm-sdk';
|
|
3
|
+
declare type Props = {
|
|
4
|
+
filters: SearchFilter[];
|
|
5
|
+
onChange: (filtres: SearchFilter[]) => void;
|
|
6
|
+
attributeTypes: AttributeType[];
|
|
7
|
+
};
|
|
8
|
+
declare const _default: React.MemoExoticComponent<({ attributeTypes, filters, onChange }: Props) => JSX.Element>;
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
2
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
3
|
+
to[j] = from[i];
|
|
4
|
+
return to;
|
|
5
|
+
};
|
|
6
|
+
import React, { useCallback, useRef, useMemo, memo, useEffect } from 'react';
|
|
7
|
+
import { useSelector } from 'react-redux';
|
|
8
|
+
import { always, evolve } from 'ramda';
|
|
9
|
+
import mdmModule from '@reltio/mdm-module';
|
|
10
|
+
import { getEntityType } from '@reltio/mdm-sdk';
|
|
11
|
+
import { getAttributeSelectorItems, getRowsDataFromFilters, getEntityTypeFromAttrTypes } from './helpers';
|
|
12
|
+
import FilterSelector from './components/FilterSelector/FilterSelector';
|
|
13
|
+
import RowActions from './components/RowActions/RowActions';
|
|
14
|
+
import QueryBuilderRowsGroup from '../QueryBuilderRowsGroup/QueryBuilderRowsGroup';
|
|
15
|
+
import AttributeSelector from './components/AttributeSelector/AttributeSelector';
|
|
16
|
+
import ValueEditor from './components/ValueEditor/ValueEditor';
|
|
17
|
+
import { useStyles } from './styles';
|
|
18
|
+
var EMPTY_FILTER = { fieldName: null, filter: null, values: [] };
|
|
19
|
+
var Stub = function () { return null; };
|
|
20
|
+
var AttributesFiltersBuilder = function (_a) {
|
|
21
|
+
var attributeTypes = _a.attributeTypes, filters = _a.filters, onChange = _a.onChange;
|
|
22
|
+
var metadata = useSelector(mdmModule.selectors.getMetadata);
|
|
23
|
+
var entityType = getEntityType(metadata, getEntityTypeFromAttrTypes(attributeTypes));
|
|
24
|
+
var _b = useStyles(), attrSelector = _b.attrSelector, filterSelector = _b.filterSelector, actionContainer = _b.actionContainer;
|
|
25
|
+
var actualFilters = useRef(filters);
|
|
26
|
+
actualFilters.current = filters;
|
|
27
|
+
var attributeFilterRef = useRef(null);
|
|
28
|
+
var lastAttributesCountRef = useRef(null);
|
|
29
|
+
var attributesCountRef = useRef(null);
|
|
30
|
+
var rowClasses = useMemo(function () { return ({
|
|
31
|
+
attributeSelectorContainer: attrSelector,
|
|
32
|
+
filterSelectorContainer: filterSelector,
|
|
33
|
+
actionsContainer: actionContainer
|
|
34
|
+
}); }, [attrSelector, filterSelector, actionContainer]);
|
|
35
|
+
var attributeSelectorItems = useMemo(function () { return getAttributeSelectorItems(attributeTypes, entityType, metadata); }, [
|
|
36
|
+
attributeTypes,
|
|
37
|
+
metadata,
|
|
38
|
+
entityType
|
|
39
|
+
]);
|
|
40
|
+
var rowsData = useMemo(function () { return (filters.length ? getRowsDataFromFilters(filters, attributeSelectorItems) : []); }, [
|
|
41
|
+
attributeSelectorItems,
|
|
42
|
+
filters
|
|
43
|
+
]);
|
|
44
|
+
attributesCountRef.current = rowsData.length;
|
|
45
|
+
useEffect(function () {
|
|
46
|
+
if (attributeFilterRef.current && lastAttributesCountRef.current !== attributesCountRef.current) {
|
|
47
|
+
attributeFilterRef.current.querySelector('input').focus();
|
|
48
|
+
lastAttributesCountRef.current = null;
|
|
49
|
+
}
|
|
50
|
+
}, [rowsData.length]);
|
|
51
|
+
var handleAttributeSelectorOnOpen = useCallback(function () {
|
|
52
|
+
lastAttributesCountRef.current = rowsData.length;
|
|
53
|
+
}, [rowsData.length]);
|
|
54
|
+
var lastRowAttributeSelectorProps = useMemo(function () { return ({
|
|
55
|
+
onOpen: handleAttributeSelectorOnOpen
|
|
56
|
+
}); }, [handleAttributeSelectorOnOpen]);
|
|
57
|
+
var addRowAfterIndex = useCallback(function (index) {
|
|
58
|
+
var newFilters = __spreadArray([], actualFilters.current);
|
|
59
|
+
newFilters.splice(index + 1, 0, EMPTY_FILTER);
|
|
60
|
+
onChange(newFilters);
|
|
61
|
+
}, [onChange]);
|
|
62
|
+
var removeRow = useCallback(function (index) {
|
|
63
|
+
var newFilters = __spreadArray([], actualFilters.current);
|
|
64
|
+
newFilters.splice(index, 1);
|
|
65
|
+
onChange(newFilters);
|
|
66
|
+
}, [onChange]);
|
|
67
|
+
var duplicateRow = useCallback(function (index) {
|
|
68
|
+
var newFilters = __spreadArray([], actualFilters.current);
|
|
69
|
+
newFilters.splice(index + 1, 0, {
|
|
70
|
+
fieldName: actualFilters.current[index].fieldName,
|
|
71
|
+
filter: actualFilters.current[index].filter,
|
|
72
|
+
values: actualFilters.current[index].values
|
|
73
|
+
});
|
|
74
|
+
onChange(newFilters);
|
|
75
|
+
}, [onChange]);
|
|
76
|
+
var changeFilter = useCallback(function (newFilter, id) {
|
|
77
|
+
var _a;
|
|
78
|
+
var newFilters = evolve((_a = {},
|
|
79
|
+
_a[id] = always(newFilter),
|
|
80
|
+
_a), actualFilters.current);
|
|
81
|
+
onChange(newFilters);
|
|
82
|
+
}, [onChange]);
|
|
83
|
+
var addNewFilter = useCallback(function (newFilter) {
|
|
84
|
+
onChange(__spreadArray(__spreadArray([], actualFilters.current), [newFilter]));
|
|
85
|
+
}, [onChange]);
|
|
86
|
+
return (React.createElement(QueryBuilderRowsGroup, { rowClasses: rowClasses, rowsData: rowsData, AttributeSelectorComponent: AttributeSelector, FilterSelectorComponent: FilterSelector, ValuesEditorComponent: ValueEditor, ActionsComponent: RowActions, LogicOperatorComponent: Stub, filterSelectorRefIndex: lastAttributesCountRef.current, filterSelectorRef: attributeFilterRef, lastRowAttributeSelectorProps: lastRowAttributeSelectorProps, attributesGroup: attributeSelectorItems, changeFilter: changeFilter, addNewFilter: addNewFilter, addRowAfterIndex: addRowAfterIndex, removeRow: removeRow, duplicateRow: duplicateRow }));
|
|
87
|
+
};
|
|
88
|
+
export default memo(AttributesFiltersBuilder);
|
package/esm/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AttributeFiltersComponentProps } from '../../types';
|
|
3
|
+
declare type Props = AttributeFiltersComponentProps & {
|
|
4
|
+
attributeSelectorProps: {
|
|
5
|
+
onOpen: () => void;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
declare const _default: React.MemoExoticComponent<({ rowData, rowContext, attributeSelectorProps }: Props) => JSX.Element>;
|
|
9
|
+
export default _default;
|
package/esm/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React, { useCallback, useMemo, memo } from 'react';
|
|
2
|
+
import { getSearchGroupAttributeLabel } from '@reltio/mdm-sdk';
|
|
3
|
+
import BasicAttributeSelector from '../../../BasicAttributeSelector/BasicAttributeSelector';
|
|
4
|
+
var AttributeSelector = function (_a) {
|
|
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, attributesGroup = rowContext.attributesGroup;
|
|
8
|
+
var getSelectedAttributeLabel = useCallback(function (data) { return getSearchGroupAttributeLabel({ data: data }); }, []);
|
|
9
|
+
var itemsGroup = useMemo(function () { return [{ id: '', title: '', attributes: attributesGroup }]; }, [attributesGroup]);
|
|
10
|
+
var changeAttribute = useCallback(function (selectInfo) {
|
|
11
|
+
if (rowData) {
|
|
12
|
+
var newFilter = {
|
|
13
|
+
fieldName: selectInfo.attribute.fieldName,
|
|
14
|
+
filter: filter,
|
|
15
|
+
values: []
|
|
16
|
+
};
|
|
17
|
+
changeFilter(newFilter, id);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
addNewFilter({
|
|
21
|
+
fieldName: selectInfo.attribute.fieldName,
|
|
22
|
+
filter: null,
|
|
23
|
+
values: []
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}, [addNewFilter, changeFilter, id, rowData, filter]);
|
|
27
|
+
return (React.createElement(BasicAttributeSelector, { itemsGroups: itemsGroup, ungroup: true, single: true, value: attribute, getLabel: getSelectedAttributeLabel, onSelect: changeAttribute, onOpenPopup: attributeSelectorProps.onOpen }));
|
|
28
|
+
};
|
|
29
|
+
export default memo(AttributeSelector);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AttributeFiltersComponentProps } from '../../types';
|
|
3
|
+
declare type Props = AttributeFiltersComponentProps & {
|
|
4
|
+
textFieldInputRef: React.MutableRefObject<HTMLInputElement>;
|
|
5
|
+
};
|
|
6
|
+
declare const _default: React.MemoExoticComponent<({ rowData, rowContext, textFieldInputRef }: Props) => JSX.Element>;
|
|
7
|
+
export default _default;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, memo } from 'react';
|
|
2
|
+
import i18n from 'ui-i18n';
|
|
3
|
+
import { pipe, map } from 'ramda';
|
|
4
|
+
import capitalize from '@material-ui/core/utils/capitalize';
|
|
5
|
+
import { getFilterOptionLabel, getFilterOptionsForQueryBuilder } from '@reltio/mdm-sdk';
|
|
6
|
+
import SimpleDropDownSelector from '../../../SimpleDropDownSelector/SimpleDropDownSelector';
|
|
7
|
+
import { findValue } from '../../helpers';
|
|
8
|
+
import useStyles from './styles';
|
|
9
|
+
var FilterSelector = function (_a) {
|
|
10
|
+
var rowData = _a.rowData, rowContext = _a.rowContext, textFieldInputRef = _a.textFieldInputRef;
|
|
11
|
+
var styles = useStyles();
|
|
12
|
+
var _b = rowData || {}, _c = _b.attribute, _d = _c === void 0 ? {} : _c, _e = _d.attrType, attrType = _e === void 0 ? {} : _e, _f = _d.fieldName, fieldName = _f === void 0 ? null : _f, filter = _b.filter, id = _b.id;
|
|
13
|
+
var changeFilter = rowContext.changeFilter;
|
|
14
|
+
var options = attrType &&
|
|
15
|
+
fieldName &&
|
|
16
|
+
pipe(getFilterOptionsForQueryBuilder, map(function (value) { return ({ value: value, label: capitalize(getFilterOptionLabel(value)) }); }))(attrType, fieldName);
|
|
17
|
+
var onChangeFilter = useCallback(function (filterOption) {
|
|
18
|
+
var newFilter = {
|
|
19
|
+
fieldName: fieldName,
|
|
20
|
+
filter: filterOption.value,
|
|
21
|
+
values: []
|
|
22
|
+
};
|
|
23
|
+
changeFilter(newFilter, id);
|
|
24
|
+
}, [changeFilter, id, fieldName]);
|
|
25
|
+
useEffect(function () {
|
|
26
|
+
if ((fieldName && !filter) || (fieldName && !findValue(options, filter))) {
|
|
27
|
+
onChangeFilter(options[0]);
|
|
28
|
+
}
|
|
29
|
+
}, [fieldName, filter, onChangeFilter, options]);
|
|
30
|
+
return (React.createElement(SimpleDropDownSelector, { label: "", height: 40, isDisabled: !options, placeholder: i18n.text('Equals'), value: findValue(options, filter), options: options, onChange: onChangeFilter, className: styles.dropDownSelector, textFieldInputRef: textFieldInputRef }));
|
|
31
|
+
};
|
|
32
|
+
export default memo(FilterSelector);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React, { memo, useCallback } from 'react';
|
|
2
|
+
import i18n from 'ui-i18n';
|
|
3
|
+
import CloseIcon from '@material-ui/icons/Close';
|
|
4
|
+
import AddCircleIcon from '@material-ui/icons/AddCircle';
|
|
5
|
+
import { SmallIconButtonWithTooltip } from '../../../SmallIconButton/index';
|
|
6
|
+
import DuplicateIcon from '../../../../icons/Duplicate';
|
|
7
|
+
import { useStyles } from './styles';
|
|
8
|
+
var RowActions = function (_a) {
|
|
9
|
+
var rowData = _a.rowData, rowContext = _a.rowContext;
|
|
10
|
+
var styles = useStyles();
|
|
11
|
+
var _b = rowData || {}, index = _b.id, attribute = _b.attribute;
|
|
12
|
+
var addRowAfterIndex = rowContext.addRowAfterIndex, removeRow = rowContext.removeRow, duplicateRow = rowContext.duplicateRow;
|
|
13
|
+
var onAddRowAfterId = useCallback(function () {
|
|
14
|
+
addRowAfterIndex(index);
|
|
15
|
+
}, [addRowAfterIndex, index]);
|
|
16
|
+
var onRowDuplicate = useCallback(function () {
|
|
17
|
+
duplicateRow(index);
|
|
18
|
+
}, [duplicateRow, index]);
|
|
19
|
+
var onRowDelete = useCallback(function () {
|
|
20
|
+
removeRow(index);
|
|
21
|
+
}, [index, removeRow]);
|
|
22
|
+
return (React.createElement("div", { className: styles.actions },
|
|
23
|
+
React.createElement(SmallIconButtonWithTooltip, { tooltipTitle: i18n.text('Add'), icon: AddCircleIcon, size: "M", onClick: onAddRowAfterId }),
|
|
24
|
+
attribute && (React.createElement(SmallIconButtonWithTooltip, { tooltipTitle: i18n.text('Duplicate'), icon: DuplicateIcon, size: "M", onClick: onRowDuplicate })),
|
|
25
|
+
React.createElement(SmallIconButtonWithTooltip, { tooltipTitle: i18n.text('Delete'), icon: CloseIcon, size: "M", onClick: onRowDelete })));
|
|
26
|
+
};
|
|
27
|
+
export default memo(RowActions);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"actions" | "actionIcon">;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
2
|
+
export var useStyles = makeStyles(function () { return ({
|
|
3
|
+
actions: {
|
|
4
|
+
width: '88px',
|
|
5
|
+
height: '24px',
|
|
6
|
+
display: 'flex',
|
|
7
|
+
alignItems: 'center',
|
|
8
|
+
justifyContent: 'space-between',
|
|
9
|
+
flexShrink: 0,
|
|
10
|
+
'& >span': {
|
|
11
|
+
cursor: 'pointer',
|
|
12
|
+
display: 'flex'
|
|
13
|
+
},
|
|
14
|
+
'& $actionIcon': {
|
|
15
|
+
cursor: 'pointer',
|
|
16
|
+
color: 'rgba(0, 0, 0, .54)'
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
actionIcon: {}
|
|
20
|
+
}); });
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React, { memo, useMemo, useCallback } from 'react';
|
|
2
|
+
import { checkIfOptionHasValues, getAttrDataTypeDefinition, getDataTypeDefinitionForFilterValue } from '@reltio/mdm-sdk';
|
|
3
|
+
import FilterValueEditor from '../../../editors/FilterEditor/FilterValueEditor';
|
|
4
|
+
import { useStyles } from './styles';
|
|
5
|
+
var ValuesEditor = function (_a) {
|
|
6
|
+
var rowData = _a.rowData, rowContext = _a.rowContext;
|
|
7
|
+
var styles = useStyles();
|
|
8
|
+
var canFilterAcceptValues = (rowData === null || rowData === void 0 ? void 0 : rowData.attribute) && checkIfOptionHasValues(rowData.filter);
|
|
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, _f = _e.attrType, attrType = _f === void 0 ? {} : _f, _g = _e.fieldName, fieldName = _g === void 0 ? null : _g, filter = _b.filter, id = _b.id;
|
|
11
|
+
var valueDataTypeDefinition = attrType && getAttrDataTypeDefinition(attrType);
|
|
12
|
+
var filterValueDataTypeDefinition = valueDataTypeDefinition && getDataTypeDefinitionForFilterValue(valueDataTypeDefinition, filter);
|
|
13
|
+
var editorFilter = useMemo(function () { return ({
|
|
14
|
+
filter: filter,
|
|
15
|
+
fieldName: fieldName,
|
|
16
|
+
values: values || []
|
|
17
|
+
}); }, [filter, fieldName, values]);
|
|
18
|
+
var TextFieldProps = useMemo(function () { return ({
|
|
19
|
+
InputProps: {
|
|
20
|
+
classes: {
|
|
21
|
+
root: styles.input
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}); }, [styles]);
|
|
25
|
+
var editorClasses = useMemo(function () { return ({ root: styles.root }); }, [styles]);
|
|
26
|
+
var changeValue = useCallback(function (values) {
|
|
27
|
+
var newFilter = {
|
|
28
|
+
fieldName: fieldName,
|
|
29
|
+
filter: filter,
|
|
30
|
+
values: values
|
|
31
|
+
};
|
|
32
|
+
changeFilter(newFilter, id);
|
|
33
|
+
}, [changeFilter, id, fieldName, filter]);
|
|
34
|
+
return (React.createElement("div", { className: styles.valuesEditor }, (rowData === null || rowData === void 0 ? void 0 : rowData.attribute) && canFilterAcceptValues && (React.createElement(FilterValueEditor, { filter: editorFilter, onChange: changeValue, dataTypeDefinition: filterValueDataTypeDefinition, fullWidth: true, TextFieldProps: TextFieldProps, color: "primary", classes: editorClasses, orientation: "horizontal" }))));
|
|
35
|
+
};
|
|
36
|
+
export default memo(ValuesEditor);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"input" | "root" | "valuesEditor">;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
2
|
+
export var useStyles = makeStyles(function () { return ({
|
|
3
|
+
input: {
|
|
4
|
+
margin: 0,
|
|
5
|
+
borderRadius: '4px',
|
|
6
|
+
width: '100%',
|
|
7
|
+
paddingTop: 0,
|
|
8
|
+
paddingBottom: 0
|
|
9
|
+
},
|
|
10
|
+
root: {
|
|
11
|
+
borderRadius: '4px 4px 0 0',
|
|
12
|
+
padding: 0,
|
|
13
|
+
display: 'flex',
|
|
14
|
+
alignItems: 'center',
|
|
15
|
+
margin: 0
|
|
16
|
+
},
|
|
17
|
+
valuesEditor: {
|
|
18
|
+
width: '222px!important',
|
|
19
|
+
minHeight: '40px',
|
|
20
|
+
flexShrink: 0
|
|
21
|
+
}
|
|
22
|
+
}); });
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AttributeType, TEntityType, Metadata, SearchFilter } from '@reltio/mdm-sdk';
|
|
2
|
+
import { AttributeSelectorItem } from '../../types';
|
|
3
|
+
import { FilterOption } from './types';
|
|
4
|
+
export declare const getAttributeSelectorItems: (attributeTypes: AttributeType[], entityType: TEntityType, metadata: Metadata) => AttributeSelectorItem[];
|
|
5
|
+
export declare const findValue: (options: FilterOption[], filter: string) => FilterOption;
|
|
6
|
+
export declare const getRowsDataFromFilters: (filters: SearchFilter[], attributesGroup: AttributeSelectorItem[]) => {
|
|
7
|
+
attribute: AttributeSelectorItem;
|
|
8
|
+
filter: string;
|
|
9
|
+
id: number;
|
|
10
|
+
values: string[];
|
|
11
|
+
}[];
|
|
12
|
+
export declare const getEntityTypeFromAttrTypes: (attributeTypes: AttributeType[]) => any;
|
|
@@ -0,0 +1,70 @@
|
|
|
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 { getAttributesTreeFromAttributes, attributeUriToSearchUri, isSpecialAttribute, getBaseUri } from '@reltio/mdm-sdk';
|
|
13
|
+
var createAttributeItem = function (attrType, entityTypeUri) {
|
|
14
|
+
var title = attrType.label || attrType.name;
|
|
15
|
+
return {
|
|
16
|
+
title: title,
|
|
17
|
+
fieldName: attributeUriToSearchUri(attrType.uri),
|
|
18
|
+
entityTypeUri: entityTypeUri,
|
|
19
|
+
attrType: attrType
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
var createAttributesConfig = function (attrNode, entityTypeUri, createAttributeConfig) {
|
|
23
|
+
var resConfig = __assign(__assign({}, createAttributeConfig(attrNode, entityTypeUri)), { uri: attrNode.uri });
|
|
24
|
+
var children = attrNode.children
|
|
25
|
+
? attrNode.children.map(function (childNode) { return createAttributesConfig(childNode, entityTypeUri, createAttributeConfig); })
|
|
26
|
+
: [];
|
|
27
|
+
if (children.length)
|
|
28
|
+
resConfig.children = children;
|
|
29
|
+
return resConfig;
|
|
30
|
+
};
|
|
31
|
+
export var getAttributeSelectorItems = function (attributeTypes, entityType, metadata) {
|
|
32
|
+
if (entityType === void 0) { entityType = {}; }
|
|
33
|
+
return getAttributesTreeFromAttributes(attributeTypes, metadata).map(function (attrNode) {
|
|
34
|
+
return createAttributesConfig(attrNode, entityType.uri, createAttributeItem);
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
var findAttributeSelectorItem = function (fieldName, attributesGroup) {
|
|
38
|
+
var attrGroup;
|
|
39
|
+
var findAttribute = function (fieldName, attributesGroup) {
|
|
40
|
+
for (var _i = 0, attributesGroup_1 = attributesGroup; _i < attributesGroup_1.length; _i++) {
|
|
41
|
+
var attributeGroup = attributesGroup_1[_i];
|
|
42
|
+
if (fieldName === attributeGroup.fieldName) {
|
|
43
|
+
attrGroup = attributeGroup;
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if ('children' in attributeGroup) {
|
|
47
|
+
findAttribute(fieldName, attributeGroup.children);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
findAttribute(fieldName, attributesGroup);
|
|
52
|
+
return attrGroup;
|
|
53
|
+
};
|
|
54
|
+
export var findValue = function (options, filter) {
|
|
55
|
+
return options ? options.find(function (option) { return option.value === filter; }) : null;
|
|
56
|
+
};
|
|
57
|
+
export var getRowsDataFromFilters = function (filters, attributesGroup) {
|
|
58
|
+
return filters.map(function (filter, index) {
|
|
59
|
+
return {
|
|
60
|
+
attribute: filter.fieldName ? findAttributeSelectorItem(filter.fieldName, attributesGroup) : undefined,
|
|
61
|
+
filter: filter.filter,
|
|
62
|
+
id: index,
|
|
63
|
+
values: filter.values
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
export var getEntityTypeFromAttrTypes = function (attributeTypes) {
|
|
68
|
+
var regularAttribute = attributeTypes.find(function (attribute) { return !isSpecialAttribute(attribute); });
|
|
69
|
+
return regularAttribute ? getBaseUri(regularAttribute.uri) : null;
|
|
70
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"attrSelector" | "filterSelector" | "actionContainer">;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
2
|
+
export var useStyles = makeStyles(function () { return ({
|
|
3
|
+
attrSelector: {
|
|
4
|
+
width: '222px',
|
|
5
|
+
height: '40px',
|
|
6
|
+
flexShrink: 0
|
|
7
|
+
},
|
|
8
|
+
filterSelector: {
|
|
9
|
+
width: '180px',
|
|
10
|
+
flexShrink: 0,
|
|
11
|
+
marginTop: 0,
|
|
12
|
+
marginBottom: 0
|
|
13
|
+
},
|
|
14
|
+
actionContainer: {
|
|
15
|
+
alignItems: 'center',
|
|
16
|
+
marginRight: '15px'
|
|
17
|
+
}
|
|
18
|
+
}); });
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { SearchFilter } from '@reltio/mdm-sdk';
|
|
2
|
+
import { AttributeSelectorItem } from '../../types';
|
|
3
|
+
export declare type FilterOption = {
|
|
4
|
+
value: string;
|
|
5
|
+
label: string;
|
|
6
|
+
};
|
|
7
|
+
export declare type RowData = {
|
|
8
|
+
attribute: AttributeSelectorItem;
|
|
9
|
+
filter: string;
|
|
10
|
+
id: number;
|
|
11
|
+
values: string[];
|
|
12
|
+
};
|
|
13
|
+
export declare type RowContext = {
|
|
14
|
+
attributesGroup: AttributeSelectorItem[];
|
|
15
|
+
addNewFilter: (newFilter: SearchFilter) => void;
|
|
16
|
+
addRowAfterIndex: (index: number) => void;
|
|
17
|
+
changeFilter: (newFilter: SearchFilter, id: number) => void;
|
|
18
|
+
duplicateRow: (index: number) => void;
|
|
19
|
+
removeRow: (index: number) => void;
|
|
20
|
+
};
|
|
21
|
+
export declare type AttributeFiltersComponentProps = {
|
|
22
|
+
rowData: RowData;
|
|
23
|
+
rowContext: RowContext;
|
|
24
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import i18n from 'ui-i18n';
|
|
3
|
+
import Button from '@material-ui/core/Button';
|
|
4
|
+
import { useStyles } from './styles';
|
|
5
|
+
var ActionButtons = function (_a) {
|
|
6
|
+
var onClear = _a.onClear, onCancel = _a.onCancel, onApply = _a.onApply;
|
|
7
|
+
var styles = useStyles();
|
|
8
|
+
return (React.createElement("div", { className: styles.buttonsWrapper },
|
|
9
|
+
React.createElement(Button, { onClick: onClear, variant: "text", color: "default", className: styles.clearButon }, i18n.text('Clear all')),
|
|
10
|
+
React.createElement(Button, { onClick: onCancel, variant: "text", color: "default", className: styles.cancelButton }, i18n.text('Cancel')),
|
|
11
|
+
React.createElement(Button, { onClick: onApply, variant: "text", color: "primary", className: styles.applyButton }, i18n.text('Apply'))));
|
|
12
|
+
};
|
|
13
|
+
export default ActionButtons;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"buttonsWrapper" | "cancelButton" | "applyButton" | "clearButon">;
|
|
@@ -0,0 +1,23 @@
|
|
|
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 { makeStyles } from '@material-ui/core/styles';
|
|
13
|
+
var allButtonsStyle = {
|
|
14
|
+
alignSelf: 'center'
|
|
15
|
+
};
|
|
16
|
+
export var useStyles = makeStyles(function () { return ({
|
|
17
|
+
buttonsWrapper: {
|
|
18
|
+
display: 'flex'
|
|
19
|
+
},
|
|
20
|
+
applyButton: __assign(__assign({}, allButtonsStyle), { marginRight: '16px' }),
|
|
21
|
+
cancelButton: __assign(__assign({}, allButtonsStyle), { marginLeft: 'auto' }),
|
|
22
|
+
clearButon: __assign({}, allButtonsStyle)
|
|
23
|
+
}); });
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SearchFilter, AttributeType } from '@reltio/mdm-sdk';
|
|
3
|
+
declare type Props = {
|
|
4
|
+
filters: SearchFilter[];
|
|
5
|
+
onChange: (filtres: SearchFilter[]) => void;
|
|
6
|
+
attributeTypes: AttributeType[];
|
|
7
|
+
};
|
|
8
|
+
declare const _default: React.MemoExoticComponent<({ filters: filtersProp, attributeTypes, onChange }: Props) => JSX.Element>;
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React, { useRef, useState, useEffect, useCallback, memo } from 'react';
|
|
2
|
+
import i18n from 'ui-i18n';
|
|
3
|
+
import Popover from '@material-ui/core/Popover';
|
|
4
|
+
import Button from '@material-ui/core/Button';
|
|
5
|
+
import FilterIcon from '@material-ui/icons/FilterList';
|
|
6
|
+
import Typography from '@material-ui/core/Typography';
|
|
7
|
+
import Divider from '@material-ui/core/Divider';
|
|
8
|
+
import AttributesFiltersBuilder from '../AttributesFiltersBuilder/AttributesFiltersBuilder';
|
|
9
|
+
import ActionButtons from './ActionButtons/ActionButtons';
|
|
10
|
+
import { useStyles } from './styles';
|
|
11
|
+
var AttributesFiltersButton = function (_a) {
|
|
12
|
+
var filtersProp = _a.filters, attributeTypes = _a.attributeTypes, onChange = _a.onChange;
|
|
13
|
+
var styles = useStyles();
|
|
14
|
+
var buttonRef = useRef();
|
|
15
|
+
var _b = useState(false), isOpen = _b[0], setIsOpen = _b[1];
|
|
16
|
+
var _c = useState([]), filters = _c[0], setFilters = _c[1];
|
|
17
|
+
var isFiltersApplied = filtersProp.some(function (_a) {
|
|
18
|
+
var fieldName = _a.fieldName, filter = _a.filter, values = _a.values;
|
|
19
|
+
return fieldName && filter && values.length;
|
|
20
|
+
});
|
|
21
|
+
var buttonColor = isFiltersApplied ? 'primary' : 'inherit';
|
|
22
|
+
var togglePopup = function () { return setIsOpen(function (open) { return !open; }); };
|
|
23
|
+
useEffect(function () {
|
|
24
|
+
if (isOpen) {
|
|
25
|
+
setFilters(filtersProp);
|
|
26
|
+
}
|
|
27
|
+
}, [filtersProp, isOpen]);
|
|
28
|
+
var applyButtonHandler = useCallback(function () {
|
|
29
|
+
onChange(filters);
|
|
30
|
+
togglePopup();
|
|
31
|
+
}, [filters, onChange]);
|
|
32
|
+
var cancelButtonHandler = useCallback(function () {
|
|
33
|
+
togglePopup();
|
|
34
|
+
}, []);
|
|
35
|
+
var clearAllButtonHandler = useCallback(function () {
|
|
36
|
+
setFilters([]);
|
|
37
|
+
}, []);
|
|
38
|
+
return (React.createElement(React.Fragment, null,
|
|
39
|
+
React.createElement(Button, { ref: buttonRef, color: buttonColor, classes: {
|
|
40
|
+
root: styles.triggerButton,
|
|
41
|
+
textPrimary: styles.changedFiltersIndicator
|
|
42
|
+
}, onClick: togglePopup },
|
|
43
|
+
React.createElement(FilterIcon, { color: buttonColor })),
|
|
44
|
+
React.createElement(Popover, { open: isOpen, classes: { paper: styles.popupContent }, anchorEl: buttonRef.current, onClose: togglePopup, anchorOrigin: {
|
|
45
|
+
vertical: 'bottom',
|
|
46
|
+
horizontal: 'right'
|
|
47
|
+
}, transformOrigin: {
|
|
48
|
+
vertical: 'top',
|
|
49
|
+
horizontal: 'left'
|
|
50
|
+
} },
|
|
51
|
+
React.createElement(React.Fragment, null,
|
|
52
|
+
React.createElement(Typography, { variant: "h6" }, i18n.text('Filter')),
|
|
53
|
+
React.createElement("div", { className: styles.filtersBuilderWrapper },
|
|
54
|
+
React.createElement(AttributesFiltersBuilder, { attributeTypes: attributeTypes, filters: filters, onChange: setFilters })),
|
|
55
|
+
React.createElement(Divider, { className: styles.divider }),
|
|
56
|
+
React.createElement(ActionButtons, { onApply: applyButtonHandler, onCancel: cancelButtonHandler, onClear: clearAllButtonHandler })))));
|
|
57
|
+
};
|
|
58
|
+
export default memo(AttributesFiltersButton);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"divider" | "triggerButton" | "filtersBuilderWrapper" | "popupContent" | "changedFiltersIndicator">;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { makeStyles, fade } from '@material-ui/core/styles';
|
|
2
|
+
export var useStyles = makeStyles(function (theme) { return ({
|
|
3
|
+
triggerButton: {
|
|
4
|
+
minWidth: 0,
|
|
5
|
+
color: 'rgba(0,0,0,0.54)',
|
|
6
|
+
width: '40px',
|
|
7
|
+
marginLeft: 'auto',
|
|
8
|
+
marginRight: '12px'
|
|
9
|
+
},
|
|
10
|
+
filtersBuilderWrapper: {
|
|
11
|
+
marginTop: '20px'
|
|
12
|
+
},
|
|
13
|
+
popupContent: {
|
|
14
|
+
paddingLeft: '16px',
|
|
15
|
+
paddingTop: '20px',
|
|
16
|
+
paddingBottom: '6px',
|
|
17
|
+
width: '770px'
|
|
18
|
+
},
|
|
19
|
+
divider: {
|
|
20
|
+
marginBottom: '14px',
|
|
21
|
+
marginLeft: '-16px',
|
|
22
|
+
background: 'rgba(0, 0, 0, 0.121569)'
|
|
23
|
+
},
|
|
24
|
+
changedFiltersIndicator: {
|
|
25
|
+
backgroundColor: fade(theme.palette.primary.main, 0.12)
|
|
26
|
+
}
|
|
27
|
+
}); });
|