@reltio/components 1.4.2216 → 1.4.2218

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 (61) hide show
  1. package/AttributeVerificationStatus/AttributeVerificationStatus.d.ts +8 -0
  2. package/AttributeVerificationStatus/AttributeVerificationStatus.js +22 -0
  3. package/AttributeVerificationStatus/AttributeVerificationStatus.module.css.js +9 -0
  4. package/AttributeVerificationStatus/helpers.d.ts +8 -0
  5. package/AttributeVerificationStatus/helpers.js +56 -0
  6. package/ReadOnlyAttributesPager/components/MultiLineRenderer/MultiLineRenderer.js +8 -2
  7. package/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.js +10 -3
  8. package/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.module.css.js +9 -0
  9. package/VerificationButton/VerificationButton.d.ts +13 -0
  10. package/VerificationButton/VerificationButton.js +150 -0
  11. package/VerificationButton/VerificationButton.module.css.js +9 -0
  12. package/cjs/AttributeVerificationStatus/AttributeVerificationStatus.d.ts +8 -0
  13. package/cjs/AttributeVerificationStatus/AttributeVerificationStatus.js +52 -0
  14. package/cjs/AttributeVerificationStatus/AttributeVerificationStatus.module.css.js +9 -0
  15. package/cjs/AttributeVerificationStatus/helpers.d.ts +8 -0
  16. package/cjs/AttributeVerificationStatus/helpers.js +64 -0
  17. package/cjs/ReadOnlyAttributesPager/components/MultiLineRenderer/MultiLineRenderer.js +7 -1
  18. package/cjs/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.js +15 -8
  19. package/cjs/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.module.css.js +9 -0
  20. package/cjs/VerificationButton/VerificationButton.d.ts +13 -0
  21. package/cjs/VerificationButton/VerificationButton.js +180 -0
  22. package/cjs/VerificationButton/VerificationButton.module.css.js +9 -0
  23. package/cjs/contexts/AttributesVerificationContext/helpers.d.ts +17 -0
  24. package/cjs/contexts/AttributesVerificationContext/helpers.js +137 -0
  25. package/cjs/contexts/AttributesVerificationContext/index.d.ts +19 -0
  26. package/cjs/contexts/AttributesVerificationContext/index.js +72 -0
  27. package/cjs/contexts/MdmModuleContext/context.d.ts +8 -0
  28. package/cjs/contexts/MdmModuleContext/hooks.d.ts +4 -0
  29. package/cjs/features/activity-log/ActivityLog/components/ActivityItem/ActivityItem.js +12 -4
  30. package/cjs/icons/VerificationInvalidIcon.d.ts +3 -0
  31. package/cjs/icons/VerificationInvalidIcon.js +22 -0
  32. package/cjs/icons/VerificationMaybeIcon.d.ts +3 -0
  33. package/cjs/icons/VerificationMaybeIcon.js +22 -0
  34. package/cjs/icons/VerificationOutdatedIcon.d.ts +3 -0
  35. package/cjs/icons/VerificationOutdatedIcon.js +22 -0
  36. package/cjs/icons/VerificationValidIcon.d.ts +3 -0
  37. package/cjs/icons/VerificationValidIcon.js +22 -0
  38. package/cjs/icons/VerifyAllIcon.d.ts +3 -0
  39. package/cjs/icons/VerifyAllIcon.js +26 -0
  40. package/contexts/AttributesVerificationContext/helpers.d.ts +17 -0
  41. package/contexts/AttributesVerificationContext/helpers.js +126 -0
  42. package/contexts/AttributesVerificationContext/index.d.ts +19 -0
  43. package/contexts/AttributesVerificationContext/index.js +45 -0
  44. package/contexts/MdmModuleContext/context.d.ts +8 -0
  45. package/contexts/MdmModuleContext/hooks.d.ts +4 -0
  46. package/features/activity-log/ActivityLog/components/ActivityItem/ActivityItem.js +12 -4
  47. package/icons/VerificationInvalidIcon.d.ts +3 -0
  48. package/icons/VerificationInvalidIcon.js +17 -0
  49. package/icons/VerificationMaybeIcon.d.ts +3 -0
  50. package/icons/VerificationMaybeIcon.js +17 -0
  51. package/icons/VerificationOutdatedIcon.d.ts +3 -0
  52. package/icons/VerificationOutdatedIcon.js +17 -0
  53. package/icons/VerificationValidIcon.d.ts +3 -0
  54. package/icons/VerificationValidIcon.js +17 -0
  55. package/icons/VerifyAllIcon.d.ts +3 -0
  56. package/icons/VerifyAllIcon.js +21 -0
  57. package/package.json +2 -2
  58. package/ReadOnlyComplexAttribute/styles.d.ts +0 -1
  59. package/ReadOnlyComplexAttribute/styles.js +0 -22
  60. package/cjs/ReadOnlyComplexAttribute/styles.d.ts +0 -1
  61. package/cjs/ReadOnlyComplexAttribute/styles.js +0 -25
@@ -39,19 +39,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.ReadOnlyComplexAttribute = void 0;
41
41
  var react_1 = __importStar(require("react"));
42
+ var ramda_1 = require("ramda");
42
43
  var classnames_1 = __importDefault(require("classnames"));
