@reltio/components 1.4.1069 → 1.4.1072

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/cjs/components/AttributeGroupIcon/AttributeGroupIcon.d.ts +11 -0
  2. package/cjs/components/AttributeGroupIcon/AttributeGroupIcon.js +20 -0
  3. package/cjs/components/AttributeGroupIcon/styles.d.ts +1 -0
  4. package/cjs/components/AttributeGroupIcon/styles.js +11 -0
  5. package/cjs/components/AttributesFiltersBuilder/AttributesFiltersBuilder.d.ts +9 -0
  6. package/cjs/components/AttributesFiltersBuilder/AttributesFiltersBuilder.js +112 -0
  7. package/cjs/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.d.ts +9 -0
  8. package/cjs/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.js +53 -0
  9. package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.d.ts +7 -0
  10. package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.js +56 -0
  11. package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/styles.d.ts +2 -0
  12. package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/styles.js +9 -0
  13. package/cjs/components/AttributesFiltersBuilder/components/RowActions/RowActions.d.ts +4 -0
  14. package/cjs/components/AttributesFiltersBuilder/components/RowActions/RowActions.js +51 -0
  15. package/cjs/components/AttributesFiltersBuilder/components/RowActions/styles.d.ts +1 -0
  16. package/cjs/components/AttributesFiltersBuilder/components/RowActions/styles.js +23 -0
  17. package/cjs/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.d.ts +4 -0
  18. package/cjs/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.js +60 -0
  19. package/cjs/components/AttributesFiltersBuilder/components/ValueEditor/styles.d.ts +1 -0
  20. package/cjs/components/AttributesFiltersBuilder/components/ValueEditor/styles.js +25 -0
  21. package/cjs/components/AttributesFiltersBuilder/helpers.d.ts +12 -0
  22. package/cjs/components/AttributesFiltersBuilder/helpers.js +77 -0
  23. package/cjs/components/AttributesFiltersBuilder/styles.d.ts +1 -0
  24. package/cjs/components/AttributesFiltersBuilder/styles.js +21 -0
  25. package/cjs/components/AttributesFiltersBuilder/types.d.ts +24 -0
  26. package/cjs/components/AttributesFiltersBuilder/types.js +2 -0
  27. package/cjs/components/AttributesFiltersButton/ActionButtons/ActionButtons.d.ts +8 -0
  28. package/cjs/components/AttributesFiltersButton/ActionButtons/ActionButtons.js +18 -0
  29. package/cjs/components/AttributesFiltersButton/ActionButtons/styles.d.ts +1 -0
  30. package/cjs/components/AttributesFiltersButton/ActionButtons/styles.js +26 -0
  31. package/cjs/components/AttributesFiltersButton/AttributesFiltersButton.d.ts +9 -0
  32. package/cjs/components/AttributesFiltersButton/AttributesFiltersButton.js +82 -0
  33. package/cjs/components/AttributesFiltersButton/styles.d.ts +1 -0
  34. package/cjs/components/AttributesFiltersButton/styles.js +30 -0
  35. package/cjs/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.d.ts +14 -0
  36. package/cjs/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.js +27 -0
  37. package/cjs/components/BasicAttributeSelector/AttributeTitle/styles.d.ts +2 -0
  38. package/cjs/components/BasicAttributeSelector/AttributeTitle/styles.js +44 -0
  39. package/cjs/components/BasicAttributeSelector/BasicAttributeSelector.d.ts +4 -0
  40. package/cjs/components/BasicAttributeSelector/BasicAttributeSelector.js +99 -0
  41. package/cjs/components/BasicAttributeSelector/helpers.d.ts +22 -0
  42. package/cjs/components/BasicAttributeSelector/helpers.js +80 -0
  43. package/cjs/components/BasicAttributeSelector/styles.d.ts +2 -0
  44. package/cjs/components/BasicAttributeSelector/styles.js +14 -0
  45. package/cjs/components/ConnectionEditor/ConnectionEditor.d.ts +12 -3
  46. package/cjs/components/ConnectionEditor/ConnectionEditor.js +72 -5
  47. package/cjs/components/ConnectionEditor/styles.d.ts +1 -0
  48. package/cjs/components/ConnectionEditor/styles.js +12 -0
  49. package/cjs/components/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.js +3 -2
  50. package/cjs/components/QueryBuilderRow/QueryBuilderRow.d.ts +2 -2
  51. package/cjs/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.d.ts +2 -2
  52. package/cjs/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js +1 -1
  53. package/cjs/components/SelectAttributesList/SelectAttributesList.d.ts +14 -0
  54. package/cjs/components/SelectAttributesList/SelectAttributesList.js +75 -0
  55. package/cjs/components/SelectAttributesList/styles.d.ts +1 -0
  56. package/cjs/components/SelectAttributesList/styles.js +16 -0
  57. package/cjs/components/SelectionPopup/SelectionPopup.d.ts +1 -1
  58. package/cjs/components/SidePanel/SidePanelContentHeader/SidePanelContentHeader.d.ts +2 -2
  59. package/cjs/components/attributes/editMode/EntitySelector/EntitySelector.d.ts +1 -1
  60. package/cjs/components/attributes/editMode/EntitySelector/EntitySelector.js +13 -6
  61. package/cjs/components/index.d.ts +4 -0
  62. package/cjs/components/index.js +9 -1
  63. package/cjs/components/workflow/hooks/useWorkflowAssignee.d.ts +1 -1
  64. package/cjs/components/workflow/hooks/useWorkflowAssignee.js +2 -2
  65. package/cjs/constants/prop-types.d.ts +1 -1
  66. package/cjs/constants/prop-types.js +1 -1
  67. package/cjs/hooks/useEditableConnection.d.ts +10 -4
  68. package/cjs/hooks/useEditableConnection.js +27 -3
  69. package/cjs/icons/Duplicate.d.ts +3 -0
  70. package/cjs/icons/Duplicate.js +28 -0
  71. package/cjs/icons/index.d.ts +6 -3
  72. package/cjs/icons/index.js +14 -7
  73. package/cjs/types/index.d.ts +40 -0
  74. package/esm/components/AttributeGroupIcon/AttributeGroupIcon.d.ts +11 -0
  75. package/esm/components/AttributeGroupIcon/AttributeGroupIcon.js +15 -0
  76. package/esm/components/AttributeGroupIcon/styles.d.ts +1 -0
  77. package/esm/components/AttributeGroupIcon/styles.js +8 -0
  78. package/esm/components/AttributesFiltersBuilder/AttributesFiltersBuilder.d.ts +9 -0
  79. package/esm/components/AttributesFiltersBuilder/AttributesFiltersBuilder.js +88 -0
  80. package/esm/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.d.ts +9 -0
  81. package/esm/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.js +29 -0
  82. package/esm/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.d.ts +7 -0
  83. package/esm/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.js +32 -0
  84. package/esm/components/AttributesFiltersBuilder/components/FilterSelector/styles.d.ts +2 -0
  85. package/esm/components/AttributesFiltersBuilder/components/FilterSelector/styles.js +7 -0
  86. package/esm/components/AttributesFiltersBuilder/components/RowActions/RowActions.d.ts +4 -0
  87. package/esm/components/AttributesFiltersBuilder/components/RowActions/RowActions.js +27 -0
  88. package/esm/components/AttributesFiltersBuilder/components/RowActions/styles.d.ts +1 -0
  89. package/esm/components/AttributesFiltersBuilder/components/RowActions/styles.js +20 -0
  90. package/esm/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.d.ts +4 -0
  91. package/esm/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.js +36 -0
  92. package/esm/components/AttributesFiltersBuilder/components/ValueEditor/styles.d.ts +1 -0
  93. package/esm/components/AttributesFiltersBuilder/components/ValueEditor/styles.js +22 -0
  94. package/esm/components/AttributesFiltersBuilder/helpers.d.ts +12 -0
  95. package/esm/components/AttributesFiltersBuilder/helpers.js +70 -0
  96. package/esm/components/AttributesFiltersBuilder/styles.d.ts +1 -0
  97. package/esm/components/AttributesFiltersBuilder/styles.js +18 -0
  98. package/esm/components/AttributesFiltersBuilder/types.d.ts +24 -0
  99. package/esm/components/AttributesFiltersBuilder/types.js +1 -0
  100. package/esm/components/AttributesFiltersButton/ActionButtons/ActionButtons.d.ts +8 -0
  101. package/esm/components/AttributesFiltersButton/ActionButtons/ActionButtons.js +13 -0
  102. package/esm/components/AttributesFiltersButton/ActionButtons/styles.d.ts +1 -0
  103. package/esm/components/AttributesFiltersButton/ActionButtons/styles.js +23 -0
  104. package/esm/components/AttributesFiltersButton/AttributesFiltersButton.d.ts +9 -0
  105. package/esm/components/AttributesFiltersButton/AttributesFiltersButton.js +58 -0
  106. package/esm/components/AttributesFiltersButton/styles.d.ts +1 -0
  107. package/esm/components/AttributesFiltersButton/styles.js +27 -0
  108. package/esm/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.d.ts +14 -0
  109. package/esm/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.js +22 -0
  110. package/esm/components/BasicAttributeSelector/AttributeTitle/styles.d.ts +2 -0
  111. package/esm/components/BasicAttributeSelector/AttributeTitle/styles.js +42 -0
  112. package/esm/components/BasicAttributeSelector/BasicAttributeSelector.d.ts +4 -0
  113. package/esm/components/BasicAttributeSelector/BasicAttributeSelector.js +75 -0
  114. package/esm/components/BasicAttributeSelector/helpers.d.ts +22 -0
  115. package/esm/components/BasicAttributeSelector/helpers.js +72 -0
  116. package/esm/components/BasicAttributeSelector/styles.d.ts +2 -0
  117. package/esm/components/BasicAttributeSelector/styles.js +12 -0
  118. package/esm/components/ConnectionEditor/ConnectionEditor.d.ts +12 -3
  119. package/esm/components/ConnectionEditor/ConnectionEditor.js +74 -7
  120. package/esm/components/ConnectionEditor/styles.d.ts +1 -0
  121. package/esm/components/ConnectionEditor/styles.js +9 -0
  122. package/esm/components/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.js +3 -2
  123. package/esm/components/QueryBuilderRow/QueryBuilderRow.d.ts +2 -2
  124. package/esm/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.d.ts +2 -2
  125. package/esm/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js +1 -1
  126. package/esm/components/SelectAttributesList/SelectAttributesList.d.ts +14 -0
  127. package/esm/components/SelectAttributesList/SelectAttributesList.js +51 -0
  128. package/esm/components/SelectAttributesList/styles.d.ts +1 -0
  129. package/esm/components/SelectAttributesList/styles.js +13 -0
  130. package/esm/components/SelectionPopup/SelectionPopup.d.ts +1 -1
  131. package/esm/components/SidePanel/SidePanelContentHeader/SidePanelContentHeader.d.ts +2 -2
  132. package/esm/components/attributes/editMode/EntitySelector/EntitySelector.d.ts +1 -1
  133. package/esm/components/attributes/editMode/EntitySelector/EntitySelector.js +13 -6
  134. package/esm/components/index.d.ts +4 -0
  135. package/esm/components/index.js +4 -0
  136. package/esm/components/workflow/hooks/useWorkflowAssignee.d.ts +1 -1
  137. package/esm/components/workflow/hooks/useWorkflowAssignee.js +1 -1
  138. package/esm/constants/prop-types.d.ts +1 -1
  139. package/esm/constants/prop-types.js +1 -1
  140. package/esm/hooks/useEditableConnection.d.ts +10 -4
  141. package/esm/hooks/useEditableConnection.js +24 -3
  142. package/esm/icons/Duplicate.d.ts +3 -0
  143. package/esm/icons/Duplicate.js +23 -0
  144. package/esm/icons/index.d.ts +6 -3
  145. package/esm/icons/index.js +6 -3
  146. package/esm/types/index.d.ts +40 -0
  147. 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,8 @@
