@reltio/components 1.4.1849 → 1.4.1851

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 (81) hide show
  1. package/cjs/EditModeAttributesList/EditModeAttributesList.js +6 -3
  2. package/cjs/EditModeAttributesView/EditModeAttributesView.test.js +218 -24
  3. package/cjs/ReadOnlyAttributesList/ReadOnlyAttributesList.js +4 -1
  4. package/cjs/ReadOnlyAttributesView/ReadOnlyAttributesView.js +1 -9
  5. package/cjs/ReadOnlyAttributesView/ReadOnlyAttributesView.test.js +113 -104
  6. package/cjs/SaveSegmentDialog/SaveSegmentDialog.d.ts +8 -0
  7. package/cjs/SaveSegmentDialog/SaveSegmentDialog.js +129 -0
  8. package/cjs/SaveSegmentDialog/SaveSegmentDialog.test.d.ts +1 -0
  9. package/cjs/SaveSegmentDialog/SaveSegmentDialog.test.js +214 -0
  10. package/cjs/SaveSegmentDialog/index.d.ts +1 -0
  11. package/cjs/SaveSegmentDialog/index.js +5 -0
  12. package/cjs/SaveSegmentDialog/styles.d.ts +1 -0
  13. package/cjs/SaveSegmentDialog/styles.js +15 -0
  14. package/cjs/contexts/MdmModuleContext/context.d.ts +6 -0
  15. package/cjs/contexts/MdmModuleContext/hooks.d.ts +4 -1
  16. package/cjs/contexts/MdmModuleContext/hooks.js +5 -1
  17. package/cjs/contexts/MdmModuleContext/index.d.ts +1 -1
  18. package/cjs/contexts/MdmModuleContext/index.js +2 -1
  19. package/cjs/hooks/index.d.ts +1 -0
  20. package/cjs/hooks/index.js +3 -1
  21. package/cjs/hooks/useHiddenAttributes/helpers.d.ts +7 -0
  22. package/cjs/hooks/useHiddenAttributes/helpers.js +22 -0
  23. package/cjs/hooks/useHiddenAttributes/useChangedAttributes.d.ts +2 -0
  24. package/cjs/hooks/useHiddenAttributes/useChangedAttributes.js +37 -0
  25. package/cjs/hooks/useHiddenAttributes/useHiddenAttributes.d.ts +1 -0
  26. package/cjs/hooks/useHiddenAttributes/useHiddenAttributes.js +61 -0
  27. package/cjs/hooks/useHiddenAttributes/useHiddenAttributes.test.d.ts +1 -0
  28. package/cjs/hooks/useHiddenAttributes/useHiddenAttributes.test.js +370 -0
  29. package/cjs/hooks/useSavedSearchesRequest/index.d.ts +1 -0
  30. package/cjs/hooks/useSavedSearchesRequest/index.js +5 -0
  31. package/cjs/hooks/useSavedSearchesRequest/requests.d.ts +6 -0
  32. package/cjs/hooks/useSavedSearchesRequest/requests.js +72 -0
  33. package/cjs/hooks/useSavedSearchesRequest/useSavedSearchesRequest.d.ts +76 -0
  34. package/cjs/hooks/useSavedSearchesRequest/useSavedSearchesRequest.js +255 -0
  35. package/cjs/hooks/useSavedSearchesRequest/useSavedSearchesRequest.test.d.ts +1 -0
  36. package/cjs/hooks/useSavedSearchesRequest/useSavedSearchesRequest.test.js +743 -0
  37. package/cjs/index.d.ts +1 -0
  38. package/cjs/index.js +3 -1
  39. package/esm/EditModeAttributesList/EditModeAttributesList.js +6 -3
  40. package/esm/EditModeAttributesView/EditModeAttributesView.test.js +219 -25
  41. package/esm/ReadOnlyAttributesList/ReadOnlyAttributesList.js +4 -1
  42. package/esm/ReadOnlyAttributesView/ReadOnlyAttributesView.js +2 -10
  43. package/esm/ReadOnlyAttributesView/ReadOnlyAttributesView.test.js +114 -105
  44. package/esm/SaveSegmentDialog/SaveSegmentDialog.d.ts +8 -0
  45. package/esm/SaveSegmentDialog/SaveSegmentDialog.js +99 -0
  46. package/esm/SaveSegmentDialog/SaveSegmentDialog.test.d.ts +1 -0
  47. package/esm/SaveSegmentDialog/SaveSegmentDialog.test.js +209 -0
  48. package/esm/SaveSegmentDialog/index.d.ts +1 -0
  49. package/esm/SaveSegmentDialog/index.js +1 -0
  50. package/esm/SaveSegmentDialog/styles.d.ts +1 -0
  51. package/esm/SaveSegmentDialog/styles.js +12 -0
  52. package/esm/contexts/MdmModuleContext/context.d.ts +6 -0
  53. package/esm/contexts/MdmModuleContext/hooks.d.ts +4 -1
  54. package/esm/contexts/MdmModuleContext/hooks.js +3 -0
  55. package/esm/contexts/MdmModuleContext/index.d.ts +1 -1
  56. package/esm/contexts/MdmModuleContext/index.js +1 -1
  57. package/esm/hooks/index.d.ts +1 -0
  58. package/esm/hooks/index.js +1 -0
  59. package/esm/hooks/useHiddenAttributes/helpers.d.ts +7 -0
  60. package/esm/hooks/useHiddenAttributes/helpers.js +17 -0
  61. package/esm/hooks/useHiddenAttributes/useChangedAttributes.d.ts +2 -0
  62. package/esm/hooks/useHiddenAttributes/useChangedAttributes.js +33 -0
  63. package/esm/hooks/useHiddenAttributes/useHiddenAttributes.d.ts +1 -0
  64. package/esm/hooks/useHiddenAttributes/useHiddenAttributes.js +57 -0
  65. package/esm/hooks/useHiddenAttributes/useHiddenAttributes.test.d.ts +1 -0
  66. package/esm/hooks/useHiddenAttributes/useHiddenAttributes.test.js +368 -0
  67. package/esm/hooks/useSavedSearchesRequest/index.d.ts +1 -0
  68. package/esm/hooks/useSavedSearchesRequest/index.js +1 -0
  69. package/esm/hooks/useSavedSearchesRequest/requests.d.ts +6 -0
  70. package/esm/hooks/useSavedSearchesRequest/requests.js +68 -0
  71. package/esm/hooks/useSavedSearchesRequest/useSavedSearchesRequest.d.ts +76 -0
  72. package/esm/hooks/useSavedSearchesRequest/useSavedSearchesRequest.js +251 -0
  73. package/esm/hooks/useSavedSearchesRequest/useSavedSearchesRequest.test.d.ts +1 -0
  74. package/esm/hooks/useSavedSearchesRequest/useSavedSearchesRequest.test.js +738 -0
  75. package/esm/index.d.ts +1 -0
  76. package/esm/index.js +1 -0
  77. package/package.json +2 -2
  78. package/cjs/hooks/useSavedSearchesRequest.d.ts +0 -23
  79. package/cjs/hooks/useSavedSearchesRequest.js +0 -224
  80. package/esm/hooks/useSavedSearchesRequest.d.ts +0 -23
  81. package/esm/hooks/useSavedSearchesRequest.js +0 -220