44
+ var react_context_selector_1 = require("@fluentui/react-context-selector");
43
45
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
44
46
  var Typography_1 = __importDefault(require("@mui/material/Typography"));
45
47
  var ReadOnlyAttributesList_1 = require("../ReadOnlyAttributesList");
46
48
  var ArrowExpandButton_1 = require("../ArrowExpandButton");
47
49
  var CommentsContainer_1 = require("../CommentsContainer");
48
50
  var HighlightedValuesContext_1 = require("../contexts/HighlightedValuesContext");
51
+ var AttributesVerificationContext_1 = require("../contexts/AttributesVerificationContext");
49
52
  var classnames_2 = require("../constants/classnames");
50
- var styles_1 = require("./styles");
53
+ var AttributeVerificationStatus_1 = require("../AttributeVerificationStatus/AttributeVerificationStatus");
54
+ var ReadOnlyComplexAttribute_module_css_1 = __importDefault(require("./ReadOnlyComplexAttribute.module.css"));
51
55
  var ReadOnlyComplexAttribute = function (_a) {
52
56
  var _b;
53
57
  var attributeTypesList = _a.attributeTypesList, attributeValue = _a.attributeValue, label = _a.label, _c = _a.expanded, expandedProp = _c === void 0 ? false : _c, children = _a.children, showNonOv = _a.showNonOv, attributeType = _a.attributeType, classes = _a.classes, LabelRenderer = _a.LabelRenderer, RightSlot = _a.RightSlot;
54
- var styles = (0, styles_1.useStyles)();
55
58
  var uri = attributeValue.uri;
56
59
  var _d = (0, react_1.useState)(false), expanded = _d[0], setExpanded = _d[1];
57
60
  var _e = (0, react_1.useContext)(HighlightedValuesContext_1.HighlightedValuesContext), _f = _e.highlightedValuesUris, highlightedValuesUris = _f === void 0 ? [] : _f, highlightedClassName = _e.highlightedClassName;
@@ -60,16 +63,20 @@ var ReadOnlyComplexAttribute = function (_a) {
60
63
  }, [expandedProp]);
61
64
  var hasAnalyticValue = (attributeTypesList || []).some(function (attributeType) { return (0, mdm_sdk_1.isAnalyticAttribute)(attributeType); });
62
65
  var attributeListEntity = (0, react_1.useMemo)(function () { return (__assign({ attributes: hasAnalyticValue ? null : attributeValue.value, analyticsAttributes: hasAnalyticValue ? attributeValue.value : null }, ((0, mdm_sdk_1.isSpecialAttribute)(attributeType) ? attributeValue.value : {}))); }, [attributeValue, hasAnalyticValue, attributeType]);
66
+ var isVerificationAttribute = (0, react_context_selector_1.useContextSelector)(AttributesVerificationContext_1.AttributesVerificationContext, function (context) { return (context === null || context === void 0 ? void 0 : context.isVerificationAttribute) || ramda_1.F; });
63
67
  var objectType = (0, mdm_sdk_1.getObjectTypeByAttributeUri)(attributeValue.uri);
