@reltio/components 1.4.1068 → 1.4.1073

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 (163) 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/Image/ImageActionsOverlay/styles.d.ts +1 -1
  51. package/cjs/components/ImageDetailsView/MetaInfoForm/styles.d.ts +1 -1
  52. package/cjs/components/QueryBuilderRow/QueryBuilderRow.d.ts +2 -2
  53. package/cjs/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.d.ts +2 -2
  54. package/cjs/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js +1 -1
  55. package/cjs/components/SelectAttributesList/SelectAttributesList.d.ts +14 -0
  56. package/cjs/components/SelectAttributesList/SelectAttributesList.js +75 -0
  57. package/cjs/components/SelectAttributesList/styles.d.ts +1 -0
  58. package/cjs/components/SelectAttributesList/styles.js +16 -0
  59. package/cjs/components/SelectionPopup/SelectionPopup.d.ts +1 -1
  60. package/cjs/components/SidePanel/SidePanelContentHeader/SidePanelContentHeader.d.ts +2 -2
  61. package/cjs/components/activityLog/activities/SearchActivity.js +2 -2
  62. package/cjs/components/attributes/editMode/EntitySelector/EntitySelector.d.ts +1 -1
  63. package/cjs/components/attributes/editMode/EntitySelector/EntitySelector.js +13 -6
  64. package/cjs/components/index.d.ts +4 -0
  65. package/cjs/components/index.js +9 -1
  66. package/cjs/components/workflow/hooks/useWorkflowAssignee.d.ts +1 -1
  67. package/cjs/components/workflow/hooks/useWorkflowAssignee.js +2 -2
  68. package/cjs/constants/prop-types.d.ts +1 -1
  69. package/cjs/constants/prop-types.js +1 -1
  70. package/cjs/hooks/index.d.ts +1 -0
  71. package/cjs/hooks/index.js +3 -1
  72. package/cjs/hooks/useEditableConnection.d.ts +10 -4
  73. package/cjs/hooks/useEditableConnection.js +27 -3
  74. package/cjs/hooks/useReadableSearchState.d.ts +2 -0
  75. package/cjs/{components/activityLog/hooks → hooks}/useReadableSearchState.js +0 -0
  76. package/cjs/icons/Duplicate.d.ts +3 -0
  77. package/cjs/icons/Duplicate.js +28 -0
  78. package/cjs/icons/index.d.ts +6 -3
  79. package/cjs/icons/index.js +14 -7
  80. package/cjs/types/index.d.ts +40 -0
  81. package/esm/components/AttributeGroupIcon/AttributeGroupIcon.d.ts +11 -0
  82. package/esm/components/AttributeGroupIcon/AttributeGroupIcon.js +15 -0
  83. package/esm/components/AttributeGroupIcon/styles.d.ts +1 -0
  84. package/esm/components/AttributeGroupIcon/styles.js +8 -0
  85. package/esm/components/AttributesFiltersBuilder/AttributesFiltersBuilder.d.ts +9 -0
  86. package/esm/components/AttributesFiltersBuilder/AttributesFiltersBuilder.js +88 -0
  87. package/esm/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.d.ts +9 -0
  88. package/esm/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.js +29 -0
  89. package/esm/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.d.ts +7 -0
  90. package/esm/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.js +32 -0
  91. package/esm/components/AttributesFiltersBuilder/components/FilterSelector/styles.d.ts +2 -0
  92. package/esm/components/AttributesFiltersBuilder/components/FilterSelector/styles.js +7 -0
  93. package/esm/components/AttributesFiltersBuilder/components/RowActions/RowActions.d.ts +4 -0
  94. package/esm/components/AttributesFiltersBuilder/components/RowActions/RowActions.js +27 -0
  95. package/esm/components/AttributesFiltersBuilder/components/RowActions/styles.d.ts +1 -0
  96. package/esm/components/AttributesFiltersBuilder/components/RowActions/styles.js +20 -0
  97. package/esm/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.d.ts +4 -0
  98. package/esm/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.js +36 -0
  99. package/esm/components/AttributesFiltersBuilder/components/ValueEditor/styles.d.ts +1 -0
  100. package/esm/components/AttributesFiltersBuilder/components/ValueEditor/styles.js +22 -0
  101. package/esm/components/AttributesFiltersBuilder/helpers.d.ts +12 -0
  102. package/esm/components/AttributesFiltersBuilder/helpers.js +70 -0
  103. package/esm/components/AttributesFiltersBuilder/styles.d.ts +1 -0
  104. package/esm/components/AttributesFiltersBuilder/styles.js +18 -0
  105. package/esm/components/AttributesFiltersBuilder/types.d.ts +24 -0
  106. package/esm/components/AttributesFiltersBuilder/types.js +1 -0
  107. package/esm/components/AttributesFiltersButton/ActionButtons/ActionButtons.d.ts +8 -0
  108. package/esm/components/AttributesFiltersButton/ActionButtons/ActionButtons.js +13 -0
  109. package/esm/components/AttributesFiltersButton/ActionButtons/styles.d.ts +1 -0
  110. package/esm/components/AttributesFiltersButton/ActionButtons/styles.js +23 -0
  111. package/esm/components/AttributesFiltersButton/AttributesFiltersButton.d.ts +9 -0
  112. package/esm/components/AttributesFiltersButton/AttributesFiltersButton.js +58 -0
  113. package/esm/components/AttributesFiltersButton/styles.d.ts +1 -0
  114. package/esm/components/AttributesFiltersButton/styles.js +27 -0
  115. package/esm/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.d.ts +14 -0
  116. package/esm/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.js +22 -0
  117. package/esm/components/BasicAttributeSelector/AttributeTitle/styles.d.ts +2 -0
  118. package/esm/components/BasicAttributeSelector/AttributeTitle/styles.js +42 -0
  119. package/esm/components/BasicAttributeSelector/BasicAttributeSelector.d.ts +4 -0
  120. package/esm/components/BasicAttributeSelector/BasicAttributeSelector.js +75 -0
  121. package/esm/components/BasicAttributeSelector/helpers.d.ts +22 -0
  122. package/esm/components/BasicAttributeSelector/helpers.js +72 -0
  123. package/esm/components/BasicAttributeSelector/styles.d.ts +2 -0
  124. package/esm/components/BasicAttributeSelector/styles.js +12 -0
  125. package/esm/components/ConnectionEditor/ConnectionEditor.d.ts +12 -3
  126. package/esm/components/ConnectionEditor/ConnectionEditor.js +74 -7
  127. package/esm/components/ConnectionEditor/styles.d.ts +1 -0
  128. package/esm/components/ConnectionEditor/styles.js +9 -0
  129. package/esm/components/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.js +3 -2
  130. package/esm/components/Image/ImageActionsOverlay/styles.d.ts +1 -1
  131. package/esm/components/ImageDetailsView/MetaInfoForm/styles.d.ts +1 -1
  132. package/esm/components/QueryBuilderRow/QueryBuilderRow.d.ts +2 -2
  133. package/esm/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.d.ts +2 -2
  134. package/esm/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js +1 -1
  135. package/esm/components/SelectAttributesList/SelectAttributesList.d.ts +14 -0
  136. package/esm/components/SelectAttributesList/SelectAttributesList.js +51 -0
  137. package/esm/components/SelectAttributesList/styles.d.ts +1 -0
  138. package/esm/components/SelectAttributesList/styles.js +13 -0
  139. package/esm/components/SelectionPopup/SelectionPopup.d.ts +1 -1
  140. package/esm/components/SidePanel/SidePanelContentHeader/SidePanelContentHeader.d.ts +2 -2
  141. package/esm/components/activityLog/activities/SearchActivity.js +1 -1
  142. package/esm/components/attributes/editMode/EntitySelector/EntitySelector.d.ts +1 -1
  143. package/esm/components/attributes/editMode/EntitySelector/EntitySelector.js +13 -6
  144. package/esm/components/index.d.ts +4 -0
  145. package/esm/components/index.js +4 -0
  146. package/esm/components/workflow/hooks/useWorkflowAssignee.d.ts +1 -1
  147. package/esm/components/workflow/hooks/useWorkflowAssignee.js +1 -1
  148. package/esm/constants/prop-types.d.ts +1 -1
  149. package/esm/constants/prop-types.js +1 -1
  150. package/esm/hooks/index.d.ts +1 -0
  151. package/esm/hooks/index.js +1 -0
  152. package/esm/hooks/useEditableConnection.d.ts +10 -4
  153. package/esm/hooks/useEditableConnection.js +24 -3
  154. package/esm/hooks/useReadableSearchState.d.ts +2 -0
  155. package/esm/{components/activityLog/hooks → hooks}/useReadableSearchState.js +0 -0
  156. package/esm/icons/Duplicate.d.ts +3 -0
  157. package/esm/icons/Duplicate.js +23 -0
  158. package/esm/icons/index.d.ts +6 -3
  159. package/esm/icons/index.js +6 -3
  160. package/esm/types/index.d.ts +40 -0
  161. package/package.json +3 -3
  162. package/cjs/components/activityLog/hooks/useReadableSearchState.d.ts +0 -1
  163. package/esm/components/activityLog/hooks/useReadableSearchState.d.ts +0 -1