1
+ import { makeStyles } from '@material-ui/core/styles';
2
+ export var useStyles = makeStyles({
3
+ icon: {
4
+ maxHeight: '25px',
5
+ maxWidth: '25px',
6
+ marginRight: '16px'
7
+ }
8
+ });
@@ -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);
@@ -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;
@@ -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,2 @@
1
+ declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"dropDownSelector">;
2
+ export default useStyles;
@@ -0,0 +1,7 @@
1
+ import { makeStyles } from '@material-ui/core/styles';
2
+ var useStyles = makeStyles({
3
+ dropDownSelector: {
4
+ width: '100%'
5
+ }
6
+ });
7
+ export default useStyles;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { AttributeFiltersComponentProps } from '../../types';
3
+ declare const _default: React.MemoExoticComponent<({ rowData, rowContext }: AttributeFiltersComponentProps) => JSX.Element>;
4
+ export default _default;
@@ -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,4 @@
1
+ import React from 'react';
2
+ import { AttributeFiltersComponentProps } from '../../types';
3
+ declare const _default: React.MemoExoticComponent<({ rowData, rowContext }: AttributeFiltersComponentProps) => JSX.Element>;
4
+ export default _default;
@@ -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,8 @@
1
+ /// <reference types="react" />
2
+ declare type Props = {
3
+ onClear: () => void;
4
+ onCancel: () => void;
5
+ onApply: () => void;
6
+ };
7
+ declare const ActionButtons: ({ onClear, onCancel, onApply }: Props) => JSX.Element;
8
+ export default ActionButtons;
@@ -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
+ }); });