package/cjs/index.d.ts CHANGED
@@ -110,6 +110,7 @@ export { FilterValueEditor } from './FilterValueEditor';
110
110
  export { DropDownEditor } from './DropDownEditor';
111
111
  export { EmptySearchResult } from './EmptySearchResult';
112
112
  export { FileTypeEditor } from './FileTypeEditor';
113
+ export { SaveSegmentDialog } from './SaveSegmentDialog';
113
114
  export { withChartDataPercents as withPercents } from './HOCs/withChartDataPercents';
114
115
  export { withFilterAtBottom } from './HOCs/withFilterAtBottom';
115
116
  export { withTableContext } from './HOCs/withTableContext';
package/cjs/index.js CHANGED
@@ -16,7 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.ReadOnlyAttributeValuesBlock = exports.PieChart = exports.OvIcon = exports.NestedAttributeEditor = exports.NestedAttribute = exports.MoreAttributesButton = exports.InlineReferenceAttribute = exports.InlineNestedAttribute = exports.InlineImageAttribute = exports.InlineAttributesPager = exports.EditableImageAttributesLine = exports.FilterButton = exports.FacetViewHeader = exports.ExpandedValueTooltip = exports.EntitySelector = exports.EntityCreator = exports.AttributesPager = exports.AttributesList = exports.EditableAttribute = exports.DropDownMenuButton = exports.DescriptionIcon = exports.DefaultCellValueRenderer = exports.ColumnsSettingsPopup = exports.ColumnsSettings = exports.ColorBar = exports.CollapseRowButton = exports.ChartsFactory = exports.CardinalityMessage = exports.BranchDecorator = exports.BasicViewHeader = exports.BasicViewContent = exports.BasicView = exports.BasicTablePagination = exports.basicTableViewState = exports.BasicTable = exports.BasicAttributeSelector = exports.BarChart = exports.AvatarWithFallback = exports.AutoSizeList = exports.AttributesView = exports.AttributesValuesEditor = exports.AttributesFiltersButton = exports.AttributesFiltersBuilder = exports.AttributesFilterSelector = exports.AttributesErrorsPanel = exports.AttributeListItem = exports.AttributeGroupIcon = exports.ArrowExpandButton = exports.ActionsPanel = exports.ActionButton = void 0;
18
18
  exports.ErrorWrapper = exports.ErrorMessage = exports.ConfigureColumnsPopup = exports.ConnectionEditor = exports.DropDownSelector = exports.ReactSelectOptionWithCheckIcon = exports.ReactSelectMenuWithPopper = exports.ReactSelectMenuList = exports.ReactSelectLoadMoreButton = exports.ReactSelectDropdownIndicatorWithIconButton = exports.ReactSelectDropdownIndicator = exports.Highlighter = exports.HierarchyNodeTitle = exports.HierarchicalAttributeTooltip = exports.HideOnShrink = exports.ExpandableSearchInput = exports.ErrorPopup = exports.ErrorBoundary = exports.EntityUriLink = exports.EntityTypesSelector = exports.EntityTypeIcon = exports.EntityTypeBadge = exports.EntityAvatar = exports.EMPTY_STATE_VARIANTS = exports.EMPTY_STATE_ICONS = exports.EmptyState = exports.Drawer = exports.DataTypeValue = exports.DataTenantBadge = exports.ConnectionRelationTypeSelector = exports.CollaborationItem = exports.ConfirmationDialog = exports.CommentsContainer = exports.ColoredSourceIcon = exports.CollapseButton = exports.TreeChart = exports.TableWithBars = exports.SourceIcon = exports.SmallIconButtonWithTooltip = exports.SmallIconButton = exports.SimpleAttributeEditor = exports.SimpleAttribute = exports.RowCellAutoSizer = exports.RelationTypeSelector = exports.ReferenceAttributeEditor = exports.ReferenceAttribute = exports.ImageAttributesLine = exports.ReadOnlyAttributesPager = exports.ReadOnlyAttributesList = exports.ReadOnlyAttribute = void 0;