@@ -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,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var react_1 = __importDefault(require("react"));
7
+ var ui_i18n_1 = __importDefault(require("ui-i18n"));
8
+ var Button_1 = __importDefault(require("@material-ui/core/Button"));
9
+ var styles_1 = require("./styles");
10
+ var ActionButtons = function (_a) {
11
+ var onClear = _a.onClear, onCancel = _a.onCancel, onApply = _a.onApply;
12
+ var styles = styles_1.useStyles();
13
+ return (react_1.default.createElement("div", { className: styles.buttonsWrapper },
14
+ react_1.default.createElement(Button_1.default, { onClick: onClear, variant: "text", color: "default", className: styles.clearButon }, ui_i18n_1.default.text('Clear all')),
15
+ react_1.default.createElement(Button_1.default, { onClick: onCancel, variant: "text", color: "default", className: styles.cancelButton }, ui_i18n_1.default.text('Cancel')),
16
+ react_1.default.createElement(Button_1.default, { onClick: onApply, variant: "text", color: "primary", className: styles.applyButton }, ui_i18n_1.default.text('Apply'))));
17
+ };
18
+ exports.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,26 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.useStyles = void 0;
15
+ var styles_1 = require("@material-ui/core/styles");
16
+ var allButtonsStyle = {
17
+ alignSelf: 'center'
18
+ };
19
+ exports.useStyles = styles_1.makeStyles(function () { return ({
20
+ buttonsWrapper: {
21
+ display: 'flex'
22
+ },
23
+ applyButton: __assign(__assign({}, allButtonsStyle), { marginRight: '16px' }),
24
+ cancelButton: __assign(__assign({}, allButtonsStyle), { marginLeft: 'auto' }),
25
+ clearButon: __assign({}, allButtonsStyle)
26
+ }); });
@@ -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,82 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ var react_1 = __importStar(require("react"));
26
+ var ui_i18n_1 = __importDefault(require("ui-i18n"));
27
+ var Popover_1 = __importDefault(require("@material-ui/core/Popover"));
28
+ var Button_1 = __importDefault(require("@material-ui/core/Button"));
29
+ var FilterList_1 = __importDefault(require("@material-ui/icons/FilterList"));
30
+ var Typography_1 = __importDefault(require("@material-ui/core/Typography"));
31
+ var Divider_1 = __importDefault(require("@material-ui/core/Divider"));
32
+ var AttributesFiltersBuilder_1 = __importDefault(require("../AttributesFiltersBuilder/AttributesFiltersBuilder"));
33
+ var ActionButtons_1 = __importDefault(require("./ActionButtons/ActionButtons"));
34
+ var styles_1 = require("./styles");
35
+ var AttributesFiltersButton = function (_a) {
36
+ var filtersProp = _a.filters, attributeTypes = _a.attributeTypes, onChange = _a.onChange;
37
+ var styles = styles_1.useStyles();
38
+ var buttonRef = react_1.useRef();
39
+ var _b = react_1.useState(false), isOpen = _b[0], setIsOpen = _b[1];
40
+ var _c = react_1.useState([]), filters = _c[0], setFilters = _c[1];
41
+ var isFiltersApplied = filtersProp.some(function (_a) {
42
+ var fieldName = _a.fieldName, filter = _a.filter, values = _a.values;
43
+ return fieldName && filter && values.length;
44
+ });
45
+ var buttonColor = isFiltersApplied ? 'primary' : 'inherit';
46
+ var togglePopup = function () { return setIsOpen(function (open) { return !open; }); };
47
+ react_1.useEffect(function () {
48
+ if (isOpen) {
49
+ setFilters(filtersProp);
50
+ }
51
+ }, [filtersProp, isOpen]);
52
+ var applyButtonHandler = react_1.useCallback(function () {
53
+ onChange(filters);
54
+ togglePopup();
55
+ }, [filters, onChange]);
56
+ var cancelButtonHandler = react_1.useCallback(function () {
57
+ togglePopup();
58
+ }, []);
59
+ var clearAllButtonHandler = react_1.useCallback(function () {
60
+ setFilters([]);
61
+ }, []);
62
+ return (react_1.default.createElement(react_1.default.Fragment, null,
63
+ react_1.default.createElement(Button_1.default, { ref: buttonRef, color: buttonColor, classes: {
64
+ root: styles.triggerButton,
65
+ textPrimary: styles.changedFiltersIndicator
66
+ }, onClick: togglePopup },
67
+ react_1.default.createElement(FilterList_1.default, { color: buttonColor })),
68
+ react_1.default.createElement(Popover_1.default, { open: isOpen, classes: { paper: styles.popupContent }, anchorEl: buttonRef.current, onClose: togglePopup, anchorOrigin: {
69
+ vertical: 'bottom',
70
+ horizontal: 'right'
71
+ }, transformOrigin: {
72
+ vertical: 'top',
73
+ horizontal: 'left'
74
+ } },
75
+ react_1.default.createElement(react_1.default.Fragment, null,
76
+ react_1.default.createElement(Typography_1.default, { variant: "h6" }, ui_i18n_1.default.text('Filter')),
77
+ react_1.default.createElement("div", { className: styles.filtersBuilderWrapper },
78
+ react_1.default.createElement(AttributesFiltersBuilder_1.default, { attributeTypes: attributeTypes, filters: filters, onChange: setFilters })),
79
+ react_1.default.createElement(Divider_1.default, { className: styles.divider }),
80
+ react_1.default.createElement(ActionButtons_1.default, { onApply: applyButtonHandler, onCancel: cancelButtonHandler, onClear: clearAllButtonHandler })))));
81
+ };
82
+ exports.default = react_1.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,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useStyles = void 0;
4
+ var styles_1 = require("@material-ui/core/styles");
5
+ exports.useStyles = styles_1.makeStyles(function (theme) { return ({
6
+ triggerButton: {
7
+ minWidth: 0,
8
+ color: 'rgba(0,0,0,0.54)',
9
+ width: '40px',
10
+ marginLeft: 'auto',
11
+ marginRight: '12px'
12
+ },
13
+ filtersBuilderWrapper: {
14
+ marginTop: '20px'
15
+ },
16
+ popupContent: {
17
+ paddingLeft: '16px',
18
+ paddingTop: '20px',
19
+ paddingBottom: '6px',
20
+ width: '770px'
21
+ },
22
+ divider: {
23
+ marginBottom: '14px',
24
+ marginLeft: '-16px',
25
+ background: 'rgba(0, 0, 0, 0.121569)'
26
+ },
27
+ changedFiltersIndicator: {
28
+ backgroundColor: styles_1.fade(theme.palette.primary.main, 0.12)
29
+ }
30
+ }); });
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import { AttributeSelectorItem } from '../../../types';
3
+ declare type Value = {
4
+ fieldName: string;
5
+ title: string;
6
+ };
7
+ declare type Props = {
8
+ value: AttributeSelectorItem;
9
+ disabled: boolean;
10
+ getLabel: (value: Value) => string;
11
+ onSelectAttributeClick: (event: any) => void;
12
+ };
13
+ declare const AttributeTitle: ({ value, getLabel, onSelectAttributeClick, disabled }: Props) => JSX.Element;
14
+ export default AttributeTitle;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var react_1 = __importDefault(require("react"));
7
+ var ui_i18n_1 = __importDefault(require("ui-i18n"));
8
+ var classnames_1 = __importDefault(require("classnames"));
9
+ var ramda_1 = require("ramda");
10
+ var icons_1 = require("@material-ui/icons");
11
+ var ExpandedValueTooltip_1 = __importDefault(require("../../ExpandedValueTooltip/ExpandedValueTooltip"));
12
+ var SmallIconButton_1 = __importDefault(require("../../SmallIconButton/SmallIconButton"));
13
+ var styles_1 = __importDefault(require("./styles"));
14
+ var defaultGetLabel = ramda_1.either(ramda_1.prop('title'), ramda_1.prop('fieldName'));
15
+ var AttributeTitle = function (_a) {
16
+ var _b, _c, _d;
17
+ var value = _a.value, _e = _a.getLabel, getLabel = _e === void 0 ? defaultGetLabel : _e, onSelectAttributeClick = _a.onSelectAttributeClick, _f = _a.disabled, disabled = _f === void 0 ? false : _f;
18
+ var styles = styles_1.default();
19
+ var label = value && getLabel(value);
20
+ return (react_1.default.createElement("div", { onClick: disabled ? undefined : onSelectAttributeClick, className: classnames_1.default(styles.attribute, (_b = {},
21
+ _b[styles.attributeWithValue] = !!label,
22
+ _b), (_c = {}, _c[styles.disabled] = disabled, _c)) },
23
+ react_1.default.createElement(ExpandedValueTooltip_1.default, { value: label },
24
+ react_1.default.createElement("div", { className: classnames_1.default(styles.name, (_d = {}, _d[styles.disabled] = disabled, _d)) }, label || react_1.default.createElement("span", { className: styles.noSelect }, ui_i18n_1.default.text('Select attribute')))),
25
+ react_1.default.createElement(SmallIconButton_1.default, { size: 'M', icon: icons_1.ArrowDropDown, disabled: disabled })));
26
+ };
27
+ exports.default = AttributeTitle;
@@ -0,0 +1,2 @@
1
+ declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"attribute" | "name" | "disabled" | "attributeWithValue" | "noSelect">;
2
+ export default useStyles;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var styles_1 = require("@material-ui/core/styles");
4
+ var useStyles = styles_1.makeStyles({
5
+ attribute: {
6
+ cursor: 'pointer',
7
+ lineHeight: '16px',
8
+ flexBasis: '100%',
9
+ display: 'flex',
10
+ alignItems: 'center',
11
+ padding: '0 10px 0 16px',
12
+ width: 'calc(100% - 32px)',
13
+ '&$attributeWithValue': {
14
+ borderBottom: '1px solid rgba(0,0,0,0.38)'
15
+ },
16
+ '&$disabled': {
17
+ cursor: 'default'
18
+ }
19
+ },
20
+ disabled: {},
21
+ attributeWithValue: {},
22
+ noSelect: {},
23
+ name: {
24
+ fontSize: '14px',
25
+ color: 'rgba(0,0,0,0.87)',
26
+ overflow: 'hidden',
27
+ whiteSpace: 'nowrap',
28
+ textOverflow: 'ellipsis',
29
+ direction: 'rtl',
30
+ textAlign: 'left',
31
+ flex: '1 0',
32
+ width: '0',
33
+ '& $noSelect': {
34
+ color: 'rgba(0,0,0,0.38)'
35
+ },
36
+ '&$disabled': {
37
+ color: 'rgba(0,0,0,0.26)',
38
+ '& $noSelect': {
39
+ color: 'rgba(0,0,0,0.26)'
40
+ }
41
+ }
42
+ }
43
+ });
44
+ exports.default = useStyles;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { BasicAttributeSelectorProps } from '../../types';
3
+ declare const _default: React.MemoExoticComponent<({ className, itemsGroups, value, getLabel, onSelect, onRestoreFocus, onOpenPopup, disableRestoreFocus, disableEnforceFocus, single, ungroup, disabled, hideCheckBox }: BasicAttributeSelectorProps) => JSX.Element>;
4
+ export default _default;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ var react_1 = __importStar(require("react"));
26
+ var ui_i18n_1 = __importDefault(require("ui-i18n"));
27
+ var classnames_1 = __importDefault(require("classnames"));
28
+ var ramda_1 = require("ramda");
29
+ var SelectionPopup_1 = __importDefault(require("../SelectionPopup/SelectionPopup"));
30
+ var helpers_1 = require("../SelectionPopup/helpers");
31
+ var AttributeTitle_1 = __importDefault(require("./AttributeTitle/AttributeTitle"));
32
+ var helpers_2 = require("./helpers");
33
+ var SelectAttributesList_1 = __importDefault(require("../SelectAttributesList/SelectAttributesList"));
34
+ var helpers_3 = require("../VirtualGroupedList/helpers");
35
+ var styles_1 = __importDefault(require("./styles"));
36
+ var ATTRIBUTES_LIST_HEIGHT = 400;
37
+ var ATTRIBUTES_LIST_WIDTH = 308;
38
+ var ATTRIBUTES_POPUP_HEIGHT = 507;
39
+ var BasicAttributeSelector = function (_a) {
40
+ var className = _a.className, itemsGroups = _a.itemsGroups, value = _a.value, getLabel = _a.getLabel, onSelect = _a.onSelect, _b = _a.onRestoreFocus, onRestoreFocus = _b === void 0 ? ramda_1.identity : _b, _c = _a.onOpenPopup, onOpenPopup = _c === void 0 ? ramda_1.identity : _c, _d = _a.disableRestoreFocus, disableRestoreFocus = _d === void 0 ? false : _d, _e = _a.disableEnforceFocus, disableEnforceFocus = _e === void 0 ? false : _e, _f = _a.single, single = _f === void 0 ? false : _f, _g = _a.ungroup, ungroup = _g === void 0 ? false : _g, _h = _a.disabled, disabled = _h === void 0 ? false : _h, _j = _a.hideCheckBox, hideCheckBox = _j === void 0 ? false : _j;
41
+ var styles = styles_1.default();
42
+ var _k = react_1.useState(null), selectAnchor = _k[0], setSelectAnchor = _k[1];
43
+ var openPopup = function (event) {
44
+ onOpenPopup();
45
+ setSelectAnchor(event.currentTarget);
46
+ };
47
+ var closePopup = react_1.useCallback(function () { return setSelectAnchor(null); }, []);
48
+ var isPopupOpen = !!selectAnchor;
49
+ var _l = react_1.useState(''), filterText = _l[0], setFilterText = _l[1];
50
+ var clearFilterText = react_1.useCallback(function () { return setFilterText(''); }, []);
51
+ var _m = react_1.useState([]), selectedAttributes = _m[0], setSelectedAttributes = _m[1];
52
+ var clearSelectedAttributes = react_1.useCallback(function () { return setSelectedAttributes([]); }, []);
53
+ var filteredItemsGroups = react_1.useMemo(function () { return helpers_2.prepareGroupsForSelectAttributeList(filterText, itemsGroups); }, [
54
+ itemsGroups,
55
+ filterText
56
+ ]);
57
+ var items = react_1.useMemo(function () {
58
+ return ramda_1.pipe(ramda_1.when(ramda_1.always(ungroup), ramda_1.chain(ramda_1.pipe(ramda_1.prop('items'), ramda_1.flatten, ramda_1.map(ramda_1.pick(['item', 'level']))))), helpers_3.flattenGroupedItemsData)(filteredItemsGroups);
59
+ }, [ungroup, filteredItemsGroups]);
60
+ var containerWidth = react_1.useMemo(function () { return Math.max(helpers_2.getContainerWidth(filteredItemsGroups), ATTRIBUTES_LIST_WIDTH); }, [
61
+ filteredItemsGroups
62
+ ]);
63
+ var handleOnClose = ramda_1.pipe(ramda_1.tap(ramda_1.pipe(clearSelectedAttributes, clearFilterText, closePopup)), onRestoreFocus);
64
+ var searchInputRef = react_1.useRef();
65
+ var onListItemClick = react_1.useCallback(function (attribute, checked) {
66
+ onSelect({
67
+ checked: checked,
68
+ attribute: attribute,
69
+ index: checked ? selectedAttributes.length : helpers_2.getAttributeIndex(selectedAttributes, attribute),
70
+ selectedAttributes: selectedAttributes
71
+ });
72
+ if (single) {
73
+ setSelectedAttributes(checked ? [attribute] : []);
74
+ handleOnClose({});
75
+ }
76
+ else {
77
+ setSelectedAttributes(helpers_2.filterSelectedAttributes({ selectedAttributes: selectedAttributes, attribute: attribute, checked: checked }));
78
+ if (searchInputRef.current) {
79
+ searchInputRef.current.focus();
80
+ }
81
+ }
82
+ }, [selectedAttributes, onSelect, single, handleOnClose, searchInputRef]);
83
+ var handleSearchOnEnter = react_1.useCallback(helpers_2.getOnEnterHandler({ onListItemClick: onListItemClick, selectedAttributes: selectedAttributes }), [
84
+ onListItemClick,
85
+ selectedAttributes
86
+ ]);
87
+ var _o = helpers_1.useKeyboardNavigation({
88
+ items: items,
89
+ open: isPopupOpen,
90
+ onSelectFocusedItem: handleSearchOnEnter,
91
+ selectedItems: selectedAttributes,
92
+ onClose: handleOnClose
93
+ }), focusIndex = _o.focusIndex, handleKeyDown = _o.handleKeyDown;
94
+ return (react_1.default.createElement("div", { className: classnames_1.default(styles.selector, className), "data-reltio-id": "attribute-selector" },
95
+ react_1.default.createElement(AttributeTitle_1.default, { value: value, getLabel: getLabel, onSelectAttributeClick: openPopup, disabled: disabled }),
96
+ react_1.default.createElement(SelectionPopup_1.default, { open: isPopupOpen, anchorEl: selectAnchor, onClose: handleOnClose, onSearch: setFilterText, title: ui_i18n_1.default.text('Select attribute'), containerWidth: containerWidth, containerHeight: ATTRIBUTES_POPUP_HEIGHT, searchInputOnKeyDown: handleKeyDown, anchorOrigin: { horizontal: 'right', vertical: 'bottom' }, searchInputRef: searchInputRef, disableRestoreFocus: disableRestoreFocus, disableEnforceFocus: disableEnforceFocus },
97
+ react_1.default.createElement(SelectAttributesList_1.default, { items: items, onItemClick: onListItemClick, selectedAttributes: selectedAttributes, width: containerWidth, height: ATTRIBUTES_LIST_HEIGHT, focusIndex: focusIndex, hideCheckBox: hideCheckBox }))));
98
+ };
99
+ exports.default = react_1.memo(BasicAttributeSelector);
@@ -0,0 +1,22 @@
1
+ import { AttributeSelectorItem, AttributeSelectorItemsGroup } from '../../types';
2
+ export declare const isEqualAttributes: any;
3
+ export declare const checkAttributeIncludes: (attribute: AttributeSelectorItem, selectedAttributes: AttributeSelectorItem[]) => boolean;
4
+ export declare const filterItemsTree: (item: AttributeSelectorItem, filterText: string) => boolean;
5
+ export declare const filterSelectedAttributes: ({ attribute, selectedAttributes, checked }: {
6
+ attribute: AttributeSelectorItem;
7
+ selectedAttributes: AttributeSelectorItem[];
8
+ checked: boolean;
9
+ }) => AttributeSelectorItem[];
10
+ export declare const getAttributeIndex: (selectedAttributes: AttributeSelectorItem[], attribute: AttributeSelectorItem) => number;
11
+ export declare const getContainerWidth: (items: any) => any;
12
+ export declare const getOnEnterHandler: ({ onListItemClick, selectedAttributes }: {
13
+ selectedAttributes: AttributeSelectorItem[];
14
+ onListItemClick: (attribute: AttributeSelectorItem, checked: boolean) => void;
15
+ }) => ({ item, groupData }: {
16
+ item: any;
17
+ groupData: any;
18
+ }) => void;
19
+ export declare const prepareGroupsForSelectAttributeList: (filterText: string, groups: AttributeSelectorItemsGroup[]) => {
20
+ item: AttributeSelectorItemsGroup[];
21
+ items: AttributeSelectorItem[];
22
+ };
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.prepareGroupsForSelectAttributeList = exports.getOnEnterHandler = exports.getContainerWidth = exports.getAttributeIndex = exports.filterSelectedAttributes = exports.filterItemsTree = exports.checkAttributeIncludes = exports.isEqualAttributes = void 0;
15
+ var ramda_1 = require("ramda");
16
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
17
+ exports.isEqualAttributes = ramda_1.eqBy(ramda_1.pick(['fieldName', 'uri', 'entityTypeUri']));
18
+ var checkAttributeIncludes = function (attribute, selectedAttributes) {
19
+ return selectedAttributes && !!selectedAttributes.find(exports.isEqualAttributes(attribute));
20
+ };
21
+ exports.checkAttributeIncludes = checkAttributeIncludes;
22
+ var filterItem = function (item, filterText) {
23
+ return item.title.toLowerCase().includes(filterText.toLowerCase());
24
+ };
25
+ var filterItemsTree = function (item, filterText) {
26
+ return filterItem(item, filterText) || (item.children || []).some(function (item) { return exports.filterItemsTree(item, filterText); });
27
+ };
28
+ exports.filterItemsTree = filterItemsTree;
29
+ var filterSelectedAttributes = function (_a) {
30
+ var attribute = _a.attribute, selectedAttributes = _a.selectedAttributes, checked = _a.checked;
31
+ return checked
32
+ ? selectedAttributes.concat(attribute)
33
+ : selectedAttributes.filter(function (selectedAttribute) { return !exports.isEqualAttributes(attribute, selectedAttribute); });
34
+ };
35
+ exports.filterSelectedAttributes = filterSelectedAttributes;
36
+ var getAttributeIndex = function (selectedAttributes, attribute) {
37
+ return selectedAttributes.findIndex(exports.isEqualAttributes(attribute));
38
+ };
39
+ exports.getAttributeIndex = getAttributeIndex;
40
+ exports.getContainerWidth = mdm_sdk_1.getMaxItemWidth('title');
41
+ var getOnEnterHandler = function (_a) {
42
+ var onListItemClick = _a.onListItemClick, selectedAttributes = _a.selectedAttributes;
43
+ return function (_a) {
44
+ var item = _a.item, groupData = _a.groupData;
45
+ var checked = exports.checkAttributeIncludes(item, selectedAttributes);
46
+ onListItemClick(__assign(__assign({}, item), { groupName: groupData.groupName }), !checked);
47
+ };
48
+ };
49
+ exports.getOnEnterHandler = getOnEnterHandler;
50
+ var getAttributeGroupData = function (item, groupId, groupName, filterText, level, noFilter) {
51
+ if (level === void 0) { level = 0; }
52
+ if (noFilter === void 0) { noFilter = false; }
53
+ var isItemFiltered = filterItem(item, filterText);
54
+ return [
55
+ {
56
+ item: filterText ? __assign(__assign({}, item), { filterText: filterText }) : item,
57
+ level: level,
58
+ groupId: groupId,
59
+ groupName: groupName
60
+ }
61
+ ]
62
+ .concat(item.children
63
+ ? item.children
64
+ .filter(function (subItem) { return noFilter || isItemFiltered || exports.filterItemsTree(subItem, filterText); })
65
+ .flatMap(function (subItem) {
66
+ return getAttributeGroupData(subItem, groupId, groupName, filterText, level + 1, noFilter || isItemFiltered);
67
+ })
68
+ : [])
69
+ .flat();
70
+ };
71
+ exports.prepareGroupsForSelectAttributeList = ramda_1.curry(function (filterText, groups) {
72
+ return groups
73
+ .map(function (group) { return ({
74
+ item: group,
75
+ items: group.attributes
76
+ .filter(function (attribute) { return exports.filterItemsTree(attribute, filterText); })
77
+ .map(function (item) { return getAttributeGroupData(item, group.id, group.title, filterText); })
78
+ }); })
79
+ .filter(function (group) { return group.items.length; });
80
+ });
@@ -0,0 +1,2 @@
1
+ declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"selector">;
2
+ export default useStyles;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var styles_1 = require("@material-ui/core/styles");
4
+ var useStyles = styles_1.makeStyles({
5
+ selector: {
6
+ minWidth: '200px',
7
+ alignItems: 'stretch',
8
+ background: 'rgba(0,0,0, 0.0267)',
9
+ boxSizing: 'border-box',
10
+ borderRadius: '4px',
11
+ display: 'flex'
12
+ }
13
+ });
14
+ exports.default = useStyles;
@@ -1,11 +1,20 @@
1
1
  /// <reference types="react" />