64
- return (react_1.default.createElement("div", { className: styles.complexContainer },
65
- react_1.default.createElement("div", { className: (0, classnames_1.default)(styles.labelContainer, classnames_2.COMMENTS_CONTAINER_VISIBILITY_AREA) },
68
+ var showVerificationStatus = isVerificationAttribute(attributeType);
69
+ return (react_1.default.createElement("div", { className: ReadOnlyComplexAttribute_module_css_1.default.complexContainer },
70
+ react_1.default.createElement("div", { className: (0, classnames_1.default)(ReadOnlyComplexAttribute_module_css_1.default.labelContainer, classnames_2.COMMENTS_CONTAINER_VISIBILITY_AREA) },
66
71
  react_1.default.createElement(ArrowExpandButton_1.ArrowExpandButton, { onClick: function () { return setExpanded(function (value) { return !value; }); }, expanded: expanded }),
67
72
  LabelRenderer ? (react_1.default.createElement(LabelRenderer, { attributeType: attributeType, attributeValue: attributeValue })) : (react_1.default.createElement(react_1.default.Fragment, null,
68
- react_1.default.createElement(Typography_1.default, { component: "span", variant: "body2", classes: { body2: styles.label }, className: (0, classnames_1.default)((_b = {},
73
+ react_1.default.createElement(Typography_1.default, { component: "span", variant: "body2", classes: { body2: ReadOnlyComplexAttribute_module_css_1.default.label }, className: (0, classnames_1.default)((_b = {},
69
74
  _b[highlightedClassName] = highlightedValuesUris.includes(attributeValue.uri),
70
- _b[styles.ovFalse] = !(0, mdm_sdk_1.isOv)(attributeValue),
71
- _b)), "data-reltio-id": "reltio-attribute-complex-label" }, label),
72
- react_1.default.createElement("div", { className: styles.spacer }),
75
+ _b[ReadOnlyComplexAttribute_module_css_1.default.ovFalse] = !(0, mdm_sdk_1.isOv)(attributeValue),
76
+ _b)), "data-reltio-id": "reltio-attribute-complex-label" },
77
+ label,
78
+ showVerificationStatus && (react_1.default.createElement(AttributeVerificationStatus_1.AttributeVerificationStatus, { attributeType: attributeType, attributeValue: attributeValue }))),
79
+ react_1.default.createElement("div", { className: ReadOnlyComplexAttribute_module_css_1.default.spacer }),
73
80
  RightSlot && react_1.default.createElement(RightSlot, { attributeType: attributeType, attributeValue: attributeValue }),
74
81
  react_1.default.createElement(CommentsContainer_1.CommentsContainer, { uri: attributeValue.uri, relatedObjectUris: (0, mdm_sdk_1.createRelatedObjectUris)(objectType, {
75
82
  uri: attributeValue.uri
@@ -0,0 +1,9 @@
1
+ const styles = {"complexContainer":"ReadOnlyComplexAttribute-complexContainer--DybRT","labelContainer":"ReadOnlyComplexAttribute-labelContainer--x4Ikp","label":"ReadOnlyComplexAttribute-label--BqM8F","spacer":"ReadOnlyComplexAttribute-spacer--raB-d","ovFalse":"ReadOnlyComplexAttribute-ovFalse--9sySx"};
2
+ if (typeof document !== 'undefined') {
3
+ const head = document.head || document.getElementsByTagName('head')[0]
4
+ const style = document.createElement('style');
5
+ style.type = 'text/css'
6
+ style.innerHTML = `.ReadOnlyComplexAttribute-complexContainer--DybRT{margin-top:1px}.ReadOnlyComplexAttribute-labelContainer--x4Ikp{display:flex;min-height:18px;--verify-status-opacity:0}.ReadOnlyComplexAttribute-labelContainer--x4Ikp:hover{--verify-status-opacity:1}.ReadOnlyComplexAttribute-label--BqM8F{display:inline-flex;font-size:13px;letter-spacing:normal;line-height:16px;margin-left:2px;white-space:break-spaces}.ReadOnlyComplexAttribute-spacer--raB-d{flex:1}.ReadOnlyComplexAttribute-ovFalse--9sySx{opacity:var(--mui-inactive-opacity)}`;
7
+ head.appendChild(style);
8
+ }
9
+ module.exports = styles;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { AttributeType } from '@reltio/mdm-sdk';
3
+ export declare enum VerificationButtonSize {
4
+ SMALL = "small",
5
+ MEDIUM = "medium"
6
+ }
7
+ type Props = {
8
+ attributeType?: AttributeType;
9
+ size?: VerificationButtonSize;
10
+ className?: string;
11
+ };
12
+ export declare const VerificationButton: ({ attributeType, size, className }: Props) => React.JSX.Element;
13
+ export {};
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __generator = (this && this.__generator) || function (thisArg, body) {
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
36
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
+ function verb(n) { return function (v) { return step([n, v]); }; }
38
+ function step(op) {
39
+ if (f) throw new TypeError("Generator is already executing.");
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
+ 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;
42
+ if (y = 0, t) op = [op[0] & 2, t.value];
43
+ switch (op[0]) {
44
+ case 0: case 1: t = op; break;
45
+ case 4: _.label++; return { value: op[1], done: false };
46
+ case 5: _.label++; y = op[1]; op = [0]; continue;
47
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
+ default:
49
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
+ if (t[2]) _.ops.pop();
54
+ _.trys.pop(); continue;
55
+ }
56
+ op = body.call(thisArg, _);
57
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
+ }
60
+ };
61
+ var __importDefault = (this && this.__importDefault) || function (mod) {
62
+ return (mod && mod.__esModule) ? mod : { "default": mod };
63
+ };
64
+ var _a, _b;
65
+ Object.defineProperty(exports, "__esModule", { value: true });
66
+ exports.VerificationButton = exports.VerificationButtonSize = void 0;
67
+ var react_1 = __importStar(require("react"));
68
+ var ramda_1 = require("ramda");
69
+ var classnames_1 = __importDefault(require("classnames"));
70
+ var react_context_selector_1 = require("@fluentui/react-context-selector");
71
+ var CircularProgress_1 = __importDefault(require("@mui/material/CircularProgress"));
72
+ var ui_i18n_1 = __importDefault(require("ui-i18n"));
73
+ var VerifyAllIcon_1 = __importDefault(require("../icons/VerifyAllIcon"));
74
+ var useSafePromise_1 = require("../hooks/useSafePromise");
75
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
76
+ var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
77
+ var AttributesVerificationContext_1 = require("../contexts/AttributesVerificationContext");
78
+ var errors_1 = require("../helpers/errors");
79
+ var useCssVariableStyles_1 = require("../hooks/useCssVariableStyles");
80
+ var SmallIconButton_1 = require("../SmallIconButton");
81
+ var VerificationButton_module_css_1 = __importDefault(require("./VerificationButton.module.css"));
82
+ var VerificationButtonSize;
83
+ (function (VerificationButtonSize) {
84
+ VerificationButtonSize["SMALL"] = "small";
85
+ VerificationButtonSize["MEDIUM"] = "medium";
86
+ })(VerificationButtonSize || (exports.VerificationButtonSize = VerificationButtonSize = {}));
87
+ var ICON_SIZES = (_a = {},
88
+ _a[VerificationButtonSize.SMALL] = 16,
89
+ _a[VerificationButtonSize.MEDIUM] = 24,
90
+ _a);
91
+ var BUTTON_SIZES = (_b = {},
92
+ _b[VerificationButtonSize.SMALL] = 20,
93
+ _b[VerificationButtonSize.MEDIUM] = 36,
94
+ _b);
95
+ var getTooltipTitle = function (verificationTypes) {
96
+ if (verificationTypes.includes(mdm_sdk_1.InputVerificationAttribute.Email) &&
97
+ verificationTypes.includes(mdm_sdk_1.InputVerificationAttribute.Phone)) {
98
+ return ui_i18n_1.default.text('Verify all email and phone numbers');
99
+ }
100
+ if (verificationTypes.includes(mdm_sdk_1.InputVerificationAttribute.Email)) {
101
+ return ui_i18n_1.default.text('Verify all emails');
102
+ }
103
+ if (verificationTypes.includes(mdm_sdk_1.InputVerificationAttribute.Phone)) {
104
+ return ui_i18n_1.default.text('Verify all phone numbers');
105
+ }
106
+ return null;
107
+ };
108
+ var VerificationButton = function (_a) {
109
+ var attributeType = _a.attributeType, _b = _a.size, size = _b === void 0 ? VerificationButtonSize.SMALL : _b, className = _a.className;
110
+ var variableStyles = (0, useCssVariableStyles_1.useCssVariableStyles)({
111
+ '--icon-size': ICON_SIZES[size] + 'px',
112
+ '--button-size': BUTTON_SIZES[size] + 'px'
113
+ });
114
+ var _c = (0, react_1.useState)(false), loading = _c[0], setLoading = _c[1];
115
+ var entityUri = (0, MdmModuleContext_1.useMdmEntityUri)();
116
+ var updateEntityAttributeValues = (0, MdmModuleContext_1.useMdmAction)('updateEntityAttributeValues');
117
+ var getVerificationType = (0, react_context_selector_1.useContextSelector)(AttributesVerificationContext_1.AttributesVerificationContext, function (context) { return context.getVerificationType; });
118
+ var allVerificationTypes = (0, react_context_selector_1.useContextSelector)(AttributesVerificationContext_1.AttributesVerificationContext, function (context) {
119
+ return context.getAllVerificationTypes();
120
+ });
121
+ var verificationType = attributeType ? getVerificationType(attributeType) : null;
122
+ var verificationAttributeTypeUris = (0, react_context_selector_1.useContextSelector)(AttributesVerificationContext_1.AttributesVerificationContext, function (context) { return context.verificationAttributeTypeUris; });
123
+ var options = (0, react_1.useMemo)(function () {
124
+ if ((0, ramda_1.isNil)(attributeType))
125
+ return {};
126
+ var clientFilter = verificationType === mdm_sdk_1.InputVerificationAttribute.Email
127
+ ? mdm_sdk_1.VerifyAttributesClientFilter.EmailVerifier
128
+ : mdm_sdk_1.VerifyAttributesClientFilter.PhoneVerifier;
129
+ return {
130
+ clientFilter: clientFilter
131
+ };
132
+ }, [attributeType, verificationType]);
133
+ var verifySafePromise = (0, useSafePromise_1.useSafePromise)();
134
+ var handleClick = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
135
+ var attributeTypeUris, updatedEntity, error_1;
136
+ return __generator(this, function (_a) {
137
+ switch (_a.label) {
138
+ case 0:
139
+ attributeTypeUris = attributeType ? [attributeType.uri] : verificationAttributeTypeUris;
140
+ setLoading(true);
141
+ _a.label = 1;
142
+ case 1:
143
+ _a.trys.push([1, 3, 4, 5]);
144
+ return [4 /*yield*/, verifySafePromise((0, mdm_sdk_1.verifyAttributes)({ entityUri: entityUri, options: options }))];
145
+ case 2:
146
+ updatedEntity = _a.sent();
147
+ if (updatedEntity) {
148
+ updateEntityAttributeValues({
149
+ updatedEntity: updatedEntity,
150
+ attributeTypeUris: attributeTypeUris
151
+ });
152
+ }
153
+ return [3 /*break*/, 5];
154
+ case 3:
155
+ error_1 = _a.sent();
156
+ (0, errors_1.showDefaultErrorMessage)(error_1);
157
+ return [3 /*break*/, 5];
158
+ case 4:
159
+ setLoading(false);
160
+ return [7 /*endfinally*/];
161
+ case 5: return [2 /*return*/];
162
+ }
163
+ });
164
+ }); }, [
165
+ verifySafePromise,
166
+ entityUri,
167
+ options,
168
+ attributeType,
169
+ updateEntityAttributeValues,
170
+ verificationAttributeTypeUris
171
+ ]);
172
+ var currentVerificationTypes = (0, react_1.useMemo)(function () {
173
+ if (verificationType)
174
+ return [verificationType];
175
+ return allVerificationTypes;
176
+ }, [verificationType, allVerificationTypes]);
177
+ var tooltipTitle = getTooltipTitle(currentVerificationTypes);
178
+ return (react_1.default.createElement("div", { className: (0, classnames_1.default)(VerificationButton_module_css_1.default.root, className), style: variableStyles }, loading ? (react_1.default.createElement(CircularProgress_1.default, { size: BUTTON_SIZES[size] })) : (react_1.default.createElement(SmallIconButton_1.SmallIconButtonWithTooltip, { icon: VerifyAllIcon_1.default, iconClassName: VerificationButton_module_css_1.default.icon, className: VerificationButton_module_css_1.default.iconButton, tooltipTitle: tooltipTitle, onClick: handleClick }))));
179
+ };
180
+ exports.VerificationButton = VerificationButton;
@@ -0,0 +1,9 @@
1
+ const styles = {"root":"VerificationButton-root--0piRf","icon":"VerificationButton-icon--hdGgX","iconButton":"VerificationButton-iconButton--OUG-s"};
2
+ if (typeof document !== 'undefined') {
3
+ const head = document.head || document.getElementsByTagName('head')[0]
4
+ const style = document.createElement('style');
5
+ style.type = 'text/css'
6
+ style.innerHTML = `.VerificationButton-root--0piRf{display:inline-block;margin-left:2px}.VerificationButton-root--0piRf .VerificationButton-icon--hdGgX{height:var(--icon-size);width:var(--icon-size)}.VerificationButton-root--0piRf .VerificationButton-iconButton--OUG-s{height:var(--button-size);width:var(--button-size)}`;
7
+ head.appendChild(style);
8
+ }
9
+ module.exports = styles;
@@ -0,0 +1,17 @@
1
+ import { AttributeType, AttributeVerificationConfig, NestedAttributeValue, InputVerificationAttribute } from '@reltio/mdm-sdk';
2
+ export declare enum VerificationStatus {
3
+ VALID = "valid",
4
+ INVALID = "invalid",
5
+ OUTDATED = "outdated",
6
+ MAYBE = "maybe",
7
+ ACCEPT_ALL = "accept_all"
8
+ }
9
+ export declare const getIsVerificationAttribute: (attributeType: AttributeType, attributeVerificationConfig: AttributeVerificationConfig[]) => boolean;
10
+ export declare const getVerificationStatus: (attributeType: AttributeType, attributeValue: NestedAttributeValue, attributeVerificationConfig: AttributeVerificationConfig[]) => {
11
+ status: VerificationStatus;
12
+ lastVerifiedTime: number | null;
13
+ verificationType: InputVerificationAttribute;
14
+ } | null;
15
+ export declare const getVerificationType: (attributeType: AttributeType, attributeVerificationConfig: AttributeVerificationConfig[]) => InputVerificationAttribute;
16
+ export declare const getAllVerificationAttributeTypeUris: (attributeVerificationConfig: AttributeVerificationConfig[], entityTypeUri: string) => string[];
17
+ export declare const getAllVerificationTypes: (attributeVerificationConfig: AttributeVerificationConfig[]) => InputVerificationAttribute[];
@@ -0,0 +1,137 @@
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
+ exports.getAllVerificationTypes = exports.getAllVerificationAttributeTypeUris = exports.getVerificationType = exports.getVerificationStatus = exports.getIsVerificationAttribute = exports.VerificationStatus = void 0;
7
+ var moment_1 = __importDefault(require("moment"));
8
+ var ramda_1 = require("ramda");
9
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
10
+ var VerificationStatus;
11
+ (function (VerificationStatus) {
12
+ VerificationStatus["VALID"] = "valid";
13
+ VerificationStatus["INVALID"] = "invalid";
14
+ VerificationStatus["OUTDATED"] = "outdated";
15
+ VerificationStatus["MAYBE"] = "maybe";
16
+ VerificationStatus["ACCEPT_ALL"] = "accept_all";
17
+ })(VerificationStatus || (exports.VerificationStatus = VerificationStatus = {}));
18
+ var findValueByAttributeUri = function (attributeValue, attributeUri) {
19
+ var _a;
20
+ var entityTypeUri = (0, mdm_sdk_1.getEntityUriFromAttributeUri)(attributeUri);
21
+ var currentValueUriPath = (0, mdm_sdk_1.getAttributeTypeUriByValueUri)(attributeValue.uri, entityTypeUri);
22
+ if (!attributeUri.startsWith("".concat(currentValueUriPath, "/attributes/"))) {
23
+ return undefined;
24
+ }
25
+ var attrPath = attributeUri.replace("".concat(currentValueUriPath, "/attributes/"), '').split('/attributes/');
26
+ return ((_a = (0, mdm_sdk_1.getOvAttributeValuesByPathWithUri)(attrPath, attributeValue.value)) === null || _a === void 0 ? void 0 : _a[0]) || undefined;
27
+ };
28
+ var findAttributeConfig = function (attributeVerificationConfig, attributeType) {
29
+ return attributeVerificationConfig.find(function (config) {
30
+ return config.inputMapping.some(function (mapping) { return (0, mdm_sdk_1.getParentUri)(mapping.attribute) === attributeType.uri; });
31
+ });
32
+ };
33
+ var findMappingByVerificationAttribute = function (config, verificationAttributes) {
34
+ return config.outputMapping.find(function (mapping) { return verificationAttributes.includes(mapping.verificationAttribute); });
35
+ };
36
+ var getIsVerificationAttribute = function (attributeType, attributeVerificationConfig) {
37
+ return attributeVerificationConfig.some(function (config) {
38
+ return config.inputMapping.some(function (mapping) {
39
+ return (0, mdm_sdk_1.getParentUri)(mapping.attribute) === attributeType.uri &&
40
+ Object.keys(mdm_sdk_1.InputVerificationAttribute).includes(mapping.verificationAttribute);
41
+ });
42
+ });
43
+ };
44
+ exports.getIsVerificationAttribute = getIsVerificationAttribute;
45
+ var isStatusOutdated = function (dateValue, config) {
46
+ if ((0, ramda_1.isNil)(dateValue)) {
47
+ return null;
48
+ }
49
+ var verifDate = (0, moment_1.default)(dateValue);
50
+ if (!(verifDate === null || verifDate === void 0 ? void 0 : verifDate.isValid())) {
51
+ return null;
52
+ }
53
+ var currentDate = (0, moment_1.default)();
54
+ var maxVerificationAge = config.params.maxVerificationAge;
55
+ var ageInDays = currentDate.diff(verifDate, 'days');
56
+ return ageInDays > maxVerificationAge;
57
+ };
58
+ var getVerificationStatus = function (attributeType, attributeValue, attributeVerificationConfig) {
59
+ var config = findAttributeConfig(attributeVerificationConfig, attributeType);
60
+ if (!config) {
61
+ return null;
62
+ }
63
+ var inputMapping = config.inputMapping.find(function (mapping) { return (0, mdm_sdk_1.getParentUri)(mapping.attribute) === attributeType.uri; });
64
+ var statusMapping = findMappingByVerificationAttribute(config, [
65
+ mdm_sdk_1.OutputVerificationAttribute.Status,
66
+ mdm_sdk_1.OutputVerificationAttribute.IsValid
67
+ ]);
68
+ if (!statusMapping) {
69
+ return null;
70
+ }
71
+ var statusValue = findValueByAttributeUri(attributeValue, statusMapping.attribute);
72
+ var valueStatus = statusValue === null || statusValue === void 0 ? void 0 : statusValue.value;
73
+ var dateMapping = findMappingByVerificationAttribute(config, [mdm_sdk_1.OutputVerificationAttribute.VerifiedOn]);
74
+ if (!dateMapping) {
75
+ return null;
76
+ }
77
+ var dateValue = findValueByAttributeUri(attributeValue, dateMapping.attribute);
78
+ if (!dateValue || !statusValue) {
79
+ return null;
80
+ }
81
+ var verificationStatus = (function () {
82
+ switch (valueStatus) {
83
+ case 'Invalid':
84
+ case 'No':
85
+ return VerificationStatus.INVALID;
86
+ case 'Valid':
87
+ case 'Yes': {
88
+ var isStatusOutdatedResult = isStatusOutdated(dateValue === null || dateValue === void 0 ? void 0 : dateValue.value, config);
89
+ if ((0, ramda_1.isNil)(isStatusOutdatedResult)) {
90
+ return null;
91
+ }
92
+ if (isStatusOutdatedResult) {
93
+ return VerificationStatus.OUTDATED;
94
+ }
95
+ return VerificationStatus.VALID;
96
+ }
97
+ case 'Maybe':
98
+ case 'Unknown':
99
+ return VerificationStatus.MAYBE;
100
+ case 'Accept_All':
101
+ return VerificationStatus.ACCEPT_ALL;
102
+ default: {
103
+ return null;
104
+ }
105
+ }
106
+ })();
107
+ if (verificationStatus === null) {
108
+ return null;
109
+ }
110
+ return {
111
+ status: verificationStatus,
112
+ lastVerifiedTime: dateValue === null || dateValue === void 0 ? void 0 : dateValue.value,
113
+ verificationType: inputMapping.verificationAttribute
114
+ };
115
+ };
116
+ exports.getVerificationStatus = getVerificationStatus;
117
+ var getVerificationType = function (attributeType, attributeVerificationConfig) {
118
+ var _a, _b;
119
+ var config = findAttributeConfig(attributeVerificationConfig, attributeType);
120
+ return ((_b = (_a = config === null || config === void 0 ? void 0 : config.inputMapping) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.verificationAttribute) || null;
121
+ };
122
+ exports.getVerificationType = getVerificationType;
123
+ var getAllVerificationAttributeTypeUris = function (attributeVerificationConfig, entityTypeUri) {
124
+ return attributeVerificationConfig.flatMap(function (config) {
125
+ return config.inputMapping
126
+ .filter(function (mapping) { return mapping.attribute.startsWith(entityTypeUri + '/'); })
127
+ .filter(function (mapping) { return Object.keys(mdm_sdk_1.InputVerificationAttribute).includes(mapping.verificationAttribute); })
128
+ .map(function (mapping) { return (0, mdm_sdk_1.getParentUri)(mapping.attribute); });
129
+ });
130
+ };
131
+ exports.getAllVerificationAttributeTypeUris = getAllVerificationAttributeTypeUris;
132
+ var getAllVerificationTypes = function (attributeVerificationConfig) {
133
+ return (0, ramda_1.uniq)(attributeVerificationConfig.flatMap(function (config) {
134
+ return config.inputMapping.map(function (mapping) { return mapping.verificationAttribute; });
135
+ }));
136
+ };
137
+ exports.getAllVerificationTypes = getAllVerificationTypes;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { AttributeType, InputVerificationAttribute, NestedAttributeValue } from '@reltio/mdm-sdk';
3
+ import { VerificationStatus } from './helpers';
4
+ type AttributesVerificationContextValue = {
5
+ isVerificationAttribute: (attributeType: AttributeType) => boolean;
6
+ getVerificationStatus: (attributeType: AttributeType, attributeValue: NestedAttributeValue) => {
7
+ status: VerificationStatus;
8
+ lastVerifiedTime: number | null;
9
+ verificationType: InputVerificationAttribute;
10
+ } | null;
11
+ getVerificationType: (attributeType: AttributeType) => InputVerificationAttribute | null;
12
+ verificationAttributeTypeUris: string[];
13
+ getAllVerificationTypes: () => InputVerificationAttribute[];
14
+ };
15
+ export declare const AttributesVerificationContext: import("@fluentui/react-context-selector").Context<AttributesVerificationContextValue>;
16
+ export declare const AttributesVerificationProvider: ({ children }: {
17
+ children: React.ReactNode;
18
+ }) => React.JSX.Element;
19
+ export {};
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.AttributesVerificationProvider = exports.AttributesVerificationContext = void 0;
27
+ var react_1 = __importStar(require("react"));
28
+ var react_context_selector_1 = require("@fluentui/react-context-selector");
29
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
30
+ var MdmModuleContext_1 = require("../MdmModuleContext");
31
+ var helpers_1 = require("./helpers");
32
+ exports.AttributesVerificationContext = (0, react_context_selector_1.createContext)(null);
33
+ var AttributesVerificationProvider = function (_a) {
34
+ var children = _a.children;
35
+ var metadata = (0, MdmModuleContext_1.useMdmMetadata)();
36
+ var currentEntity = (0, MdmModuleContext_1.useMdmEntity)();
37
+ var attributeVerificationConfig = (0, react_1.useMemo)(function () {
38
+ var _a;
39
+ var entityType = (currentEntity === null || currentEntity === void 0 ? void 0 : currentEntity.type) && metadata && (0, mdm_sdk_1.getEntityType)(metadata, currentEntity.type);
40
+ return ((_a = entityType === null || entityType === void 0 ? void 0 : entityType.cleanseConfig) === null || _a === void 0 ? void 0 : _a.attributeVerificationConfig) || [];
41
+ }, [currentEntity === null || currentEntity === void 0 ? void 0 : currentEntity.type, metadata]);
42
+ var verificationAttributeTypeUris = (0, react_1.useMemo)(function () {
43
+ return (0, helpers_1.getAllVerificationAttributeTypeUris)(attributeVerificationConfig, currentEntity === null || currentEntity === void 0 ? void 0 : currentEntity.type);
44
+ }, [attributeVerificationConfig, currentEntity === null || currentEntity === void 0 ? void 0 : currentEntity.type]);
45
+ var isVerificationAttribute = (0, react_1.useCallback)(function (attributeType) {
46
+ return (0, helpers_1.getIsVerificationAttribute)(attributeType, attributeVerificationConfig);
47
+ }, [attributeVerificationConfig]);
48
+ var getVerificationStatus = (0, react_1.useCallback)(function (attributeType, attributeValue) {
49
+ return (0, helpers_1.getVerificationStatus)(attributeType, attributeValue, attributeVerificationConfig);
50
+ }, [attributeVerificationConfig]);
51
+ var getVerificationType = (0, react_1.useCallback)(function (attributeType) {
52
+ return (0, helpers_1.getVerificationType)(attributeType, attributeVerificationConfig);
53
+ }, [attributeVerificationConfig]);
54
+ var getAllVerificationTypes = (0, react_1.useCallback)(function () {
55
+ return (0, helpers_1.getAllVerificationTypes)(attributeVerificationConfig);
56
+ }, [attributeVerificationConfig]);
57
+ var contextValue = (0, react_1.useMemo)(function () { return ({
58
+ isVerificationAttribute: isVerificationAttribute,
59
+ getVerificationStatus: getVerificationStatus,
60
+ getVerificationType: getVerificationType,
61
+ verificationAttributeTypeUris: verificationAttributeTypeUris,
62
+ getAllVerificationTypes: getAllVerificationTypes
63
+ }); }, [
64
+ isVerificationAttribute,
65
+ getVerificationStatus,
66
+ getVerificationType,
67
+ verificationAttributeTypeUris,
68
+ getAllVerificationTypes
69
+ ]);
70
+ return (react_1.default.createElement(exports.AttributesVerificationContext.Provider, { value: contextValue }, children));
71
+ };
72
+ exports.AttributesVerificationProvider = AttributesVerificationProvider;
@@ -130,6 +130,10 @@ export type MdmModuleActionsContextProps = Partial<{
130
130
  updateHiddenAttributes: (uri: string, hiddenAttributes: string[]) => void;
131
131
  resetHiddenAttributes: (uri: string) => void;
132
132
  updateControlAttributes: (controlAttributes: string[]) => void;
133
+ updateEntityAttributeValues: (payload: {
134
+ updatedEntity: Entity;
135
+ attributeTypeUris: string[];
136
+ }) => void;
133
137
  }>;
134
138
  export type MdmModuleListenersContextProps = Partial<{
135
139
  expandInvalidRelatonsListener: (callback: () => void) => (action: any) => void;
@@ -206,6 +210,10 @@ export declare const MdmModuleActionsContext: import("@fluentui/react-context-se
206
210
  updateHiddenAttributes: (uri: string, hiddenAttributes: string[]) => void;
207
211
  resetHiddenAttributes: (uri: string) => void;
208
212
  updateControlAttributes: (controlAttributes: string[]) => void;
213
+ updateEntityAttributeValues: (payload: {
214
+ updatedEntity: Entity;
215
+ attributeTypeUris: string[];
216
+ }) => void;
209
217
  }>>;
210
218
  export declare const MdmModuleValuesContext: import("@fluentui/react-context-selector").Context<Partial<{
211
219
  autoCloseInterval: number;
@@ -143,6 +143,10 @@ export declare const useMdmAction: <T extends keyof MdmModuleActionsContextProps
143
143
  updateHiddenAttributes: (uri: string, hiddenAttributes: string[]) => void;
144
144
  resetHiddenAttributes: (uri: string) => void;
145
145
  updateControlAttributes: (controlAttributes: string[]) => void;
146
+ updateEntityAttributeValues: (payload: {
147
+ updatedEntity: import("@reltio/mdm-sdk").Entity;
148
+ attributeTypeUris: string[];
149
+ }) => void;
146
150
  }>[T];
147
151
  export declare const useMdmListener: <T extends keyof MdmModuleListenersContextProps>(listener: T) => Partial<{
148
152
  expandInvalidRelatonsListener: (callback: () => void) => (action: any) => void;
@@ -8,6 +8,8 @@ var react_1 = __importDefault(require("react"));
8
8
  var ui_i18n_1 = __importDefault(require("ui-i18n"));
9
9
  var activities_1 = require("../../../utils/activities");
10
10
  var ActivitiesFactory_1 = require("../../../ActivitiesFactory");
11
+ var ErrorBoundary_1 = require("../../../../../ErrorBoundary");
12
+ var ActivityTitle_1 = require("../../../ActivityTitle");
11
13
  var styles_1 = require("./styles");
12
14
  var ActivityItem = function (_a) {
13
15
  var item = _a.item;
@@ -20,9 +22,15 @@ var ActivityItem = function (_a) {
20
22
  react_1.default.createElement("div", { className: styles.userContainer },
21
23
  react_1.default.createElement("span", { className: styles.activityUser }, item.user),
22
24
  react_1.default.createElement("span", { className: styles.date }, ui_i18n_1.default.date(item.timestamp, 'LT'))),
23
- activities.map(function (activity, index) { return (react_1.default.createElement("div", { key: index, className: styles.activityEvent }, ActivitiesFactory_1.ActivitiesFactory.getComponent({
24
- type: (0, activities_1.getActivityType)(activity),
25
- data: activity
26
- }))); }))));
25
+ activities.map(function (activity, index) {
26
+ var activityType = (0, activities_1.getActivityType)(activity);
27
+ return (react_1.default.createElement("div", { key: index, className: styles.activityEvent },
28
+ react_1.default.createElement(ErrorBoundary_1.ErrorBoundary, { error: react_1.default.createElement(react_1.default.Fragment, null,
29
+ react_1.default.createElement(ActivityTitle_1.ActivityTitle, { type: activityType }),
30
+ ui_i18n_1.default.text("Can't render activity")) }, ActivitiesFactory_1.ActivitiesFactory.getComponent({
31
+ type: activityType,
32
+ data: activity
33
+ }))));
34
+ }))));
27
35
  };
28
36
  exports.ActivityItem = ActivityItem;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const VerificationInvalidIcon: React.FC<React.SVGProps<SVGSVGElement>>;
3
+ export default VerificationInvalidIcon;
@@ -0,0 +1,22 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var react_1 = __importDefault(require("react"));
18
+ var VerificationInvalidIcon = function (props) {
19
+ return (react_1.default.createElement("svg", __assign({ width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", "data-reltio-id": "SvgVerificationInvalidIcon" }, props),
20
+ react_1.default.createElement("path", { d: "M6.66667 0C2.98 0 0 2.98 0 6.66667C0 10.3533 2.98 13.3333 6.66667 13.3333C10.3533 13.3333 13.3333 10.3533 13.3333 6.66667C13.3333 2.98 10.3533 0 6.66667 0ZM10 9.06L9.06 10L6.66667 7.60667L4.27333 10L3.33333 9.06L5.72667 6.66667L3.33333 4.27333L4.27333 3.33333L6.66667 5.72667L9.06 3.33333L10 4.27333L7.60667 6.66667L10 9.06Z", fill: "#EB5757" })));
21
+ };
22
+ exports.default = VerificationInvalidIcon;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const VerificationMaybeIcon: React.FC<React.SVGProps<SVGSVGElement>>;
3
+ export default VerificationMaybeIcon;