19
- exports.CrosswalkType = exports.AttributesTable = exports.CrosswalkDragLayer = exports.SourceCrosswalksRow = exports.CrosswalkEditor = exports.useModifiedEntity = exports.useCrosswalkActions = exports.groupCrosswalksByTypesAndSources = exports.ActivityTypes = exports.useProfileActivitiesLoader = exports.useActivitiesLoader = exports.ActivityLogFilter = exports.ActivityLog = exports.rerenderWrapper = exports.mockElementSizes = exports.mockBasicTableSizing = exports.getMuiIconByName = exports.delayPromise = exports.deepFreeze = exports.awaitMockPromises = exports.TestStylesProvider = exports.TestPerspectivesSettingsProvider = exports.enrichDataWithPercents = exports.defaultRenderRowCell = exports.defaultGetRowCellHeight = exports.columnFilterToMdmFilter = exports.buildColumnsFilter = exports.useDynamicRowCellHeight = exports.useClickableStyle = exports.BasicTableCellRenderer = exports.useBasicTableCellRenderer = exports.BasicTableContext = exports.BasicTableRowCollapseContext = exports.withTableContext = exports.withFilterAtBottom = exports.withPercents = exports.FileTypeEditor = exports.EmptySearchResult = exports.DropDownEditor = exports.FilterValueEditor = exports.MultiValueChip = exports.TextEditor = exports.DateRangeEditor = exports.NumberEditor = exports.DataTypeValueEditor = exports.DateEditor = void 0;
19
+ exports.CrosswalkType = exports.AttributesTable = exports.CrosswalkDragLayer = exports.SourceCrosswalksRow = exports.CrosswalkEditor = exports.useModifiedEntity = exports.useCrosswalkActions = exports.groupCrosswalksByTypesAndSources = exports.ActivityTypes = exports.useProfileActivitiesLoader = exports.useActivitiesLoader = exports.ActivityLogFilter = exports.ActivityLog = exports.rerenderWrapper = exports.mockElementSizes = exports.mockBasicTableSizing = exports.getMuiIconByName = exports.delayPromise = exports.deepFreeze = exports.awaitMockPromises = exports.TestStylesProvider = exports.TestPerspectivesSettingsProvider = exports.enrichDataWithPercents = exports.defaultRenderRowCell = exports.defaultGetRowCellHeight = exports.columnFilterToMdmFilter = exports.buildColumnsFilter = exports.useDynamicRowCellHeight = exports.useClickableStyle = exports.BasicTableCellRenderer = exports.useBasicTableCellRenderer = exports.BasicTableContext = exports.BasicTableRowCollapseContext = exports.withTableContext = exports.withFilterAtBottom = exports.withPercents = exports.SaveSegmentDialog = exports.FileTypeEditor = exports.EmptySearchResult = exports.DropDownEditor = exports.FilterValueEditor = exports.MultiValueChip = exports.TextEditor = exports.DateRangeEditor = exports.NumberEditor = exports.DataTypeValueEditor = exports.DateEditor = void 0;
20
20
  __exportStar(require("./HOCs"), exports);