2
- import { EditingConnection, AttributeItem } from '@reltio/mdm-sdk';
2
+ import { AttributeItem, EditingConnection, Entity, TRelationType } from '@reltio/mdm-sdk';
3
3
  declare type Props = {
4
4
  connection: EditingConnection;
5
5
  showEmptyEditors?: boolean;
6
6
  onChangeAttribute: (attribute: AttributeItem) => void;
7
7
  onAddAttributes: (attributes: AttributeItem[]) => void;
8
- onRemoveAttribute: (attrbutes: AttributeItem) => void;
8
+ onRemoveAttribute: (attributes: AttributeItem) => void;
9
+ onChangeRelationType?: (value: {
10
+ type: string;
11
+ direction: string;
12
+ }) => void;
13
+ onChangeEntity?: (entity: Entity) => void;
14
+ relatedEntity?: Entity;
15
+ inRelationTypes?: TRelationType[];
16
+ outRelationTypes?: TRelationType[];
17
+ entityErrorMessage?: string;
9
18
  };
10
- export declare const ConnectionEditor: ({ connection, onChangeAttribute, onRemoveAttribute, onAddAttributes, showEmptyEditors }: Props) => JSX.Element;
19
+ export declare const ConnectionEditor: ({ connection, relatedEntity, inRelationTypes, outRelationTypes, showEmptyEditors, entityErrorMessage, onChangeAttribute, onRemoveAttribute, onAddAttributes, onChangeRelationType, onChangeEntity }: Props) => JSX.Element;
11
20
  export {};
