@reltio/components 1.4.1920 → 1.4.1922
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.js +1 -0
- package/cjs/CollaborationItem/components/TextFieldWithMentions/styles.d.ts +1 -1
- package/cjs/CollaborationItem/components/TextFieldWithMentions/styles.js +4 -1
- package/cjs/EntitySelector/components/EntityOption/EntityOption.d.ts +2 -1
- package/cjs/EntitySelector/components/EntityOption/EntityOption.js +3 -2
- package/cjs/EntitySelector/components/EntityOption/styles.js +4 -1
- package/cjs/hooks/useMaskedAttribute/useMaskedAttribute.d.ts +1 -1
- package/cjs/hooks/useRelationsLoader/useRelationsLoader.js +3 -2
- package/cjs/hooks/useRelationsLoader/useRelationsLoader.specs.js +62 -49
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +4 -2
- package/esm/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.js +1 -0
- package/esm/CollaborationItem/components/TextFieldWithMentions/styles.d.ts +1 -1
- package/esm/CollaborationItem/components/TextFieldWithMentions/styles.js +4 -1
- package/esm/EntitySelector/components/EntityOption/EntityOption.d.ts +2 -1
- package/esm/EntitySelector/components/EntityOption/EntityOption.js +3 -2
- package/esm/EntitySelector/components/EntityOption/styles.js +4 -1
- package/esm/hooks/useMaskedAttribute/useMaskedAttribute.d.ts +1 -1
- package/esm/hooks/useRelationsLoader/useRelationsLoader.js +4 -3
- package/esm/hooks/useRelationsLoader/useRelationsLoader.specs.js +62 -49
- package/esm/index.d.ts +1 -0
- package/esm/index.js +1 -0
- package/package.json +2 -2
|
@@ -75,6 +75,7 @@ var TextFieldWithMentions = function (_a) {
|
|
|
75
75
|
_b["".concat(MENTIONS_TEXTAREA_CLASSNAME, "__suggestions")] = styles.mentionsSuggestions,
|
|
76
76
|
_b["".concat(MENTIONS_TEXTAREA_CLASSNAME, "__suggestions__list")] = styles.mentionsSuggestionsList,
|
|
77
77
|
_b["".concat(MENTIONS_TEXTAREA_CLASSNAME, "__suggestions__item")] = styles.mentionsSuggestionsItem,
|
|
78
|
+
_b["".concat(MENTIONS_TEXTAREA_CLASSNAME, "__suggestions__item--focused")] = styles.mentionsSuggestionsItemFocused,
|
|
78
79
|
_b) }),
|
|
79
80
|
react_1.default.createElement(react_mentions_1.Mention, { trigger: "+", data: users.map(function (_a) {
|
|
80
81
|
var username = _a.username;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
type StylesProps = {
|
|
2
2
|
placeholder?: string;
|
|
3
3
|
};
|
|
4
|
-
export declare const useStyles: (props: StylesProps) => import("@mui/styles").ClassNameMap<"root" | "mentionsControl" | "mentionsHighlighter" | "mentionsInput" | "mentionsSuggestions" | "mentionsSuggestionsList" | "mentionsSuggestionsItem" | "mention">;
|
|
4
|
+
export declare const useStyles: (props: StylesProps) => import("@mui/styles").ClassNameMap<"root" | "mentionsControl" | "mentionsHighlighter" | "mentionsInput" | "mentionsSuggestions" | "mentionsSuggestionsList" | "mentionsSuggestionsItem" | "mentionsSuggestionsItemFocused" | "mention">;
|
|
5
5
|
export {};
|
|
@@ -45,10 +45,13 @@ exports.useStyles = (0, styles_1.makeStyles)(function (theme) { return ({
|
|
|
45
45
|
color: theme.palette.text.primary,
|
|
46
46
|
fontSize: '13px',
|
|
47
47
|
transition: theme.transitions.create(['background-color']),
|
|
48
|
-
'&:hover
|
|
48
|
+
'&:hover': {
|
|
49
49
|
backgroundColor: 'rgba(0,0,0,0.04)'
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
|
+
mentionsSuggestionsItemFocused: {
|
|
53
|
+
backgroundColor: 'rgba(0,0,0,0.04)'
|
|
54
|
+
},
|
|
52
55
|
mention: {
|
|
53
56
|
position: 'relative',
|
|
54
57
|
zIndex: 1,
|
|
@@ -6,6 +6,7 @@ type Props = {
|
|
|
6
6
|
innerRef: ForwardedRef<HTMLLIElement>;
|
|
7
7
|
selectOption: (option: Partial<EntityOptionType>) => void;
|
|
8
8
|
data: EntityOptionType;
|
|
9
|
+
isFocused: boolean;
|
|
9
10
|
};
|
|
10
|
-
export declare const EntityOption: ({ innerRef, innerProps, selectOption, data }: Props) => JSX.Element;
|
|
11
|
+
export declare const EntityOption: ({ innerRef, innerProps, selectOption, data, isFocused }: Props) => JSX.Element;
|
|
11
12
|
export {};
|
|
@@ -17,16 +17,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
exports.EntityOption = void 0;
|
|
18
18
|
var react_1 = __importDefault(require("react"));
|
|
19
19
|
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
20
|
+
var classnames_1 = __importDefault(require("classnames"));
|
|
20
21
|
var MenuItem_1 = __importDefault(require("@mui/material/MenuItem"));
|
|
21
22
|
var EntityTypeIcon_1 = require("../../../EntityTypeIcon");
|
|
22
23
|
var ExpandedValueTooltip_1 = require("../../../ExpandedValueTooltip");
|
|
23
24
|
var styles_1 = require("./styles");
|
|
24
25
|
var EntityOption = function (_a) {
|
|
25
|
-
var innerRef = _a.innerRef, innerProps = _a.innerProps, selectOption = _a.selectOption, data = _a.data;
|
|
26
|
+
var innerRef = _a.innerRef, innerProps = _a.innerProps, selectOption = _a.selectOption, data = _a.data, isFocused = _a.isFocused;
|
|
26
27
|
var styles = (0, styles_1.useStyles)();
|
|
27
28
|
var uri = data.uri, entityType = data.entityType, label = data.label, secondaryLabel = data.secondaryLabel;
|
|
28
29
|
if (uri !== '') {
|
|
29
|
-
return (react_1.default.createElement(MenuItem_1.default, __assign({ className: styles.entityContainer, ref: innerRef, key: uri, onClick: function () { return selectOption({ label: label, uri: uri, entityType: entityType }); } }, innerProps),
|
|
30
|
+
return (react_1.default.createElement(MenuItem_1.default, __assign({ className: (0, classnames_1.default)(styles.entityContainer, { focused: isFocused }), ref: innerRef, key: uri, onClick: function () { return selectOption({ label: label, uri: uri, entityType: entityType }); } }, innerProps),
|
|
30
31
|
react_1.default.createElement(EntityTypeIcon_1.EntityTypeIcon, { className: styles.entityAvatar, entityType: entityType }),
|
|
31
32
|
react_1.default.createElement(ExpandedValueTooltip_1.ExpandedValueTooltip, { value: "".concat(label).concat(secondaryLabel ? ', ' + secondaryLabel : '') },
|
|
32
33
|
react_1.default.createElement("span", { className: styles.entityLabel },
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AttributeType, SimpleAttributeValue } from '@reltio/mdm-sdk';
|
|
2
2
|
type Props = {
|
|
3
3
|
attributeValue: SimpleAttributeValue;
|
|
4
|
-
attributeType: AttributeType
|
|
4
|
+
attributeType: Pick<AttributeType, 'masking'>;
|
|
5
5
|
};
|
|
6
6
|
export declare const useMaskedAttribute: ({ attributeType, attributeValue }: Props) => {
|
|
7
7
|
isUnmaskingNeeded: boolean;
|
|
@@ -55,8 +55,9 @@ var useRelationsLoader = function (_a) {
|
|
|
55
55
|
};
|
|
56
56
|
var suggested = config.suggested;
|
|
57
57
|
var options = (0, react_1.useMemo)(function () { return ({
|
|
58
|
-
searchByOv: searchByOv
|
|
59
|
-
|
|
58
|
+
searchByOv: searchByOv,
|
|
59
|
+
sendMasked: (0, mdm_sdk_1.hasRelationMasking)(metadata)
|
|
60
|
+
}); }, [searchByOv, metadata]);
|
|
60
61
|
var modeRef = (0, react_1.useRef)(mode);
|
|
61
62
|
modeRef.current = mode;
|
|
62
63
|
var loadRelations = (0, react_1.useCallback)(function () {
|
|
@@ -112,6 +112,48 @@ var setUp = function (_a) {
|
|
|
112
112
|
};
|
|
113
113
|
return __assign(__assign({}, (0, react_hooks_1.renderHook)(useRelationsLoader_1.useRelationsLoader, { initialProps: props, wrapper: Providers })), { updateMdmValues: updateMdmValues });
|
|
114
114
|
};
|
|
115
|
+
var createMetadata = function (entityAccess, relationAccess) {
|
|
116
|
+
if (entityAccess === void 0) { entityAccess = []; }
|
|
117
|
+
if (relationAccess === void 0) { relationAccess = []; }
|
|
118
|
+
return {
|
|
119
|
+
entityTypes: [
|
|
120
|
+
{
|
|
121
|
+
uri: 'configuration/entityTypes/HCP',
|
|
122
|
+
label: 'HCP',
|
|
123
|
+
access: entityAccess,
|
|
124
|
+
attributes: [],
|
|
125
|
+
abstract: false,
|
|
126
|
+
businessCardAttributeURIs: []
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
uri: 'configuration/entityTypes/HCA',
|
|
130
|
+
label: 'HCA',
|
|
131
|
+
access: ['DELETE', 'READ', 'CREATE', 'UPDATE'],
|
|
132
|
+
attributes: [],
|
|
133
|
+
abstract: false,
|
|
134
|
+
businessCardAttributeURIs: []
|
|
135
|
+
}
|
|
136
|
+
],
|
|
137
|
+
relationTypes: [
|
|
138
|
+
{
|
|
139
|
+
uri: 'configuration/entityTypes/HCPtoHCA',
|
|
140
|
+
label: 'HCP2HCA',
|
|
141
|
+
access: ['DELETE', 'READ', 'CREATE', 'UPDATE'],
|
|
142
|
+
attributes: [],
|
|
143
|
+
abstract: false,
|
|
144
|
+
businessCardAttributeURIs: []
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
uri: 'configuration/entityTypes/HCPtoHCP',
|
|
148
|
+
label: 'HCP',
|
|
149
|
+
access: relationAccess,
|
|
150
|
+
attributes: [],
|
|
151
|
+
abstract: false,
|
|
152
|
+
businessCardAttributeURIs: []
|
|
153
|
+
}
|
|
154
|
+
]
|
|
155
|
+
};
|
|
156
|
+
};
|
|
115
157
|
describe('useRelationsLoader behaviour', function () {
|
|
116
158
|
var connections = [
|
|
117
159
|
{
|
|
@@ -126,11 +168,13 @@ describe('useRelationsLoader behaviour', function () {
|
|
|
126
168
|
jest.clearAllMocks();
|
|
127
169
|
});
|
|
128
170
|
it('should call getRelationsForEntity if reload is called', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
129
|
-
var _a, result, waitFor;
|
|
171
|
+
var metadata, mdmValues, _a, result, waitFor;
|
|
130
172
|
return __generator(this, function (_b) {
|
|
131
173
|
switch (_b.label) {
|
|
132
174
|
case 0:
|
|
133
|
-
|
|
175
|
+
metadata = createMetadata(['DELETE', 'READ', 'CREATE', 'UPDATE']);
|
|
176
|
+
mdmValues = __assign(__assign({}, defaultMdmValues), { metadata: metadata });
|
|
177
|
+
_a = setUp({ mdmValues: mdmValues }), result = _a.result, waitFor = _a.waitFor;
|
|
134
178
|
(0, react_hooks_1.act)(function () {
|
|
135
179
|
result.current.reload();
|
|
136
180
|
});
|
|
@@ -149,11 +193,13 @@ describe('useRelationsLoader behaviour', function () {
|
|
|
149
193
|
});
|
|
150
194
|
}); });
|
|
151
195
|
it('should call reload on change lastLoadedTime', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
152
|
-
var _a, result, waitFor, updateMdmValues, reloadFirst, reloadNext;
|
|
196
|
+
var metadata, mdmValues, _a, result, waitFor, updateMdmValues, reloadFirst, reloadNext;
|
|
153
197
|
return __generator(this, function (_b) {
|
|
154
198
|
switch (_b.label) {
|
|
155
199
|
case 0:
|
|
156
|
-
|
|
200
|
+
metadata = createMetadata(['DELETE', 'READ', 'CREATE', 'UPDATE']);
|
|
201
|
+
mdmValues = __assign(__assign({}, defaultMdmValues), { metadata: metadata });
|
|
202
|
+
_a = setUp({ mdmValues: mdmValues }), result = _a.result, waitFor = _a.waitFor, updateMdmValues = _a.updateMdmValues;
|
|
157
203
|
reloadFirst = result.current.reload;
|
|
158
204
|
(0, react_hooks_1.act)(function () {
|
|
159
205
|
updateMdmValues(function (prev) { return (__assign(__assign({}, prev), { profileLastLoadedTime: 1674037143200 })); });
|
|
@@ -169,48 +215,6 @@ describe('useRelationsLoader behaviour', function () {
|
|
|
169
215
|
});
|
|
170
216
|
}); });
|
|
171
217
|
describe('security related', function () {
|
|
172
|
-
var createMetadata = function (entityAccess, relationAccess) {
|
|
173
|
-
if (entityAccess === void 0) { entityAccess = []; }
|
|
174
|
-
if (relationAccess === void 0) { relationAccess = []; }
|
|
175
|
-
return {
|
|
176
|
-
entityTypes: [
|
|
177
|
-
{
|
|
178
|
-
uri: 'configuration/entityTypes/HCP',
|
|
179
|
-
label: 'HCP',
|
|
180
|
-
access: entityAccess,
|
|
181
|
-
attributes: [],
|
|
182
|
-
abstract: false,
|
|
183
|
-
businessCardAttributeURIs: []
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
uri: 'configuration/entityTypes/HCA',
|
|
187
|
-
label: 'HCA',
|
|
188
|
-
access: ['DELETE', 'READ', 'CREATE', 'UPDATE'],
|
|
189
|
-
attributes: [],
|
|
190
|
-
abstract: false,
|
|
191
|
-
businessCardAttributeURIs: []
|
|
192
|
-
}
|
|
193
|
-
],
|
|
194
|
-
relationTypes: [
|
|
195
|
-
{
|
|
196
|
-
uri: 'configuration/entityTypes/HCPtoHCA',
|
|
197
|
-
label: 'HCP2HCA',
|
|
198
|
-
access: ['DELETE', 'READ', 'CREATE', 'UPDATE'],
|
|
199
|
-
attributes: [],
|
|
200
|
-
abstract: false,
|
|
201
|
-
businessCardAttributeURIs: []
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
uri: 'configuration/entityTypes/HCPtoHCP',
|
|
205
|
-
label: 'HCP',
|
|
206
|
-
access: relationAccess,
|
|
207
|
-
attributes: [],
|
|
208
|
-
abstract: false,
|
|
209
|
-
businessCardAttributeURIs: []
|
|
210
|
-
}
|
|
211
|
-
]
|
|
212
|
-
};
|
|
213
|
-
};
|
|
214
218
|
it('should filter out relations current user does not have access to', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
215
219
|
var metadata, config, props, mdmValues, _a, result, waitFor;
|
|
216
220
|
return __generator(this, function (_b) {
|
|
@@ -245,7 +249,10 @@ describe('useRelationsLoader behaviour', function () {
|
|
|
245
249
|
returnDates: true,
|
|
246
250
|
returnObjects: true
|
|
247
251
|
}
|
|
248
|
-
], {
|
|
252
|
+
], {
|
|
253
|
+
searchByOv: false,
|
|
254
|
+
sendMasked: false
|
|
255
|
+
});
|
|
249
256
|
return [4 /*yield*/, waitFor(function () { return expect(result.current.isLoading).toBe(false); })];
|
|
250
257
|
case 1:
|
|
251
258
|
_b.sent();
|
|
@@ -314,7 +321,10 @@ describe('useRelationsLoader behaviour', function () {
|
|
|
314
321
|
outRelations: ['configuration/entityTypes/HCPtoHCA']
|
|
315
322
|
}
|
|
316
323
|
}
|
|
317
|
-
], {
|
|
324
|
+
], {
|
|
325
|
+
searchByOv: false,
|
|
326
|
+
sendMasked: false
|
|
327
|
+
});
|
|
318
328
|
return [4 /*yield*/, waitFor(function () { return expect(result.current.isLoading).toBe(false); })];
|
|
319
329
|
case 1:
|
|
320
330
|
_b.sent();
|
|
@@ -439,7 +449,10 @@ describe('useRelationsLoader behaviour', function () {
|
|
|
439
449
|
returnDates: true,
|
|
440
450
|
returnObjects: true
|
|
441
451
|
}
|
|
442
|
-
], {
|
|
452
|
+
], {
|
|
453
|
+
searchByOv: false,
|
|
454
|
+
sendMasked: false
|
|
455
|
+
});
|
|
443
456
|
return [4 /*yield*/, waitFor(function () { return expect(result.current.isLoading).toBe(false); })];
|
|
444
457
|
case 1:
|
|
445
458
|
_b.sent();
|
package/cjs/index.d.ts
CHANGED
|
@@ -258,6 +258,7 @@ export { useBasicTableCellRenderer, BasicTableCellRenderer } from './hooks/useBa
|
|
|
258
258
|
export { useClickableChartStyle as useClickableStyle } from './hooks/useClickableChartStyle';
|
|
259
259
|
export { useDynamicRowCellHeight } from './hooks/useDynamicRowCellHeight';
|
|
260
260
|
export { useKeyboardNavigation } from './hooks/useKeyboardNavigation';
|
|
261
|
+
export { useMaskedAttribute } from './hooks/useMaskedAttribute';
|
|
261
262
|
export { buildColumnsFilter, columnFilterToMdmFilter, defaultGetRowCellHeight, defaultRenderRowCell } from './helpers/basicTable';
|
|
262
263
|
export { enrichDataWithPercents } from './helpers/charts';
|
|
263
264
|
export { showDefaultErrorMessage, showErrorMessage } from './helpers/errors';
|
package/cjs/index.js
CHANGED
|
@@ -19,8 +19,8 @@ exports.ErrorMessage = exports.ConfigureColumnsPopup = exports.ConnectionEditor
|
|
|
19
19
|
exports.PotentialMatchReviewCard = exports.PopupWithArrow = exports.Popper = exports.MultipleInput = exports.ModeSwitcherSelect = exports.ModeSwitcher = exports.TransitiveMatchBlock = exports.SimpleMatchRulesBuilder = exports.SimpleMatchRulesBlock = exports.SimpleMatchRules = exports.MatchRulesBlock = exports.LoadingSpinner = exports.Link = exports.LinearLoadIndicator = exports.ImportButton = exports.ReadableSearchQuery = exports.LogicOperator = exports.TableSkeleton = exports.StepNavigation = exports.TenantLabel = exports.RelevanceScoreBadge = exports.RequiredMark = exports.SettingsMenu = exports.TenantsDropDownSelector = exports.TenantIcon = exports.SourceSystemsSelector = exports.MatchRulesSelector = exports.MultiValueSelector = exports.ProfilesList = exports.NotMatchButton = exports.MergeButton = exports.ProfileMatchCard = exports.ImageGalleryDialog = exports.RelationTypesSelector = exports.ScreenProfileBand = exports.ProfileBandNavigation = exports.EmptyStub = exports.SaveSegmentDialog = exports.MaskingSwitcher = exports.FileTypeEditor = exports.EmptySearchResult = exports.DropDownEditor = exports.FilterValueEditor = exports.MultiValueChip = exports.TextEditor = exports.DateRangeEditor = exports.NumberEditor = exports.DataTypeValueEditor = exports.DateEditor = exports.ErrorWrapper = void 0;
|
|
20
20
|
exports.PerspectivesSettingsContext = exports.PivotingAttributeContext = exports.UsersContext = exports.InitialCollaborationContextValue = exports.CollaborationContextProvider = exports.CollaborationContext = exports.BlockImageGalleryDialogContext = exports.PopupBoundariesContext = exports.HistoryDiffContext = exports.AsyncMountContext = exports.MdmModuleProvider = exports.withTableContext = exports.withFilterAtBottom = exports.withPercents = exports.withContext = exports.withDateRangeSelector = exports.withDragHandle = exports.withAsyncMount = exports.withTooltip = exports.GaugeChart = exports.RelationEditor = exports.ReltioMap = exports.Marginator = exports.LightArrowTooltip = exports.ScrollableTabs = exports.VirtualGroupedList = exports.ViewMoreToggle = exports.VerticalHeadingsTable = exports.VerticalDivider = exports.AttributeTitle = exports.Spacer = exports.SimpleDropDownSelector = exports.SidePanelContentHeader = exports.SidePanel = exports.SidePanelEmptyState = exports.SideButtonsPanel = exports.SelectorWithOnlyOptionAutoSelect = exports.SelectionPopup = exports.WhiteSearchInput = exports.SearchInput = exports.ProfileResizablePanes = exports.ResizablePanes = exports.ReltioGridLayout = exports.reactSortableTreeHelpers = exports.ReactSortableTree = exports.MultiSelect = exports.QueryBuilderRowsGroup = exports.QueryBuilderRow = exports.ProfileCard = exports.ProfileBand = void 0;
|
|
21
21
|
exports.BasicTableContext = exports.BasicTableRowCollapseContext = exports.useUnmaskedAttributeValue = exports.useUnmaskAttributeValue = exports.useMaskAttributeValue = exports.MaskedAttributesProvider = exports.SegmentationContext = exports.useReloadData = exports.ReloadDataProvider = exports.useAttributeValueConfigPermissions = exports.ConfigPermissionsContextProvider = exports.ConfigPermissionsContext = exports.useActionsHook = exports.ActionsHookProvider = exports.PageRequestsAbortingContext = exports.DependentLookupAutopopulationContext = exports.FeaturesContext = exports.LabelsContext = exports.UrlGeneratorsContext = exports.isHighlightedAttributeType = exports.isHighlightedErrorType = exports.ScrollType = exports.ScrollToElementProvider = exports.ScrollToElementContext = exports.SearchValueContext = exports.InterceptHandlersContext = exports.HighlightedValuesContext = exports.SnackbarContext = exports.SearchFiltersContext = exports.useReloadFacet = exports.ReloadFacetProvider = exports.useReloadAllFacets = exports.SandboxAPIContext = exports.EntityContext = exports.RelatedObjectUrisContext = exports.WorkflowTasksContext = exports.useEntityLoadingIndication = exports.EntityLoadingIndicationProvider = exports.EntityMarkerContext = exports.useAttributeExpanded = exports.ExpandedAttributesProvider = exports.useHighlightedCrosswalks = exports.useCrosswalkHighlight = exports.useCrosswalkFocus = exports.useCrosswalkColor = exports.CrosswalksDisplayProvider = exports.EntitiesMapContext = exports.IdContext = exports.ProfilePerspectiveViewContext = exports.usePerspectivesSettings = void 0;
|
|
22
|
-
exports.
|
|
23
|
-
exports.FakeMouseEvent = exports.rerenderWrapper = exports.mockElementSizes = exports.fixClicksOnResizablePanes = exports.mockBasicTableSizing = exports.getMuiIconsByName = exports.getMuiIconByName = exports.delayPromise = exports.deepFreeze = exports.awaitMockPromises = exports.TestStylesProvider = exports.TestPerspectivesSettingsProvider = void 0;
|
|
22
|
+
exports.isControlOrCommandPressed = exports.getValue = exports.getChecked = exports.showErrorMessage = exports.showDefaultErrorMessage = exports.enrichDataWithPercents = exports.defaultRenderRowCell = exports.defaultGetRowCellHeight = exports.columnFilterToMdmFilter = exports.buildColumnsFilter = exports.useMaskedAttribute = exports.useKeyboardNavigation = exports.useDynamicRowCellHeight = exports.useClickableStyle = exports.BasicTableCellRenderer = exports.useBasicTableCellRenderer = exports.useHiddenAttributes = exports.useSavedSearchesRequest = exports.useRequestDCRReview = exports.useAutoFocus = exports.useExpandInvalidRelations = exports.useLayoutResetter = exports.useIsMountedRef = exports.useSnackbar = exports.useSavedStateForEntityType = exports.useReadableSearchState = exports.useEditableConnection = exports.useCustomScripts = exports.useMarkAsNotMatchRequest = exports.useMergeAllRequest = exports.usePagingSimulator = exports.useMatchesLoader = exports.useConfigPermissions = exports.useWhyDidYouUpdate = exports.useUsers = exports.useSavedState = exports.useSafePromise = exports.useRunOnceAfterValueInitialization = exports.useRelationsLoader = exports.useRelationTypeSelector = exports.usePrevious = exports.useDidUpdateEffect = exports.useCommentsEntitiesMap = exports.useCollaboration = exports.useAsyncMount = exports.useAPI = exports.useActions = exports.useMatchesColumnsData = exports.useScrollToAttributeError = exports.HiddenAttributesContext = void 0;
|
|
23
|
+
exports.FakeMouseEvent = exports.rerenderWrapper = exports.mockElementSizes = exports.fixClicksOnResizablePanes = exports.mockBasicTableSizing = exports.getMuiIconsByName = exports.getMuiIconByName = exports.delayPromise = exports.deepFreeze = exports.awaitMockPromises = exports.TestStylesProvider = exports.TestPerspectivesSettingsProvider = exports.mergeClasses = void 0;
|
|
24
24
|
// components
|
|
25
25
|
var ActionButton_1 = require("./ActionButton");
|
|
26
26
|
Object.defineProperty(exports, "ActionButton", { enumerable: true, get: function () { return ActionButton_1.ActionButton; } });
|
|
@@ -574,6 +574,8 @@ var useDynamicRowCellHeight_1 = require("./hooks/useDynamicRowCellHeight");
|
|
|
574
574
|
Object.defineProperty(exports, "useDynamicRowCellHeight", { enumerable: true, get: function () { return useDynamicRowCellHeight_1.useDynamicRowCellHeight; } });
|
|
575
575
|
var useKeyboardNavigation_1 = require("./hooks/useKeyboardNavigation");
|
|
576
576
|
Object.defineProperty(exports, "useKeyboardNavigation", { enumerable: true, get: function () { return useKeyboardNavigation_1.useKeyboardNavigation; } });
|
|
577
|
+
var useMaskedAttribute_1 = require("./hooks/useMaskedAttribute");
|
|
578
|
+
Object.defineProperty(exports, "useMaskedAttribute", { enumerable: true, get: function () { return useMaskedAttribute_1.useMaskedAttribute; } });
|
|
577
579
|
// helpers
|
|
578
580
|
var basicTable_1 = require("./helpers/basicTable");
|
|
579
581
|
Object.defineProperty(exports, "buildColumnsFilter", { enumerable: true, get: function () { return basicTable_1.buildColumnsFilter; } });
|
|
@@ -46,6 +46,7 @@ export var TextFieldWithMentions = function (_a) {
|
|
|
46
46
|
_b["".concat(MENTIONS_TEXTAREA_CLASSNAME, "__suggestions")] = styles.mentionsSuggestions,
|
|
47
47
|
_b["".concat(MENTIONS_TEXTAREA_CLASSNAME, "__suggestions__list")] = styles.mentionsSuggestionsList,
|
|
48
48
|
_b["".concat(MENTIONS_TEXTAREA_CLASSNAME, "__suggestions__item")] = styles.mentionsSuggestionsItem,
|
|
49
|
+
_b["".concat(MENTIONS_TEXTAREA_CLASSNAME, "__suggestions__item--focused")] = styles.mentionsSuggestionsItemFocused,
|
|
49
50
|
_b) }),
|
|
50
51
|
React.createElement(Mention, { trigger: "+", data: users.map(function (_a) {
|
|
51
52
|
var username = _a.username;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
type StylesProps = {
|
|
2
2
|
placeholder?: string;
|
|
3
3
|
};
|
|
4
|
-
export declare const useStyles: (props: StylesProps) => import("@mui/styles").ClassNameMap<"root" | "mentionsControl" | "mentionsHighlighter" | "mentionsInput" | "mentionsSuggestions" | "mentionsSuggestionsList" | "mentionsSuggestionsItem" | "mention">;
|
|
4
|
+
export declare const useStyles: (props: StylesProps) => import("@mui/styles").ClassNameMap<"root" | "mentionsControl" | "mentionsHighlighter" | "mentionsInput" | "mentionsSuggestions" | "mentionsSuggestionsList" | "mentionsSuggestionsItem" | "mentionsSuggestionsItemFocused" | "mention">;
|
|
5
5
|
export {};
|
|
@@ -42,10 +42,13 @@ export var useStyles = makeStyles(function (theme) { return ({
|
|
|
42
42
|
color: theme.palette.text.primary,
|
|
43
43
|
fontSize: '13px',
|
|
44
44
|
transition: theme.transitions.create(['background-color']),
|
|
45
|
-
'&:hover
|
|
45
|
+
'&:hover': {
|
|
46
46
|
backgroundColor: 'rgba(0,0,0,0.04)'
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
|
+
mentionsSuggestionsItemFocused: {
|
|
50
|
+
backgroundColor: 'rgba(0,0,0,0.04)'
|
|
51
|
+
},
|
|
49
52
|
mention: {
|
|
50
53
|
position: 'relative',
|
|
51
54
|
zIndex: 1,
|
|
@@ -6,6 +6,7 @@ type Props = {
|
|
|
6
6
|
innerRef: ForwardedRef<HTMLLIElement>;
|
|
7
7
|
selectOption: (option: Partial<EntityOptionType>) => void;
|
|
8
8
|
data: EntityOptionType;
|
|
9
|
+
isFocused: boolean;
|
|
9
10
|
};
|
|
10
|
-
export declare const EntityOption: ({ innerRef, innerProps, selectOption, data }: Props) => JSX.Element;
|
|
11
|
+
export declare const EntityOption: ({ innerRef, innerProps, selectOption, data, isFocused }: Props) => JSX.Element;
|
|
11
12
|
export {};
|
|
@@ -11,16 +11,17 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
};
|
|
12
12
|
import React from 'react';
|
|
13
13
|
import i18n from 'ui-i18n';
|
|
14
|
+
import classNames from 'classnames';
|
|
14
15
|
import MenuItem from '@mui/material/MenuItem';
|
|
15
16
|
import { EntityTypeIcon } from '../../../EntityTypeIcon';
|
|
16
17
|
import { ExpandedValueTooltip } from '../../../ExpandedValueTooltip';
|
|
17
18
|
import { useStyles } from './styles';
|
|
18
19
|
export var EntityOption = function (_a) {
|
|
19
|
-
var innerRef = _a.innerRef, innerProps = _a.innerProps, selectOption = _a.selectOption, data = _a.data;
|
|
20
|
+
var innerRef = _a.innerRef, innerProps = _a.innerProps, selectOption = _a.selectOption, data = _a.data, isFocused = _a.isFocused;
|
|
20
21
|
var styles = useStyles();
|
|
21
22
|
var uri = data.uri, entityType = data.entityType, label = data.label, secondaryLabel = data.secondaryLabel;
|
|
22
23
|
if (uri !== '') {
|
|
23
|
-
return (React.createElement(MenuItem, __assign({ className: styles.entityContainer, ref: innerRef, key: uri, onClick: function () { return selectOption({ label: label, uri: uri, entityType: entityType }); } }, innerProps),
|
|
24
|
+
return (React.createElement(MenuItem, __assign({ className: classNames(styles.entityContainer, { focused: isFocused }), ref: innerRef, key: uri, onClick: function () { return selectOption({ label: label, uri: uri, entityType: entityType }); } }, innerProps),
|
|
24
25
|
React.createElement(EntityTypeIcon, { className: styles.entityAvatar, entityType: entityType }),
|
|
25
26
|
React.createElement(ExpandedValueTooltip, { value: "".concat(label).concat(secondaryLabel ? ', ' + secondaryLabel : '') },
|
|
26
27
|
React.createElement("span", { className: styles.entityLabel },
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AttributeType, SimpleAttributeValue } from '@reltio/mdm-sdk';
|
|
2
2
|
type Props = {
|
|
3
3
|
attributeValue: SimpleAttributeValue;
|
|
4
|
-
attributeType: AttributeType
|
|
4
|
+
attributeType: Pick<AttributeType, 'masking'>;
|
|
5
5
|
};
|
|
6
6
|
export declare const useMaskedAttribute: ({ attributeType, attributeValue }: Props) => {
|
|
7
7
|
isUnmaskingNeeded: boolean;
|
|
@@ -12,7 +12,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
12
12
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
13
13
|
import { cond, pipe, prop, T, evolve, filter as filterFn, when, identity, times, length, ifElse, always } from 'ramda';
|
|
14
14
|
import i18n from 'ui-i18n';
|
|
15
|
-
import { ActivityFilter, addGlobalFilterToQuery, getRelationsForDataTenantEntity, getRelationsForEntity, isAvailableEntityTypeUri, isAvailableRelationTypeUri, isDataTenantEntity, getInOutRelationUri, isTempUri, Mode, wrapInArrayIfNeeded } from '@reltio/mdm-sdk';
|
|
15
|
+
import { ActivityFilter, addGlobalFilterToQuery, getRelationsForDataTenantEntity, getRelationsForEntity, isAvailableEntityTypeUri, isAvailableRelationTypeUri, isDataTenantEntity, getInOutRelationUri, isTempUri, Mode, wrapInArrayIfNeeded, hasRelationMasking } from '@reltio/mdm-sdk';
|
|
16
16
|
import { useSafePromise } from '../useSafePromise';
|
|
17
17
|
import { usePrevious } from '../usePrevious';
|
|
18
18
|
import { useMdmAction, useMdmDtssPath, useMdmGlobalSearchRequestOptions, useMdmMetadata, useMdmProfileLastLoadedTime, useMdmTenant } from '../../contexts/MdmModuleContext';
|
|
@@ -49,8 +49,9 @@ export var useRelationsLoader = function (_a) {
|
|
|
49
49
|
};
|
|
50
50
|
var suggested = config.suggested;
|
|
51
51
|
var options = useMemo(function () { return ({
|
|
52
|
-
searchByOv: searchByOv
|
|
53
|
-
|
|
52
|
+
searchByOv: searchByOv,
|
|
53
|
+
sendMasked: hasRelationMasking(metadata)
|
|
54
|
+
}); }, [searchByOv, metadata]);
|
|
54
55
|
var modeRef = useRef(mode);
|
|
55
56
|
modeRef.current = mode;
|
|
56
57
|
var loadRelations = useCallback(function () {
|
|
@@ -87,6 +87,48 @@ var setUp = function (_a) {
|
|
|
87
87
|
};
|
|
88
88
|
return __assign(__assign({}, renderHook(useRelationsLoader, { initialProps: props, wrapper: Providers })), { updateMdmValues: updateMdmValues });
|
|
89
89
|
};
|
|
90
|
+
var createMetadata = function (entityAccess, relationAccess) {
|
|
91
|
+
if (entityAccess === void 0) { entityAccess = []; }
|
|
92
|
+
if (relationAccess === void 0) { relationAccess = []; }
|
|
93
|
+
return {
|
|
94
|
+
entityTypes: [
|
|
95
|
+
{
|
|
96
|
+
uri: 'configuration/entityTypes/HCP',
|
|
97
|
+
label: 'HCP',
|
|
98
|
+
access: entityAccess,
|
|
99
|
+
attributes: [],
|
|
100
|
+
abstract: false,
|
|
101
|
+
businessCardAttributeURIs: []
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
uri: 'configuration/entityTypes/HCA',
|
|
105
|
+
label: 'HCA',
|
|
106
|
+
access: ['DELETE', 'READ', 'CREATE', 'UPDATE'],
|
|
107
|
+
attributes: [],
|
|
108
|
+
abstract: false,
|
|
109
|
+
businessCardAttributeURIs: []
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
relationTypes: [
|
|
113
|
+
{
|
|
114
|
+
uri: 'configuration/entityTypes/HCPtoHCA',
|
|
115
|
+
label: 'HCP2HCA',
|
|
116
|
+
access: ['DELETE', 'READ', 'CREATE', 'UPDATE'],
|
|
117
|
+
attributes: [],
|
|
118
|
+
abstract: false,
|
|
119
|
+
businessCardAttributeURIs: []
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
uri: 'configuration/entityTypes/HCPtoHCP',
|
|
123
|
+
label: 'HCP',
|
|
124
|
+
access: relationAccess,
|
|
125
|
+
attributes: [],
|
|
126
|
+
abstract: false,
|
|
127
|
+
businessCardAttributeURIs: []
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
};
|
|
131
|
+
};
|
|
90
132
|
describe('useRelationsLoader behaviour', function () {
|
|
91
133
|
var connections = [
|
|
92
134
|
{
|
|
@@ -101,11 +143,13 @@ describe('useRelationsLoader behaviour', function () {
|
|
|
101
143
|
jest.clearAllMocks();
|
|
102
144
|
});
|
|
103
145
|
it('should call getRelationsForEntity if reload is called', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
104
|
-
var _a, result, waitFor;
|
|
146
|
+
var metadata, mdmValues, _a, result, waitFor;
|
|
105
147
|
return __generator(this, function (_b) {
|
|
106
148
|
switch (_b.label) {
|
|
107
149
|
case 0:
|
|
108
|
-
|
|
150
|
+
metadata = createMetadata(['DELETE', 'READ', 'CREATE', 'UPDATE']);
|
|
151
|
+
mdmValues = __assign(__assign({}, defaultMdmValues), { metadata: metadata });
|
|
152
|
+
_a = setUp({ mdmValues: mdmValues }), result = _a.result, waitFor = _a.waitFor;
|
|
109
153
|
act(function () {
|
|
110
154
|
result.current.reload();
|
|
111
155
|
});
|
|
@@ -124,11 +168,13 @@ describe('useRelationsLoader behaviour', function () {
|
|
|
124
168
|
});
|
|
125
169
|
}); });
|
|
126
170
|
it('should call reload on change lastLoadedTime', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
127
|
-
var _a, result, waitFor, updateMdmValues, reloadFirst, reloadNext;
|
|
171
|
+
var metadata, mdmValues, _a, result, waitFor, updateMdmValues, reloadFirst, reloadNext;
|
|
128
172
|
return __generator(this, function (_b) {
|
|
129
173
|
switch (_b.label) {
|
|
130
174
|
case 0:
|
|
131
|
-
|
|
175
|
+
metadata = createMetadata(['DELETE', 'READ', 'CREATE', 'UPDATE']);
|
|
176
|
+
mdmValues = __assign(__assign({}, defaultMdmValues), { metadata: metadata });
|
|
177
|
+
_a = setUp({ mdmValues: mdmValues }), result = _a.result, waitFor = _a.waitFor, updateMdmValues = _a.updateMdmValues;
|
|
132
178
|
reloadFirst = result.current.reload;
|
|
133
179
|
act(function () {
|
|
134
180
|
updateMdmValues(function (prev) { return (__assign(__assign({}, prev), { profileLastLoadedTime: 1674037143200 })); });
|
|
@@ -144,48 +190,6 @@ describe('useRelationsLoader behaviour', function () {
|
|
|
144
190
|
});
|
|
145
191
|
}); });
|
|
146
192
|
describe('security related', function () {
|
|
147
|
-
var createMetadata = function (entityAccess, relationAccess) {
|
|
148
|
-
if (entityAccess === void 0) { entityAccess = []; }
|
|
149
|
-
if (relationAccess === void 0) { relationAccess = []; }
|
|
150
|
-
return {
|
|
151
|
-
entityTypes: [
|
|
152
|
-
{
|
|
153
|
-
uri: 'configuration/entityTypes/HCP',
|
|
154
|
-
label: 'HCP',
|
|
155
|
-
access: entityAccess,
|
|
156
|
-
attributes: [],
|
|
157
|
-
abstract: false,
|
|
158
|
-
businessCardAttributeURIs: []
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
uri: 'configuration/entityTypes/HCA',
|
|
162
|
-
label: 'HCA',
|
|
163
|
-
access: ['DELETE', 'READ', 'CREATE', 'UPDATE'],
|
|
164
|
-
attributes: [],
|
|
165
|
-
abstract: false,
|
|
166
|
-
businessCardAttributeURIs: []
|
|
167
|
-
}
|
|
168
|
-
],
|
|
169
|
-
relationTypes: [
|
|
170
|
-
{
|
|
171
|
-
uri: 'configuration/entityTypes/HCPtoHCA',
|
|
172
|
-
label: 'HCP2HCA',
|
|
173
|
-
access: ['DELETE', 'READ', 'CREATE', 'UPDATE'],
|
|
174
|
-
attributes: [],
|
|
175
|
-
abstract: false,
|
|
176
|
-
businessCardAttributeURIs: []
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
uri: 'configuration/entityTypes/HCPtoHCP',
|
|
180
|
-
label: 'HCP',
|
|
181
|
-
access: relationAccess,
|
|
182
|
-
attributes: [],
|
|
183
|
-
abstract: false,
|
|
184
|
-
businessCardAttributeURIs: []
|
|
185
|
-
}
|
|
186
|
-
]
|
|
187
|
-
};
|
|
188
|
-
};
|
|
189
193
|
it('should filter out relations current user does not have access to', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
190
194
|
var metadata, config, props, mdmValues, _a, result, waitFor;
|
|
191
195
|
return __generator(this, function (_b) {
|
|
@@ -220,7 +224,10 @@ describe('useRelationsLoader behaviour', function () {
|
|
|
220
224
|
returnDates: true,
|
|
221
225
|
returnObjects: true
|
|
222
226
|
}
|
|
223
|
-
], {
|
|
227
|
+
], {
|
|
228
|
+
searchByOv: false,
|
|
229
|
+
sendMasked: false
|
|
230
|
+
});
|
|
224
231
|
return [4 /*yield*/, waitFor(function () { return expect(result.current.isLoading).toBe(false); })];
|
|
225
232
|
case 1:
|
|
226
233
|
_b.sent();
|
|
@@ -289,7 +296,10 @@ describe('useRelationsLoader behaviour', function () {
|
|
|
289
296
|
outRelations: ['configuration/entityTypes/HCPtoHCA']
|
|
290
297
|
}
|
|
291
298
|
}
|
|
292
|
-
], {
|
|
299
|
+
], {
|
|
300
|
+
searchByOv: false,
|
|
301
|
+
sendMasked: false
|
|
302
|
+
});
|
|
293
303
|
return [4 /*yield*/, waitFor(function () { return expect(result.current.isLoading).toBe(false); })];
|
|
294
304
|
case 1:
|
|
295
305
|
_b.sent();
|
|
@@ -414,7 +424,10 @@ describe('useRelationsLoader behaviour', function () {
|
|
|
414
424
|
returnDates: true,
|
|
415
425
|
returnObjects: true
|
|
416
426
|
}
|
|
417
|
-
], {
|
|
427
|
+
], {
|
|
428
|
+
searchByOv: false,
|
|
429
|
+
sendMasked: false
|
|
430
|
+
});
|
|
418
431
|
return [4 /*yield*/, waitFor(function () { return expect(result.current.isLoading).toBe(false); })];
|
|
419
432
|
case 1:
|
|
420
433
|
_b.sent();
|
package/esm/index.d.ts
CHANGED
|
@@ -258,6 +258,7 @@ export { useBasicTableCellRenderer, BasicTableCellRenderer } from './hooks/useBa
|
|
|
258
258
|
export { useClickableChartStyle as useClickableStyle } from './hooks/useClickableChartStyle';
|
|
259
259
|
export { useDynamicRowCellHeight } from './hooks/useDynamicRowCellHeight';
|
|
260
260
|
export { useKeyboardNavigation } from './hooks/useKeyboardNavigation';
|
|
261
|
+
export { useMaskedAttribute } from './hooks/useMaskedAttribute';
|
|
261
262
|
export { buildColumnsFilter, columnFilterToMdmFilter, defaultGetRowCellHeight, defaultRenderRowCell } from './helpers/basicTable';
|
|
262
263
|
export { enrichDataWithPercents } from './helpers/charts';
|
|
263
264
|
export { showDefaultErrorMessage, showErrorMessage } from './helpers/errors';
|
package/esm/index.js
CHANGED
|
@@ -262,6 +262,7 @@ export { useBasicTableCellRenderer, BasicTableCellRenderer } from './hooks/useBa
|
|
|
262
262
|
export { useClickableChartStyle as useClickableStyle } from './hooks/useClickableChartStyle';
|
|
263
263
|
export { useDynamicRowCellHeight } from './hooks/useDynamicRowCellHeight';
|
|
264
264
|
export { useKeyboardNavigation } from './hooks/useKeyboardNavigation';
|
|
265
|
+
export { useMaskedAttribute } from './hooks/useMaskedAttribute';
|
|
265
266
|
// helpers
|
|
266
267
|
export { buildColumnsFilter, columnFilterToMdmFilter, defaultGetRowCellHeight, defaultRenderRowCell } from './helpers/basicTable';
|
|
267
268
|
export { enrichDataWithPercents } from './helpers/charts';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reltio/components",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1922",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE FILE",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"module": "./esm/index.js",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"@fluentui/react-context-selector": "^9.1.26",
|
|
9
9
|
"@react-google-maps/api": "2.7.0",
|
|
10
10
|
"@react-sigma/core": "3.4.0",
|
|
11
|
-
"@reltio/mdm-sdk": "^1.4.
|
|
11
|
+
"@reltio/mdm-sdk": "^1.4.1843",
|
|
12
12
|
"classnames": "^2.2.5",
|
|
13
13
|
"d3-cloud": "^1.2.5",
|
|
14
14
|
"d3-geo": "^2.0.1",
|