21
21
  __exportStar(require("./components"), exports);
22
22
  __exportStar(require("./constants"), exports);
@@ -240,6 +240,8 @@ var EmptySearchResult_1 = require("./EmptySearchResult");
240
240
  Object.defineProperty(exports, "EmptySearchResult", { enumerable: true, get: function () { return EmptySearchResult_1.EmptySearchResult; } });
241
241
  var FileTypeEditor_1 = require("./FileTypeEditor");
242
242
  Object.defineProperty(exports, "FileTypeEditor", { enumerable: true, get: function () { return FileTypeEditor_1.FileTypeEditor; } });
243
+ var SaveSegmentDialog_1 = require("./SaveSegmentDialog");
244
+ Object.defineProperty(exports, "SaveSegmentDialog", { enumerable: true, get: function () { return SaveSegmentDialog_1.SaveSegmentDialog; } });
243
245
  // HOCs
244
246
  var withChartDataPercents_1 = require("./HOCs/withChartDataPercents");
245
247
  Object.defineProperty(exports, "withPercents", { enumerable: true, get: function () { return withChartDataPercents_1.withChartDataPercents; } });
@@ -25,8 +25,11 @@ import { HasDeletionsContext } from '../contexts/HasDeletionsContext';
25
25
  import { withContext } from '../HOCs/withContext';
26
26
  import { ConfigPermissionsContext } from '../contexts/ConfigPermissionsContext';
27
27
  import { ScrollType, ScrollToElementContext } from '../contexts/ScrollToElementContext';