@@ -34,21 +34,88 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
34
34
  };
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.ConnectionEditor = void 0;
37
+ var styles_1 = require("./styles");
38
+ var hooks_1 = require("../../hooks");
37
39
  var react_1 = __importStar(require("react"));
38
40
  var react_redux_1 = require("react-redux");
39
41
  var mdm_module_1 = __importDefault(require("@reltio/mdm-module"));
40
42
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
41
43
  var AttributesList_1 = __importDefault(require("../attributes/editMode/AttributesList"));
44
+ var classnames_1 = __importDefault(require("classnames"));
45
+ var ramda_1 = require("ramda");
46
+ var ConnectionRelationTypeSelector_1 = __importDefault(require("../ConnectionRelationTypeSelector/ConnectionRelationTypeSelector"));
47
+ var ErrorWrapper_1 = __importDefault(require("../ErrorWrapper/ErrorWrapper"));
48
+ var EntitySelector_1 = __importDefault(require("../attributes/editMode/EntitySelector/EntitySelector"));
42
49
  var ConnectionEditor = function (_a) {
43
- var connection = _a.connection, onChangeAttribute = _a.onChangeAttribute, onRemoveAttribute = _a.onRemoveAttribute, onAddAttributes = _a.onAddAttributes, showEmptyEditors = _a.showEmptyEditors;
44
- var relation = connection.relation;
45
- var attributes = relation.attributes, relationUri = relation.uri, _b = relation.type, relationTypeUri = _b === void 0 ? '' : _b;
50
+ var _b;
51
+ var connection = _a.connection, relatedEntity = _a.relatedEntity, _c = _a.inRelationTypes, inRelationTypes = _c === void 0 ? [] : _c, _d = _a.outRelationTypes, outRelationTypes = _d === void 0 ? [] : _d, showEmptyEditors = _a.showEmptyEditors, entityErrorMessage = _a.entityErrorMessage, onChangeAttribute = _a.onChangeAttribute, onRemoveAttribute = _a.onRemoveAttribute, onAddAttributes = _a.onAddAttributes, onChangeRelationType = _a.onChangeRelationType, onChangeEntity = _a.onChangeEntity;
52
+ var styles = styles_1.useStyles();
53
+ var relation = connection.relation, entity = connection.entity;
54
+ var _e = relation || {}, attributes = _e.attributes, relationUri = _e.uri, _f = _e.type, relationTypeUri = _f === void 0 ? '' : _f, direction = _e.direction;
55
+ var isRelationTypeSelected = Boolean(relationTypeUri);
46
56
  var metadata = react_redux_1.useSelector(mdm_module_1.default.selectors.getMetadata);
47
- var attributeListEntity = react_1.useMemo(function () { return (__assign({ attributes: attributes }, mdm_sdk_1.getActivenessAttributes(relation))); }, [relation, attributes]);
57
+ var attributeListEntity = react_1.useMemo(function () {
58
+ return relation && __assign({ attributes: attributes }, mdm_sdk_1.getActivenessAttributes(relation));
59
+ }, [relation, attributes]);
48
60
  var relationAttrTypes = react_1.useMemo(function () { return mdm_sdk_1.getRelationAttributesList(metadata, relationTypeUri); }, [
49
61
  relationTypeUri,
50
62
  metadata
51
63
  ]);
52
- return (react_1.default.createElement(AttributesList_1.default, { attrTypes: relationAttrTypes, entity: attributeListEntity, showEmptyEditors: showEmptyEditors, mode: mdm_sdk_1.ModeTypes.EDITING, parentUri: relationUri, onAddAttributes: onAddAttributes, onChangeAttribute: onChangeAttribute, onDeleteAttribute: onRemoveAttribute }));
64
+ var availableEntityTypeUris = react_1.useMemo(function () {
65
+ return isRelationTypeSelected
66
+ ? mdm_sdk_1.getSuitableEntityTypeUrisForRelationTypes(direction === mdm_sdk_1.Directions.OUT, metadata, [
67
+ mdm_sdk_1.getRelationType(metadata, relationTypeUri)
68
+ ])
69
+ : ramda_1.uniq(mdm_sdk_1.getSuitableEntityTypeUrisForRelationTypes(true, metadata, outRelationTypes).concat(mdm_sdk_1.getSuitableEntityTypeUrisForRelationTypes(false, metadata, inRelationTypes)));
70
+ }, [isRelationTypeSelected, relationTypeUri, metadata, inRelationTypes, outRelationTypes]);
71
+ var globalSearchRequestOptions = react_redux_1.useSelector(function (state) {
72
+ return mdm_module_1.default.selectors.getGlobalSearchRequestOptions(state, ['ovOnly']);
73
+ });
74
+ var selectorCompatibleRelation = react_1.useMemo(function () {
75
+ return relation && {
76
+ relationType: relation.type,
77
+ direction: relation.direction
78
+ };
79
+ }, [relation]);
80
+ var selectorCompatibleEntity = react_1.useMemo(function () {
81
+ return entity && {
82
+ entityUri: entity.uri,
83
+ entityType: entity.type,
84
+ entityLabel: mdm_sdk_1.getLabel(entity.label)
85
+ };
86
+ }, [entity]);
87
+ var availableInRelationTypes = react_1.useMemo(function () {
88
+ return entity && entity.uri
89
+ ? inRelationTypes.filter(mdm_sdk_1.isAvailableRelationBetweenEntities(false, entity, relatedEntity, metadata))
90
+ : inRelationTypes;
91
+ }, [entity, inRelationTypes, relatedEntity, metadata]);
92
+ var availableOutRelationTypes = react_1.useMemo(function () {
93
+ return entity && entity.uri
94
+ ? outRelationTypes.filter(mdm_sdk_1.isAvailableRelationBetweenEntities(true, entity, relatedEntity, metadata))
95
+ : outRelationTypes;
96
+ }, [entity, outRelationTypes, relatedEntity, metadata]);
97
+ react_1.useEffect(function () {
98
+ // autoselecting relation type on mount
99
+ var _a = mdm_sdk_1.getDefaultRelationTypeObject(inRelationTypes, outRelationTypes) || {}, type = _a.type, direction = _a.direction;
100
+ if (!relationTypeUri && type && onChangeRelationType) {
101
+ onChangeRelationType({ type: type.uri, direction: direction });
102
+ }
103
+ }, [relationTypeUri, inRelationTypes, outRelationTypes, onChangeRelationType]);
104
+ hooks_1.useDidUpdateEffect(function () {
105
+ // autoselecting relation type on entity change
106
+ var _a = mdm_sdk_1.getDefaultRelationTypeObject(availableInRelationTypes, availableOutRelationTypes) || {}, type = _a.type, direction = _a.direction;
107
+ if (!relationTypeUri && type) {
108
+ onChangeRelationType({ type: type.uri, direction: direction });
109
+ }
110
+ }, [relationTypeUri, entity, availableInRelationTypes, availableOutRelationTypes, onChangeEntity]);
111
+ var handleChangeRelationType = react_1.useCallback(function (_a) {
112
+ var type = _a.type, direction = _a.direction;
113
+ onChangeRelationType({ type: type.uri, direction: direction });
114
+ }, [onChangeRelationType]);
115
+ return (react_1.default.createElement(react_1.default.Fragment, null,
116
+ onChangeRelationType && (react_1.default.createElement(ConnectionRelationTypeSelector_1.default, { className: styles.item, relation: selectorCompatibleRelation, metadata: metadata, inRelationTypes: inRelationTypes, outRelationTypes: outRelationTypes, onChange: handleChangeRelationType })),
117
+ onChangeEntity && (react_1.default.createElement(ErrorWrapper_1.default, { errorMessage: entityErrorMessage, className: styles.item },
118
+ react_1.default.createElement(EntitySelector_1.default, { key: relationTypeUri, className: classnames_1.default((_b = {}, _b[styles.dense] = entityErrorMessage, _b)), entity: selectorCompatibleEntity || {}, entityTypesUris: availableEntityTypeUris, max: 20, globalSearchRequestOptions: globalSearchRequestOptions, mode: mdm_sdk_1.ModeTypes.EDITING, onChange: onChangeEntity, onCreate: undefined, metadata: metadata, attributeTypesSelectionStrategy: undefined }))),
119
+ relationTypeUri && (react_1.default.createElement(AttributesList_1.default, { attrTypes: relationAttrTypes, entity: attributeListEntity, showEmptyEditors: showEmptyEditors, mode: mdm_sdk_1.ModeTypes.EDITING, parentUri: relationUri, onAddAttributes: onAddAttributes, onChangeAttribute: onChangeAttribute, onDeleteAttribute: onRemoveAttribute }))));
53
120
  };
54
121
  exports.ConnectionEditor = ConnectionEditor;
@@ -0,0 +1 @@
1
+ export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"item" | "dense">;