28
+ import { useMdmHiddenAttributes } from '../contexts';
28
29
  var EditModeAttributesList = function (_a) {
29
30
  var parentAttributeType = _a.parentAttributeType, attrTypes = _a.attrTypes, entity = _a.entity, parentUri = _a.parentUri, showEmptyEditors = _a.showEmptyEditors, mode = _a.mode, crosswalks = _a.crosswalks, drawLines = _a.drawLines, children = _a.children, className = _a.className, _b = _a.alwaysVisibleTypeUris, alwaysVisibleTypeUris = _b === void 0 ? ALWAYS_VISIBLE_TYPE_URIS : _b, onAddAttributes = _a.onAddAttributes, onChangeAttribute = _a.onChangeAttribute, onDeleteAttribute = _a.onDeleteAttribute, additionalControlsRenderer = _a.additionalControlsRenderer, showNonOv = _a.showNonOv, highlightAttribute = _a.highlightAttribute;
31
+ var hiddenAttributes = useMdmHiddenAttributes();
32
+ var filteredAttrTypes = useMemo(function () { return attrTypes.filter(function (attrType) { return !hiddenAttributes.includes(attrType.uri); }); }, [attrTypes, hiddenAttributes]);
30
33
  var _c = entity.attributes, attributes = _c === void 0 ? {} : _c;
31
34
  var _d = useState({}), hasDeletionsMap = _d[0], setHasDeletionsMap = _d[1];
32
35
  var setHasDeletions = useCallback(function (attrTypeUri, value) {
@@ -40,12 +43,12 @@ var EditModeAttributesList = function (_a) {
40
43
  }, [parentUri]);
41
44
  var canCreate = useContext(ConfigPermissionsContext).canCreate;
42
45
  var canCreateParentAttrType = useMemo(function () { return canCreate && parentAttributeType && checkCanCreateAttribute({ attributeType: parentAttributeType, mode: mode }); }, [parentAttributeType, mode, canCreate]);
43
- var creatableAttrTypes = useMemo(function () { return (canCreate ? getCreatableAttributeTypes(mode, attrTypes) : []); }, [attrTypes, mode, canCreate]);
46
+ var creatableAttrTypes = useMemo(function () { return (canCreate ? getCreatableAttributeTypes(mode, filteredAttrTypes) : []); }, [filteredAttrTypes, mode, canCreate]);
44
47
  var moreAttrTypes = getMoreAttrTypes(creatableAttrTypes, entity, showEmptyEditors, hasDeletionsMap);
45
48
  var pinnedAttributes = useContext(PinnedAttributesContext);
46
49
  var pagersData = useMemo(function () {
47
- return getAttributesListForEditMode(attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes, canCreate);
48
- }, [attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes, canCreate]);
50
+ return getAttributesListForEditMode(filteredAttrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes, canCreate);
51
+ }, [filteredAttrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes, canCreate]);
49
52
  var _e = useMemo(function () { return splitPagersData(alwaysVisibleTypeUris, pagersData); }, [pagersData, alwaysVisibleTypeUris]), alwaysVisiblePagersData = _e[0], regularPagersData = _e[1];
50
53
  var onAddMoreAttributes = useCallback(function (attributeTypes) {
51
54
  onAddAttributes(attributeTypes.map(function (attributeType) { return ({
@@ -9,12 +9,50 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
12
48
  import React from 'react';
13
49
  import { shallow } from 'enzyme';
50
+ import { render, screen } from '@testing-library/react';
51
+ import userEvent from '@testing-library/user-event';
14
52
  import { PinnedAttributesContext } from '../contexts/PinnedAttributesContext';
15
- import { useMdmAction, useMdmMetadata, useMdmModifiedEntity, useMdmUserRoles } from '../contexts/MdmModuleContext';
53
+ import { useMdmAction, useMdmHiddenAttributes, useMdmMetadata, useMdmModifiedEntity, useMdmUserRoles } from '../contexts/MdmModuleContext';
16
54
  import { EditModeAttributesView } from './EditModeAttributesView';
17
- jest.mock('../contexts/MdmModuleContext', function () { return (__assign(__assign({}, jest.requireActual('../contexts/MdmModuleContext')), { useMdmAction: jest.fn(), useMdmMetadata: jest.fn(), useMdmUserRoles: jest.fn(), useMdmModifiedEntity: jest.fn() })); });
55
+ jest.mock('../contexts/MdmModuleContext', function () { return (__assign(__assign({}, jest.requireActual('../contexts/MdmModuleContext')), { useMdmAction: jest.fn(), useMdmMetadata: jest.fn(), useMdmUserRoles: jest.fn(), useMdmModifiedEntity: jest.fn(), useMdmDependentLookupEditorState: jest.fn(), useMdmHiddenAttributes: jest.fn() })); });
18
56
  var metadata = {
19
57
  entityTypes: []
20
58
  };
@@ -30,29 +68,185 @@ var pinnedAttributes = [
30
68
  var entity = { uri: 'entities/123' };
31
69
  var setUp = function (props) { return shallow(React.createElement(EditModeAttributesView, __assign({ entity: entity }, props))); };
32
70
  describe('EditModeAttributesView', function () {
33
- beforeEach(function () {
34
- useMdmMetadata.mockReturnValue(metadata);
35
- useMdmUserRoles.mockReturnValue([]);
36
- useMdmModifiedEntity.mockReturnValue(null);
37
- useMdmAction.mockReturnValue(jest.fn());
38
- });
39
- afterEach(function () {
40
- jest.clearAllMocks();
41
- });
42
- it('should render PinnedAttributesContext.Provider with passing pinnedAttributes for this user', function () {
43
- useMdmUserRoles.mockReturnValue(['ROLE_ADMIN']);
44
- var component = setUp({ pinnedAttributes: pinnedAttributes });
45
- expect(component.find(PinnedAttributesContext.Provider)).toHaveLength(1);
46
- expect(component.find(PinnedAttributesContext.Provider).prop('value')).toEqual(pinnedAttributes[0].attributes);
47
- });
48
- it('should render PinnedAttributesContext.Provider with passing pinnedAttributes as empty array for user without roles', function () {
49
- var component = setUp({ pinnedAttributes: pinnedAttributes });
50
- expect(component.find(PinnedAttributesContext.Provider)).toHaveLength(1);
51
- expect(component.find(PinnedAttributesContext.Provider).prop('value')).toEqual([]);
71
+ describe('PinnedAttributesContext', function () {
72
+ beforeEach(function () {
73
+ useMdmMetadata.mockReturnValue(metadata);
74
+ useMdmUserRoles.mockReturnValue([]);
75
+ useMdmModifiedEntity.mockReturnValue(null);
76
+ useMdmAction.mockReturnValue(jest.fn());
77
+ });
78
+ afterEach(function () {
79
+ jest.clearAllMocks();
80
+ });
81
+ it('should render PinnedAttributesContext.Provider with passing pinnedAttributes for this user', function () {
82
+ useMdmUserRoles.mockReturnValue(['ROLE_ADMIN']);
83
+ var component = setUp({ pinnedAttributes: pinnedAttributes });
84
+ expect(component.find(PinnedAttributesContext.Provider)).toHaveLength(1);
85
+ expect(component.find(PinnedAttributesContext.Provider).prop('value')).toEqual(pinnedAttributes[0].attributes);
86
+ });
87
+ it('should render PinnedAttributesContext.Provider with passing pinnedAttributes as empty array for user without roles', function () {
88
+ var component = setUp({ pinnedAttributes: pinnedAttributes });
89
+ expect(component.find(PinnedAttributesContext.Provider)).toHaveLength(1);
90
+ expect(component.find(PinnedAttributesContext.Provider).prop('value')).toEqual([]);
91
+ });
92
+ it('should render PinnedAttributesContext.Provider with passing pinnedAttributes as empty array if no pinnedAttributes', function () {
93
+ var component = setUp({});
94
+ expect(component.find(PinnedAttributesContext.Provider)).toHaveLength(1);
95
+ expect(component.find(PinnedAttributesContext.Provider).prop('value')).toEqual([]);
96
+ });
52
97
  });
53
- it('should render PinnedAttributesContext.Provider with passing pinnedAttributes as empty array if no pinnedAttributes', function () {
54
- var component = setUp({});
55
- expect(component.find(PinnedAttributesContext.Provider)).toHaveLength(1);
56
- expect(component.find(PinnedAttributesContext.Provider).prop('value')).toEqual([]);
98
+ describe('rule based attributes', function () {
99
+ var metadata = {
100
+ entityTypes: [
101
+ {
102
+ uri: 'configuration/entityTypes/HCP',
103
+ attributes: [
104
+ {
105
+ name: 'Category1',
106
+ type: 'String',
107
+ uri: 'configuration/entityTypes/HCP/attributes/Category1'
108
+ },
109
+ {
110
+ name: 'Category2',
111
+ type: 'String',
112
+ uri: 'configuration/entityTypes/HCP/attributes/Category2'
113
+ },
114
+ {
115
+ name: 'Category3',
116
+ type: 'String',
117
+ uri: 'configuration/entityTypes/HCP/attributes/Category3'
118
+ },
119
+ {
120
+ name: 'Category4',
121
+ type: 'String',
122
+ uri: 'configuration/entityTypes/HCP/attributes/Category4'
123
+ },
124
+ {
125
+ name: 'Nested1',
126
+ label: 'Nested1',
127
+ type: 'Nested',
128
+ uri: 'configuration/entityTypes/HCP/attributes/Nested1',
129
+ attributes: [
130
+ {
131
+ name: 'NestedCategory1',
132
+ type: 'String',
133
+ uri: 'configuration/entityTypes/HCP/attributes/Nested1/attributes/NestedCategory1'
134
+ },
135
+ {
136
+ name: 'NestedCategory2',
137
+ type: 'String',
138
+ uri: 'configuration/entityTypes/HCP/attributes/Nested1/attributes/NestedCategory2'
139
+ }
140
+ ]
141
+ }
142
+ ]
143
+ }
144
+ ]
145
+ };
146
+ var setUp = function (props) {
147
+ var user = userEvent.setup();
148
+ return __assign({ user: user }, render(React.createElement(EditModeAttributesView, __assign({}, props))));
149
+ };
150
+ beforeAll(function () {
151
+ useMdmUserRoles.mockReturnValue([]);
152
+ useMdmAction.mockReturnValue(jest.fn());
153
+ useMdmMetadata.mockReturnValue(metadata);
154
+ useMdmHiddenAttributes.mockReturnValue([]);
155
+ });
156
+ it('should hide attributes if there are no rules allow to show the attribute', function () {
157
+ var entity = {
158
+ type: 'configuration/entityTypes/HCP',
159
+ uri: 'entities/uri_e'
160
+ };
161
+ useMdmModifiedEntity.mockReturnValue({
162
+ type: 'configuration/entityTypes/HCP',
163
+ uri: 'entities/uri_e',
164
+ attributes: {
165
+ Category1: [
166
+ {
167
+ uri: 'entities/uri_e/attributes/uri1',
168
+ value: 'category1_value1'
169
+ }
170
+ ],
171
+ Category2: [
172
+ {
173
+ uri: 'entities/uri_e/attributes/uri2',
174
+ value: 'category2_value1'
175
+ }
176
+ ],
177
+ Category3: [
178
+ {
179
+ uri: 'entities/uri_e/attributes/uri3',
180
+ value: 'category3_value1'
181
+ }
182
+ ],
183
+ Category4: [
184
+ {
185
+ uri: 'entities/uri_e/attributes/uri4',
186
+ value: 'category4_value1'
187
+ }
188
+ ]
189
+ }
190
+ });
191
+ useMdmHiddenAttributes.mockReturnValue([
192
+ 'configuration/entityTypes/HCP/attributes/Category2',
193
+ 'configuration/entityTypes/HCP/attributes/Category3',
194
+ 'configuration/entityTypes/HCP/attributes/Category4'
195
+ ]);
196
+ setUp({ entity: entity });
197
+ expect(screen.getByText('category1_value1')).toBeInTheDocument();
198
+ expect(screen.queryByText('category2_value1')).not.toBeInTheDocument();
199
+ expect(screen.queryByText('category3_value1')).not.toBeInTheDocument();
200
+ expect(screen.queryByText('category4_value1')).not.toBeInTheDocument();
201
+ });
202
+ it('should hide nested attributes if there are no rules allow to show the attribute', function () { return __awaiter(void 0, void 0, void 0, function () {
203
+ var entity, user;
204
+ return __generator(this, function (_a) {
205
+ switch (_a.label) {
206
+ case 0:
207
+ entity = {
208
+ type: 'configuration/entityTypes/HCP',
209
+ uri: 'entities/uri_e'
210
+ };
211
+ useMdmModifiedEntity.mockReturnValue({
212
+ type: 'configuration/entityTypes/HCP',
213
+ uri: 'entities/uri_e',
214
+ attributes: {
215
+ Nested1: [
216
+ {
217
+ uri: 'entities/uri_e/attributes/nesteduri1',
218
+ value: {
219
+ NestedCategory1: [
220
+ {
221
+ ov: true,
222
+ uri: 'entities/uri_e/attributes/nesteduri1/attributes/nestedcaturi1',
223
+ value: 'nested_category1_value1'
224
+ }
225
+ ],
226
+ NestedCategory2: [
227
+ {
228
+ ov: true,
229
+ uri: 'entities/uri_e/attributes/nesteduri1/attributes/nestedcaturi2',
230
+ value: 'nested_category2_value1'
231
+ }
232
+ ]
233
+ }
234
+ }
235
+ ]
236
+ }
237
+ });
238
+ useMdmHiddenAttributes.mockReturnValue([
239
+ 'configuration/entityTypes/HCP/attributes/Nested1/attributes/NestedCategory2'
240
+ ]);
241
+ user = setUp({ entity: entity }).user;
242
+ return [4 /*yield*/, user.click(screen.getByTestId('arrow-expand-button'))];
243
+ case 1:
244
+ _a.sent();
245
+ expect(screen.getByText('nested_category1_value1')).toBeInTheDocument();
246
+ expect(screen.queryByText('nested_category2_value1')).not.toBeInTheDocument();
247
+ return [2 /*return*/];
248
+ }
249
+ });
250
+ }); });
57
251
  });
58
252
  });
@@ -18,10 +18,13 @@ import { ShowMore } from '../ShowMore';
18
18
  import { ShowLess } from '../ShowLess';
19
19
  import { ALWAYS_VISIBLE_TYPE_URIS } from '../constants';
20
20
  import { splitPagersData } from '../helpers/attributesView';
21
+ import { useMdmHiddenAttributes } from '../contexts';
21
22
  var ReadOnlyAttributesList = function (_a) {
22
23
  var attrTypes = _a.attrTypes, entity = _a.entity, parentUri = _a.parentUri, drawLines = _a.drawLines, children = _a.children, className = _a.className, max = _a.max, _b = _a.alwaysVisibleTypeUris, alwaysVisibleTypeUris = _b === void 0 ? ALWAYS_VISIBLE_TYPE_URIS : _b, showNonOv = _a.showNonOv;
24
+ var hiddenAttributes = useMdmHiddenAttributes();
25
+ var filteredAttrTypes = useMemo(function () { return attrTypes.filter(function (attrType) { return !hiddenAttributes.includes(attrType.uri); }); }, [attrTypes, hiddenAttributes]);
23
26
  var _c = useState(max || Infinity), visibleValuesCount = _c[0], setVisibleValuesCount = _c[1];
24
- var pagersData = useMemo(function () { return getAttributesListForReadMode(attrTypes, entity, showNonOv); }, [attrTypes, entity, showNonOv]);
27
+ var pagersData = useMemo(function () { return getAttributesListForReadMode(filteredAttrTypes, entity, showNonOv); }, [filteredAttrTypes, entity, showNonOv]);
25
28
  var _d = useMemo(function () { return splitPagersData(alwaysVisibleTypeUris, pagersData); }, [pagersData, alwaysVisibleTypeUris]), alwaysVisiblePagersData = _d[0], regularPagersData = _d[1];
26
29
  var visibleAttributePagersData = regularPagersData.slice(0, visibleValuesCount);
27
30
  var showMore = max && visibleAttributePagersData.length < regularPagersData.length;
@@ -1,6 +1,5 @@
1
1
  import React, { useMemo } from 'react';
2
- import { pipe, reject } from 'ramda';
3
- import { getAttributesListForReadMode, getRuleBasedAttributes, isEmptyValue, getHiddenDynamicAttributes } from '@reltio/mdm-sdk';
2
+ import { getAttributesListForReadMode, isEmptyValue } from '@reltio/mdm-sdk';
4
3
  import classnames from 'classnames';
5
4
  import i18n from 'ui-i18n';
6
5
  import Box from '@mui/material/Box';
@@ -19,14 +18,7 @@ export var ReadOnlyAttributesView = function (_a) {
19
18
  var styles = useStyles();
20
19
  var metadata = useMdmMetadata();
21
20
  var pivotingAttributes = useMdmPivotingAttributes();
22
- var filteredAttrTypes = useMemo(function () {
23
- var dynamicRules = getRuleBasedAttributes(metadata, entity.type);
24
- var hiddenAttributes = getHiddenDynamicAttributes(dynamicRules, entity);
25
- return pipe(getFilteredAttrTypes, reject(function (_a) {
26
- var uri = _a.uri;
27
- return hiddenAttributes.includes(uri);
28
- }))(metadata, entity.type, includeUris, excludeUris, hiddenAttributes);
29
- }, [excludeUris, includeUris, metadata, entity]);
21
+ var filteredAttrTypes = useMemo(function () { return getFilteredAttrTypes(metadata, entity.type, includeUris, excludeUris); }, [excludeUris, includeUris, metadata, entity]);
30
22
  var attributesCount = attributesCountProp || DEFAULT_ATTRIBUTES_COUNT;
31
23
  var attributesList = getAttributesListForReadMode(filteredAttrTypes, entity);
32
24
  var isShowAttributeList = attributesList.filter(function (_a) {