@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.
- package/AttributeVerificationStatus/AttributeVerificationStatus.d.ts +8 -0
- package/AttributeVerificationStatus/AttributeVerificationStatus.js +22 -0
- package/AttributeVerificationStatus/AttributeVerificationStatus.module.css.js +9 -0
- package/AttributeVerificationStatus/helpers.d.ts +8 -0
- package/AttributeVerificationStatus/helpers.js +56 -0
- package/ReadOnlyAttributesPager/components/MultiLineRenderer/MultiLineRenderer.js +8 -2
- package/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.js +10 -3
- package/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.module.css.js +9 -0
- package/VerificationButton/VerificationButton.d.ts +13 -0
- package/VerificationButton/VerificationButton.js +150 -0
- package/VerificationButton/VerificationButton.module.css.js +9 -0
- package/cjs/AttributeVerificationStatus/AttributeVerificationStatus.d.ts +8 -0
- package/cjs/AttributeVerificationStatus/AttributeVerificationStatus.js +52 -0
- package/cjs/AttributeVerificationStatus/AttributeVerificationStatus.module.css.js +9 -0
- package/cjs/AttributeVerificationStatus/helpers.d.ts +8 -0
- package/cjs/AttributeVerificationStatus/helpers.js +64 -0
- package/cjs/ReadOnlyAttributesPager/components/MultiLineRenderer/MultiLineRenderer.js +7 -1
- package/cjs/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.js +15 -8
- package/cjs/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.module.css.js +9 -0
- package/cjs/VerificationButton/VerificationButton.d.ts +13 -0
- package/cjs/VerificationButton/VerificationButton.js +180 -0
- package/cjs/VerificationButton/VerificationButton.module.css.js +9 -0
- package/cjs/contexts/AttributesVerificationContext/helpers.d.ts +17 -0
- package/cjs/contexts/AttributesVerificationContext/helpers.js +137 -0
- package/cjs/contexts/AttributesVerificationContext/index.d.ts +19 -0
- package/cjs/contexts/AttributesVerificationContext/index.js +72 -0
- package/cjs/contexts/MdmModuleContext/context.d.ts +8 -0
- package/cjs/contexts/MdmModuleContext/hooks.d.ts +4 -0
- package/cjs/features/activity-log/ActivityLog/components/ActivityItem/ActivityItem.js +12 -4
- package/cjs/icons/VerificationInvalidIcon.d.ts +3 -0
- package/cjs/icons/VerificationInvalidIcon.js +22 -0
- package/cjs/icons/VerificationMaybeIcon.d.ts +3 -0
- package/cjs/icons/VerificationMaybeIcon.js +22 -0
- package/cjs/icons/VerificationOutdatedIcon.d.ts +3 -0
- package/cjs/icons/VerificationOutdatedIcon.js +22 -0
- package/cjs/icons/VerificationValidIcon.d.ts +3 -0
- package/cjs/icons/VerificationValidIcon.js +22 -0
- package/cjs/icons/VerifyAllIcon.d.ts +3 -0
- package/cjs/icons/VerifyAllIcon.js +26 -0
- package/contexts/AttributesVerificationContext/helpers.d.ts +17 -0
- package/contexts/AttributesVerificationContext/helpers.js +126 -0
- package/contexts/AttributesVerificationContext/index.d.ts +19 -0
- package/contexts/AttributesVerificationContext/index.js +45 -0
- package/contexts/MdmModuleContext/context.d.ts +8 -0
- package/contexts/MdmModuleContext/hooks.d.ts +4 -0
- package/features/activity-log/ActivityLog/components/ActivityItem/ActivityItem.js +12 -4
- package/icons/VerificationInvalidIcon.d.ts +3 -0
- package/icons/VerificationInvalidIcon.js +17 -0
- package/icons/VerificationMaybeIcon.d.ts +3 -0
- package/icons/VerificationMaybeIcon.js +17 -0
- package/icons/VerificationOutdatedIcon.d.ts +3 -0
- package/icons/VerificationOutdatedIcon.js +17 -0
- package/icons/VerificationValidIcon.d.ts +3 -0
- package/icons/VerificationValidIcon.js +17 -0
- package/icons/VerifyAllIcon.d.ts +3 -0
- package/icons/VerifyAllIcon.js +21 -0
- package/package.json +2 -2
- package/ReadOnlyComplexAttribute/styles.d.ts +0 -1
- package/ReadOnlyComplexAttribute/styles.js +0 -22
- package/cjs/ReadOnlyComplexAttribute/styles.d.ts +0 -1
- package/cjs/ReadOnlyComplexAttribute/styles.js +0 -25
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AttributeType, NestedAttributeValue } from '@reltio/mdm-sdk';
|
|
3
|
+
type Props = {
|
|
4
|
+
attributeType: AttributeType;
|
|
5
|
+
attributeValue: NestedAttributeValue;
|
|
6
|
+
};
|
|
7
|
+
export declare const AttributeVerificationStatus: ({ attributeType, attributeValue }: Props) => React.JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { isNil } from 'ramda';
|
|
3
|
+
import classnames from 'classnames';
|
|
4
|
+
import Tooltip from '@mui/material/Tooltip';
|
|
5
|
+
import { useContextSelector } from '@fluentui/react-context-selector';
|
|
6
|
+
import { AttributesVerificationContext } from '../contexts/AttributesVerificationContext';
|
|
7
|
+
import { getIconByVerificationStatus, getTooltipTitleByVerificationStatus } from './helpers';
|
|
8
|
+
import styles from './AttributeVerificationStatus.module.css';
|
|
9
|
+
export var AttributeVerificationStatus = function (_a) {
|
|
10
|
+
var attributeType = _a.attributeType, attributeValue = _a.attributeValue;
|
|
11
|
+
var getVerificationStatus = useContextSelector(AttributesVerificationContext, function (context) { return context.getVerificationStatus; });
|
|
12
|
+
var verificationStatus = useMemo(function () { return getVerificationStatus(attributeType, attributeValue); }, [getVerificationStatus, attributeType, attributeValue]);
|
|
13
|
+
if (isNil(verificationStatus)) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
var Icon = getIconByVerificationStatus(verificationStatus.status);
|
|
17
|
+
var tooltipTitle = getTooltipTitleByVerificationStatus(verificationStatus);
|
|
18
|
+
return (React.createElement("div", { className: classnames(styles.status, styles[verificationStatus.status]), "data-reltio-id": "attribute-verification-status-".concat(verificationStatus.status) },
|
|
19
|
+
React.createElement(Tooltip, { title: tooltipTitle, placement: "bottom" },
|
|
20
|
+
React.createElement("span", { className: styles.icon },
|
|
21
|
+
React.createElement(Icon, null)))));
|
|
22
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const styles = {"status":"AttributeVerificationStatus-status--NwPR6","valid":"AttributeVerificationStatus-valid--PIGHP","invalid":"AttributeVerificationStatus-invalid--B7p6E","outdated":"AttributeVerificationStatus-outdated--l5khN","maybe":"AttributeVerificationStatus-maybe--egCRg","accept_all":"AttributeVerificationStatus-accept_all--jgMx5","icon":"AttributeVerificationStatus-icon--C8xBC"};
|
|
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 = `.AttributeVerificationStatus-status--NwPR6{height:18px;margin-left:4px;position:relative;width:14px}.AttributeVerificationStatus-status--NwPR6:after{border-radius:50%;content:"";height:6px;left:calc(50% - 3px);position:absolute;top:calc(50% - 3px);width:6px}.AttributeVerificationStatus-valid--PIGHP:after{background-color:rgba(33,150,83,.5)}.AttributeVerificationStatus-invalid--B7p6E:after{background-color:rgba(235,87,87,.5)}.AttributeVerificationStatus-accept_all--jgMx5:after,.AttributeVerificationStatus-maybe--egCRg:after,.AttributeVerificationStatus-outdated--l5khN:after{background-color:rgba(242,201,76,.5)}.AttributeVerificationStatus-icon--C8xBC{background-color:#fff;left:0;opacity:var(--verify-status-opacity);position:absolute;top:2px;z-index:1}.AttributeVerificationStatus-icon--C8xBC:hover{background-color:#fff}`;
|
|
7
|
+
head.appendChild(style);
|
|
8
|
+
}
|
|
9
|
+
export default styles;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InputVerificationAttribute } from '@reltio/mdm-sdk';
|
|
2
|
+
import { VerificationStatus } from '../contexts/AttributesVerificationContext/helpers';
|
|
3
|
+
export declare const getIconByVerificationStatus: (verificationStatus: VerificationStatus) => import("react").FC<import("react").SVGProps<SVGSVGElement>> | (() => any);
|
|
4
|
+
export declare const getTooltipTitleByVerificationStatus: ({ status, lastVerifiedTime, verificationType }: {
|
|
5
|
+
status: VerificationStatus;
|
|
6
|
+
lastVerifiedTime: number | null;
|
|
7
|
+
verificationType: InputVerificationAttribute;
|
|
8
|
+
}) => string;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import i18n from 'ui-i18n';
|
|
2
|
+
import { InputVerificationAttribute } from '@reltio/mdm-sdk';
|
|
3
|
+
import { EmptyStub } from '../EmptyStub';
|
|
4
|
+
import VerificationInvalidIcon from '../icons/VerificationInvalidIcon';
|
|
5
|
+
import VerificationValidIcon from '../icons/VerificationValidIcon';
|
|
6
|
+
import VerificationOutdatedIcon from '../icons/VerificationOutdatedIcon';
|
|
7
|
+
import VerificationMaybeIcon from '../icons/VerificationMaybeIcon';
|
|
8
|
+
import { VerificationStatus } from '../contexts/AttributesVerificationContext/helpers';
|
|
9
|
+
export var getIconByVerificationStatus = function (verificationStatus) {
|
|
10
|
+
switch (verificationStatus) {
|
|
11
|
+
case VerificationStatus.VALID:
|
|
12
|
+
return VerificationValidIcon;
|
|
13
|
+
case VerificationStatus.INVALID:
|
|
14
|
+
return VerificationInvalidIcon;
|
|
15
|
+
case VerificationStatus.OUTDATED:
|
|
16
|
+
return VerificationOutdatedIcon;
|
|
17
|
+
case VerificationStatus.MAYBE:
|
|
18
|
+
case VerificationStatus.ACCEPT_ALL:
|
|
19
|
+
return VerificationMaybeIcon;
|
|
20
|
+
default:
|
|
21
|
+
return EmptyStub;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export var getTooltipTitleByVerificationStatus = function (_a) {
|
|
25
|
+
var status = _a.status, lastVerifiedTime = _a.lastVerifiedTime, verificationType = _a.verificationType;
|
|
26
|
+
var attributeLabel = verificationType === InputVerificationAttribute.Email ? i18n.text('email') : i18n.text('phone number');
|
|
27
|
+
var date = i18n.date(lastVerifiedTime, 'L LTS');
|
|
28
|
+
switch (status) {
|
|
29
|
+
case VerificationStatus.VALID:
|
|
30
|
+
return i18n.text('The ${attributeLabel} is valid. Last verified on ${date}', {
|
|
31
|
+
attributeLabel: attributeLabel,
|
|
32
|
+
date: date
|
|
33
|
+
});
|
|
34
|
+
case VerificationStatus.INVALID:
|
|
35
|
+
return i18n.text('The ${attributeLabel} is invalid. Last verified on ${date}', {
|
|
36
|
+
attributeLabel: attributeLabel,
|
|
37
|
+
date: date
|
|
38
|
+
});
|
|
39
|
+
case VerificationStatus.OUTDATED:
|
|
40
|
+
return i18n.text('The verification for this has expired. It was valid when last verified on ${date}', {
|
|
41
|
+
date: date
|
|
42
|
+
});
|
|
43
|
+
case VerificationStatus.MAYBE:
|
|
44
|
+
return i18n.text('The ${attributeLabel} may be invalid. Last verified on ${date}', {
|
|
45
|
+
attributeLabel: attributeLabel,
|
|
46
|
+
date: date
|
|
47
|
+
});
|
|
48
|
+
case VerificationStatus.ACCEPT_ALL:
|
|
49
|
+
return i18n.text('The ${attributeLabel} may be valid. Last verified on ${date}', {
|
|
50
|
+
attributeLabel: attributeLabel,
|
|
51
|
+
date: date
|
|
52
|
+
});
|
|
53
|
+
default:
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useMemo, useState } from 'react';
|
|
2
|
-
import { min } from 'ramda';
|
|
2
|
+
import { min, F } from 'ramda';
|
|
3
3
|
import classnames from 'classnames';
|
|
4
|
+
import { useContextSelector } from '@fluentui/react-context-selector';
|
|
4
5
|
import { checkHasMasking } from '@reltio/mdm-sdk';
|
|
5
6
|
import { ReadOnlyAttribute } from '../../../ReadOnlyAttributesFactory';
|
|
6
7
|
import { AttributeTitle } from '../../../AttributeTitle';
|
|
@@ -10,11 +11,14 @@ import { OvIcon } from '../../../OvIcon';
|
|
|
10
11
|
import { DescriptionIcon } from '../../../DescriptionIcon';
|
|
11
12
|
import { ControlAttributeIcon } from '../../../ControlAttributeIcon';
|
|
12
13
|
import { useMdmControlAttributes, useMdmMetadata, useMdmShowMasking } from '../../../contexts/MdmModuleContext';
|
|
14
|
+
import { AttributesVerificationContext } from '../../../contexts/AttributesVerificationContext';
|
|
15
|
+
import { VerificationButton } from '../../../VerificationButton/VerificationButton';
|
|
13
16
|
import { useMultiLineStyles } from '../../styles';
|
|
14
17
|
export var MultiLineRenderer = function (_a) {
|
|
15
18
|
var max = _a.max, values = _a.values, nonVisibleValues = _a.nonVisibleValues, totalVisibleValues = _a.totalVisibleValues, attributeType = _a.attributeType, parentUri = _a.parentUri, requestNextPageOfAttributeValues = _a.requestNextPageOfAttributeValues, showNonOv = _a.showNonOv, totalNonVisibleValues = _a.totalNonVisibleValues, classes = _a.classes;
|
|
16
19
|
var styles = useMultiLineStyles();
|
|
17
20
|
var _b = useState(max), visibleValuesCount = _b[0], setVisibleValuesCount = _b[1];
|
|
21
|
+
var isVerificationAttribute = useContextSelector(AttributesVerificationContext, function (context) { return (context === null || context === void 0 ? void 0 : context.isVerificationAttribute) || F; });
|
|
18
22
|
var controlAttributes = useMdmControlAttributes();
|
|
19
23
|
var isControlAttribute = useMemo(function () { return controlAttributes.includes(attributeType.uri); }, [controlAttributes, attributeType.uri]);
|
|
20
24
|
var hasPaging = max < totalVisibleValues;
|
|
@@ -45,12 +49,14 @@ export var MultiLineRenderer = function (_a) {
|
|
|
45
49
|
};
|
|
46
50
|
var shownValues = values.slice(0, visibleValuesCount);
|
|
47
51
|
var hiddenValuesCount = totalVisibleValues - visibleValuesCount;
|
|
52
|
+
var showVerificationButton = isVerificationAttribute(attributeType);
|
|
48
53
|
return (React.createElement("div", { "data-reltio-id": "multi-line-renderer", className: styles.wrapper },
|
|
49
54
|
React.createElement("div", { className: styles.titleRow },
|
|
50
55
|
React.createElement(AttributeTitle, { label: label, className: classnames(styles.title, classes === null || classes === void 0 ? void 0 : classes.title), "data-reltio-id": "reltio-attribute-label" }),
|
|
51
56
|
React.createElement(DescriptionIcon, { description: description }),
|
|
52
57
|
isControlAttribute && React.createElement(ControlAttributeIcon, null),
|
|
53
|
-
React.createElement(OvIcon, { nonOvValues: nonVisibleValues, attributeType: attributeType, className: styles.ovIcon, nonOvTotal: totalNonVisibleValues })
|
|
58
|
+
React.createElement(OvIcon, { nonOvValues: nonVisibleValues, attributeType: attributeType, className: styles.ovIcon, nonOvTotal: totalNonVisibleValues }),
|
|
59
|
+
showVerificationButton && React.createElement(VerificationButton, { attributeType: attributeType })),
|
|
54
60
|
React.createElement("div", { className: styles.attributes }, shownValues.map(function (value) { return (React.createElement(ReadOnlyAttribute, { key: value.uri, className: classnames(styles.attribute, classes === null || classes === void 0 ? void 0 : classes.content), attributeValue: value, attributeType: attributeType, showNonOv: showNonOv, classes: classes })); })),
|
|
55
61
|
showMore && (React.createElement(ShowMore, { moreNumber: min(max, hiddenValuesCount), valueNumber: hiddenValuesCount, onClick: onShowMore })),
|
|
56
62
|
showLess && React.createElement(ShowLess, { onClick: onShowLess })));
|
|
@@ -10,19 +10,22 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
12
|
import React, { useContext, useEffect, useMemo, useState } from 'react';
|
|
13
|
+
import { F } from 'ramda';
|
|
13
14
|
import classnames from 'classnames';
|
|
15
|
+
import { useContextSelector } from '@fluentui/react-context-selector';
|
|
14
16
|
import { isAnalyticAttribute, createRelatedObjectUris, isOv, isSpecialAttribute, getObjectTypeByAttributeUri } from '@reltio/mdm-sdk';
|
|
15
17
|
import Typography from '@mui/material/Typography';
|
|
16
18
|
import { ReadOnlyAttributesList } from '../ReadOnlyAttributesList';
|
|
17
19
|
import { ArrowExpandButton } from '../ArrowExpandButton';
|
|
18
20
|
import { CommentsContainer } from '../CommentsContainer';
|
|
19
21
|
import { HighlightedValuesContext } from '../contexts/HighlightedValuesContext';
|
|
22
|
+
import { AttributesVerificationContext } from '../contexts/AttributesVerificationContext';
|
|
20
23
|
import { COMMENTS_CONTAINER_VISIBILITY_AREA } from '../constants/classnames';
|
|
21
|
-
import {
|
|
24
|
+
import { AttributeVerificationStatus } from '../AttributeVerificationStatus/AttributeVerificationStatus';
|
|
25
|
+
import styles from './ReadOnlyComplexAttribute.module.css';
|
|
22
26
|
export var ReadOnlyComplexAttribute = function (_a) {
|
|
23
27
|
var _b;
|
|
24
28
|
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;
|
|
25
|
-
var styles = useStyles();
|
|
26
29
|
var uri = attributeValue.uri;
|
|
27
30
|
var _d = useState(false), expanded = _d[0], setExpanded = _d[1];
|
|
28
31
|
var _e = useContext(HighlightedValuesContext), _f = _e.highlightedValuesUris, highlightedValuesUris = _f === void 0 ? [] : _f, highlightedClassName = _e.highlightedClassName;
|
|
@@ -31,7 +34,9 @@ export var ReadOnlyComplexAttribute = function (_a) {
|
|
|
31
34
|
}, [expandedProp]);
|
|
32
35
|
var hasAnalyticValue = (attributeTypesList || []).some(function (attributeType) { return isAnalyticAttribute(attributeType); });
|
|
33
36
|
var attributeListEntity = useMemo(function () { return (__assign({ attributes: hasAnalyticValue ? null : attributeValue.value, analyticsAttributes: hasAnalyticValue ? attributeValue.value : null }, (isSpecialAttribute(attributeType) ? attributeValue.value : {}))); }, [attributeValue, hasAnalyticValue, attributeType]);
|
|
37
|
+
var isVerificationAttribute = useContextSelector(AttributesVerificationContext, function (context) { return (context === null || context === void 0 ? void 0 : context.isVerificationAttribute) || F; });
|
|
34
38
|
var objectType = getObjectTypeByAttributeUri(attributeValue.uri);
|
|
39
|
+
var showVerificationStatus = isVerificationAttribute(attributeType);
|
|
35
40
|
return (React.createElement("div", { className: styles.complexContainer },
|
|
36
41
|
React.createElement("div", { className: classnames(styles.labelContainer, COMMENTS_CONTAINER_VISIBILITY_AREA) },
|
|
37
42
|
React.createElement(ArrowExpandButton, { onClick: function () { return setExpanded(function (value) { return !value; }); }, expanded: expanded }),
|
|
@@ -39,7 +44,9 @@ export var ReadOnlyComplexAttribute = function (_a) {
|
|
|
39
44
|
React.createElement(Typography, { component: "span", variant: "body2", classes: { body2: styles.label }, className: classnames((_b = {},
|
|
40
45
|
_b[highlightedClassName] = highlightedValuesUris.includes(attributeValue.uri),
|
|
41
46
|
_b[styles.ovFalse] = !isOv(attributeValue),
|
|
42
|
-
_b)), "data-reltio-id": "reltio-attribute-complex-label" },
|
|
47
|
+
_b)), "data-reltio-id": "reltio-attribute-complex-label" },
|
|
48
|
+
label,
|
|
49
|
+
showVerificationStatus && (React.createElement(AttributeVerificationStatus, { attributeType: attributeType, attributeValue: attributeValue }))),
|
|
43
50
|
React.createElement("div", { className: styles.spacer }),
|
|
44
51
|
RightSlot && React.createElement(RightSlot, { attributeType: attributeType, attributeValue: attributeValue }),
|
|
45
52
|
React.createElement(CommentsContainer, { uri: attributeValue.uri, relatedObjectUris: createRelatedObjectUris(objectType, {
|
|
@@ -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
|
+
export default 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,150 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
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);
|
|
12
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
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;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
var _a, _b;
|
|
38
|
+
import React, { useCallback, useMemo, useState } from 'react';
|
|
39
|
+
import { isNil } from 'ramda';
|
|
40
|
+
import classnames from 'classnames';
|
|
41
|
+
import { useContextSelector } from '@fluentui/react-context-selector';
|
|
42
|
+
import CircularProgress from '@mui/material/CircularProgress';
|
|
43
|
+
import i18n from 'ui-i18n';
|
|
44
|
+
import VerificationIcon from '../icons/VerifyAllIcon';
|
|
45
|
+
import { useSafePromise } from '../hooks/useSafePromise';
|
|
46
|
+
import { InputVerificationAttribute, verifyAttributes, VerifyAttributesClientFilter } from '@reltio/mdm-sdk';
|
|
47
|
+
import { useMdmEntityUri, useMdmAction } from '../contexts/MdmModuleContext';
|
|
48
|
+
import { AttributesVerificationContext } from '../contexts/AttributesVerificationContext';
|
|
49
|
+
import { showDefaultErrorMessage } from '../helpers/errors';
|
|
50
|
+
import { useCssVariableStyles } from '../hooks/useCssVariableStyles';
|
|
51
|
+
import { SmallIconButtonWithTooltip } from '../SmallIconButton';
|
|
52
|
+
import styles from './VerificationButton.module.css';
|
|
53
|
+
export var VerificationButtonSize;
|
|
54
|
+
(function (VerificationButtonSize) {
|
|
55
|
+
VerificationButtonSize["SMALL"] = "small";
|
|
56
|
+
VerificationButtonSize["MEDIUM"] = "medium";
|
|
57
|
+
})(VerificationButtonSize || (VerificationButtonSize = {}));
|
|
58
|
+
var ICON_SIZES = (_a = {},
|
|
59
|
+
_a[VerificationButtonSize.SMALL] = 16,
|
|
60
|
+
_a[VerificationButtonSize.MEDIUM] = 24,
|
|
61
|
+
_a);
|
|
62
|
+
var BUTTON_SIZES = (_b = {},
|
|
63
|
+
_b[VerificationButtonSize.SMALL] = 20,
|
|
64
|
+
_b[VerificationButtonSize.MEDIUM] = 36,
|
|
65
|
+
_b);
|
|
66
|
+
var getTooltipTitle = function (verificationTypes) {
|
|
67
|
+
if (verificationTypes.includes(InputVerificationAttribute.Email) &&
|
|
68
|
+
verificationTypes.includes(InputVerificationAttribute.Phone)) {
|
|
69
|
+
return i18n.text('Verify all email and phone numbers');
|
|
70
|
+
}
|
|
71
|
+
if (verificationTypes.includes(InputVerificationAttribute.Email)) {
|
|
72
|
+
return i18n.text('Verify all emails');
|
|
73
|
+
}
|
|
74
|
+
if (verificationTypes.includes(InputVerificationAttribute.Phone)) {
|
|
75
|
+
return i18n.text('Verify all phone numbers');
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
};
|
|
79
|
+
export var VerificationButton = function (_a) {
|
|
80
|
+
var attributeType = _a.attributeType, _b = _a.size, size = _b === void 0 ? VerificationButtonSize.SMALL : _b, className = _a.className;
|
|
81
|
+
var variableStyles = useCssVariableStyles({
|
|
82
|
+
'--icon-size': ICON_SIZES[size] + 'px',
|
|
83
|
+
'--button-size': BUTTON_SIZES[size] + 'px'
|
|
84
|
+
});
|
|
85
|
+
var _c = useState(false), loading = _c[0], setLoading = _c[1];
|
|
86
|
+
var entityUri = useMdmEntityUri();
|
|
87
|
+
var updateEntityAttributeValues = useMdmAction('updateEntityAttributeValues');
|
|
88
|
+
var getVerificationType = useContextSelector(AttributesVerificationContext, function (context) { return context.getVerificationType; });
|
|
89
|
+
var allVerificationTypes = useContextSelector(AttributesVerificationContext, function (context) {
|
|
90
|
+
return context.getAllVerificationTypes();
|
|
91
|
+
});
|
|
92
|
+
var verificationType = attributeType ? getVerificationType(attributeType) : null;
|
|
93
|
+
var verificationAttributeTypeUris = useContextSelector(AttributesVerificationContext, function (context) { return context.verificationAttributeTypeUris; });
|
|
94
|
+
var options = useMemo(function () {
|
|
95
|
+
if (isNil(attributeType))
|
|
96
|
+
return {};
|
|
97
|
+
var clientFilter = verificationType === InputVerificationAttribute.Email
|
|
98
|
+
? VerifyAttributesClientFilter.EmailVerifier
|
|
99
|
+
: VerifyAttributesClientFilter.PhoneVerifier;
|
|
100
|
+
return {
|
|
101
|
+
clientFilter: clientFilter
|
|
102
|
+
};
|
|
103
|
+
}, [attributeType, verificationType]);
|
|
104
|
+
var verifySafePromise = useSafePromise();
|
|
105
|
+
var handleClick = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
106
|
+
var attributeTypeUris, updatedEntity, error_1;
|
|
107
|
+
return __generator(this, function (_a) {
|
|
108
|
+
switch (_a.label) {
|
|
109
|
+
case 0:
|
|
110
|
+
attributeTypeUris = attributeType ? [attributeType.uri] : verificationAttributeTypeUris;
|
|
111
|
+
setLoading(true);
|
|
112
|
+
_a.label = 1;
|
|
113
|
+
case 1:
|
|
114
|
+
_a.trys.push([1, 3, 4, 5]);
|
|
115
|
+
return [4 /*yield*/, verifySafePromise(verifyAttributes({ entityUri: entityUri, options: options }))];
|
|
116
|
+
case 2:
|
|
117
|
+
updatedEntity = _a.sent();
|
|
118
|
+
if (updatedEntity) {
|
|
119
|
+
updateEntityAttributeValues({
|
|
120
|
+
updatedEntity: updatedEntity,
|
|
121
|
+
attributeTypeUris: attributeTypeUris
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return [3 /*break*/, 5];
|
|
125
|
+
case 3:
|
|
126
|
+
error_1 = _a.sent();
|
|
127
|
+
showDefaultErrorMessage(error_1);
|
|
128
|
+
return [3 /*break*/, 5];
|
|
129
|
+
case 4:
|
|
130
|
+
setLoading(false);
|
|
131
|
+
return [7 /*endfinally*/];
|
|
132
|
+
case 5: return [2 /*return*/];
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}); }, [
|
|
136
|
+
verifySafePromise,
|
|
137
|
+
entityUri,
|
|
138
|
+
options,
|
|
139
|
+
attributeType,
|
|
140
|
+
updateEntityAttributeValues,
|
|
141
|
+
verificationAttributeTypeUris
|
|
142
|
+
]);
|
|
143
|
+
var currentVerificationTypes = useMemo(function () {
|
|
144
|
+
if (verificationType)
|
|
145
|
+
return [verificationType];
|
|
146
|
+
return allVerificationTypes;
|
|
147
|
+
}, [verificationType, allVerificationTypes]);
|
|
148
|
+
var tooltipTitle = getTooltipTitle(currentVerificationTypes);
|
|
149
|
+
return (React.createElement("div", { className: classnames(styles.root, className), style: variableStyles }, loading ? (React.createElement(CircularProgress, { size: BUTTON_SIZES[size] })) : (React.createElement(SmallIconButtonWithTooltip, { icon: VerificationIcon, iconClassName: styles.icon, className: styles.iconButton, tooltipTitle: tooltipTitle, onClick: handleClick }))));
|
|
150
|
+
};
|
|
@@ -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
|
+
export default styles;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AttributeType, NestedAttributeValue } from '@reltio/mdm-sdk';
|
|
3
|
+
type Props = {
|
|
4
|
+
attributeType: AttributeType;
|
|
5
|
+
attributeValue: NestedAttributeValue;
|
|
6
|
+
};
|
|
7
|
+
export declare const AttributeVerificationStatus: ({ attributeType, attributeValue }: Props) => React.JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.AttributeVerificationStatus = void 0;
|
|
30
|
+
var react_1 = __importStar(require("react"));
|
|
31
|
+
var ramda_1 = require("ramda");
|
|
32
|
+
var classnames_1 = __importDefault(require("classnames"));
|
|
33
|
+
var Tooltip_1 = __importDefault(require("@mui/material/Tooltip"));
|
|
34
|
+
var react_context_selector_1 = require("@fluentui/react-context-selector");
|
|
35
|
+
var AttributesVerificationContext_1 = require("../contexts/AttributesVerificationContext");
|
|
36
|
+
var helpers_1 = require("./helpers");
|
|
37
|
+
var AttributeVerificationStatus_module_css_1 = __importDefault(require("./AttributeVerificationStatus.module.css"));
|
|
38
|
+
var AttributeVerificationStatus = function (_a) {
|
|
39
|
+
var attributeType = _a.attributeType, attributeValue = _a.attributeValue;
|
|
40
|
+
var getVerificationStatus = (0, react_context_selector_1.useContextSelector)(AttributesVerificationContext_1.AttributesVerificationContext, function (context) { return context.getVerificationStatus; });
|
|
41
|
+
var verificationStatus = (0, react_1.useMemo)(function () { return getVerificationStatus(attributeType, attributeValue); }, [getVerificationStatus, attributeType, attributeValue]);
|
|
42
|
+
if ((0, ramda_1.isNil)(verificationStatus)) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
var Icon = (0, helpers_1.getIconByVerificationStatus)(verificationStatus.status);
|
|
46
|
+
var tooltipTitle = (0, helpers_1.getTooltipTitleByVerificationStatus)(verificationStatus);
|
|
47
|
+
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(AttributeVerificationStatus_module_css_1.default.status, AttributeVerificationStatus_module_css_1.default[verificationStatus.status]), "data-reltio-id": "attribute-verification-status-".concat(verificationStatus.status) },
|
|
48
|
+
react_1.default.createElement(Tooltip_1.default, { title: tooltipTitle, placement: "bottom" },
|
|
49
|
+
react_1.default.createElement("span", { className: AttributeVerificationStatus_module_css_1.default.icon },
|
|
50
|
+
react_1.default.createElement(Icon, null)))));
|
|
51
|
+
};
|
|
52
|
+
exports.AttributeVerificationStatus = AttributeVerificationStatus;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const styles = {"status":"AttributeVerificationStatus-status--NwPR6","valid":"AttributeVerificationStatus-valid--PIGHP","invalid":"AttributeVerificationStatus-invalid--B7p6E","outdated":"AttributeVerificationStatus-outdated--l5khN","maybe":"AttributeVerificationStatus-maybe--egCRg","accept_all":"AttributeVerificationStatus-accept_all--jgMx5","icon":"AttributeVerificationStatus-icon--C8xBC"};
|
|
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 = `.AttributeVerificationStatus-status--NwPR6{height:18px;margin-left:4px;position:relative;width:14px}.AttributeVerificationStatus-status--NwPR6:after{border-radius:50%;content:"";height:6px;left:calc(50% - 3px);position:absolute;top:calc(50% - 3px);width:6px}.AttributeVerificationStatus-valid--PIGHP:after{background-color:rgba(33,150,83,.5)}.AttributeVerificationStatus-invalid--B7p6E:after{background-color:rgba(235,87,87,.5)}.AttributeVerificationStatus-accept_all--jgMx5:after,.AttributeVerificationStatus-maybe--egCRg:after,.AttributeVerificationStatus-outdated--l5khN:after{background-color:rgba(242,201,76,.5)}.AttributeVerificationStatus-icon--C8xBC{background-color:#fff;left:0;opacity:var(--verify-status-opacity);position:absolute;top:2px;z-index:1}.AttributeVerificationStatus-icon--C8xBC:hover{background-color:#fff}`;
|
|
7
|
+
head.appendChild(style);
|
|
8
|
+
}
|
|
9
|
+
module.exports = styles;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InputVerificationAttribute } from '@reltio/mdm-sdk';
|
|
2
|
+
import { VerificationStatus } from '../contexts/AttributesVerificationContext/helpers';
|
|
3
|
+
export declare const getIconByVerificationStatus: (verificationStatus: VerificationStatus) => import("react").FC<import("react").SVGProps<SVGSVGElement>> | (() => any);
|
|
4
|
+
export declare const getTooltipTitleByVerificationStatus: ({ status, lastVerifiedTime, verificationType }: {
|
|
5
|
+
status: VerificationStatus;
|
|
6
|
+
lastVerifiedTime: number | null;
|
|
7
|
+
verificationType: InputVerificationAttribute;
|
|
8
|
+
}) => string;
|
|
@@ -0,0 +1,64 @@
|
|
|
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.getTooltipTitleByVerificationStatus = exports.getIconByVerificationStatus = void 0;
|
|
7
|
+
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
8
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
9
|
+
var EmptyStub_1 = require("../EmptyStub");
|
|
10
|
+
var VerificationInvalidIcon_1 = __importDefault(require("../icons/VerificationInvalidIcon"));
|
|
11
|
+
var VerificationValidIcon_1 = __importDefault(require("../icons/VerificationValidIcon"));
|
|
12
|
+
var VerificationOutdatedIcon_1 = __importDefault(require("../icons/VerificationOutdatedIcon"));
|
|
13
|
+
var VerificationMaybeIcon_1 = __importDefault(require("../icons/VerificationMaybeIcon"));
|
|
14
|
+
var helpers_1 = require("../contexts/AttributesVerificationContext/helpers");
|
|
15
|
+
var getIconByVerificationStatus = function (verificationStatus) {
|
|
16
|
+
switch (verificationStatus) {
|
|
17
|
+
case helpers_1.VerificationStatus.VALID:
|
|
18
|
+
return VerificationValidIcon_1.default;
|
|
19
|
+
case helpers_1.VerificationStatus.INVALID:
|
|
20
|
+
return VerificationInvalidIcon_1.default;
|
|
21
|
+
case helpers_1.VerificationStatus.OUTDATED:
|
|
22
|
+
return VerificationOutdatedIcon_1.default;
|
|
23
|
+
case helpers_1.VerificationStatus.MAYBE:
|
|
24
|
+
case helpers_1.VerificationStatus.ACCEPT_ALL:
|
|
25
|
+
return VerificationMaybeIcon_1.default;
|
|
26
|
+
default:
|
|
27
|
+
return EmptyStub_1.EmptyStub;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.getIconByVerificationStatus = getIconByVerificationStatus;
|
|
31
|
+
var getTooltipTitleByVerificationStatus = function (_a) {
|
|
32
|
+
var status = _a.status, lastVerifiedTime = _a.lastVerifiedTime, verificationType = _a.verificationType;
|
|
33
|
+
var attributeLabel = verificationType === mdm_sdk_1.InputVerificationAttribute.Email ? ui_i18n_1.default.text('email') : ui_i18n_1.default.text('phone number');
|
|
34
|
+
var date = ui_i18n_1.default.date(lastVerifiedTime, 'L LTS');
|
|
35
|
+
switch (status) {
|
|
36
|
+
case helpers_1.VerificationStatus.VALID:
|
|
37
|
+
return ui_i18n_1.default.text('The ${attributeLabel} is valid. Last verified on ${date}', {
|
|
38
|
+
attributeLabel: attributeLabel,
|
|
39
|
+
date: date
|
|
40
|
+
});
|
|
41
|
+
case helpers_1.VerificationStatus.INVALID:
|
|
42
|
+
return ui_i18n_1.default.text('The ${attributeLabel} is invalid. Last verified on ${date}', {
|
|
43
|
+
attributeLabel: attributeLabel,
|
|
44
|
+
date: date
|
|
45
|
+
});
|
|
46
|
+
case helpers_1.VerificationStatus.OUTDATED:
|
|
47
|
+
return ui_i18n_1.default.text('The verification for this has expired. It was valid when last verified on ${date}', {
|
|
48
|
+
date: date
|
|
49
|
+
});
|
|
50
|
+
case helpers_1.VerificationStatus.MAYBE:
|
|
51
|
+
return ui_i18n_1.default.text('The ${attributeLabel} may be invalid. Last verified on ${date}', {
|
|
52
|
+
attributeLabel: attributeLabel,
|
|
53
|
+
date: date
|
|
54
|
+
});
|
|
55
|
+
case helpers_1.VerificationStatus.ACCEPT_ALL:
|
|
56
|
+
return ui_i18n_1.default.text('The ${attributeLabel} may be valid. Last verified on ${date}', {
|
|
57
|
+
attributeLabel: attributeLabel,
|
|
58
|
+
date: date
|
|
59
|
+
});
|
|
60
|
+
default:
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
exports.getTooltipTitleByVerificationStatus = getTooltipTitleByVerificationStatus;
|
|
@@ -30,6 +30,7 @@ exports.MultiLineRenderer = void 0;
|
|
|
30
30
|
var react_1 = __importStar(require("react"));
|
|
31
31
|
var ramda_1 = require("ramda");
|
|
32
32
|
var classnames_1 = __importDefault(require("classnames"));
|
|
33
|
+
var react_context_selector_1 = require("@fluentui/react-context-selector");
|
|
33
34
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
34
35
|
var ReadOnlyAttributesFactory_1 = require("../../../ReadOnlyAttributesFactory");
|
|
35
36
|
var AttributeTitle_1 = require("../../../AttributeTitle");
|
|
@@ -39,11 +40,14 @@ var OvIcon_1 = require("../../../OvIcon");
|
|
|
39
40
|
var DescriptionIcon_1 = require("../../../DescriptionIcon");
|
|
40
41
|
var ControlAttributeIcon_1 = require("../../../ControlAttributeIcon");
|
|
41
42
|
var MdmModuleContext_1 = require("../../../contexts/MdmModuleContext");
|
|
43
|
+
var AttributesVerificationContext_1 = require("../../../contexts/AttributesVerificationContext");
|
|
44
|
+
var VerificationButton_1 = require("../../../VerificationButton/VerificationButton");
|
|
42
45
|
var styles_1 = require("../../styles");
|
|
43
46
|
var MultiLineRenderer = function (_a) {
|
|
44
47
|
var max = _a.max, values = _a.values, nonVisibleValues = _a.nonVisibleValues, totalVisibleValues = _a.totalVisibleValues, attributeType = _a.attributeType, parentUri = _a.parentUri, requestNextPageOfAttributeValues = _a.requestNextPageOfAttributeValues, showNonOv = _a.showNonOv, totalNonVisibleValues = _a.totalNonVisibleValues, classes = _a.classes;
|
|
45
48
|
var styles = (0, styles_1.useMultiLineStyles)();
|
|
46
49
|
var _b = (0, react_1.useState)(max), visibleValuesCount = _b[0], setVisibleValuesCount = _b[1];
|
|
50
|
+
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; });
|
|
47
51
|
var controlAttributes = (0, MdmModuleContext_1.useMdmControlAttributes)();
|
|
48
52
|
var isControlAttribute = (0, react_1.useMemo)(function () { return controlAttributes.includes(attributeType.uri); }, [controlAttributes, attributeType.uri]);
|
|
49
53
|
var hasPaging = max < totalVisibleValues;
|
|
@@ -74,12 +78,14 @@ var MultiLineRenderer = function (_a) {
|
|
|
74
78
|
};
|
|
75
79
|
var shownValues = values.slice(0, visibleValuesCount);
|
|
76
80
|
var hiddenValuesCount = totalVisibleValues - visibleValuesCount;
|
|
81
|
+
var showVerificationButton = isVerificationAttribute(attributeType);
|
|
77
82
|
return (react_1.default.createElement("div", { "data-reltio-id": "multi-line-renderer", className: styles.wrapper },
|
|
78
83
|
react_1.default.createElement("div", { className: styles.titleRow },
|
|
79
84
|
react_1.default.createElement(AttributeTitle_1.AttributeTitle, { label: label, className: (0, classnames_1.default)(styles.title, classes === null || classes === void 0 ? void 0 : classes.title), "data-reltio-id": "reltio-attribute-label" }),
|
|
80
85
|
react_1.default.createElement(DescriptionIcon_1.DescriptionIcon, { description: description }),
|
|
81
86
|
isControlAttribute && react_1.default.createElement(ControlAttributeIcon_1.ControlAttributeIcon, null),
|
|
82
|
-
react_1.default.createElement(OvIcon_1.OvIcon, { nonOvValues: nonVisibleValues, attributeType: attributeType, className: styles.ovIcon, nonOvTotal: totalNonVisibleValues })
|
|
87
|
+
react_1.default.createElement(OvIcon_1.OvIcon, { nonOvValues: nonVisibleValues, attributeType: attributeType, className: styles.ovIcon, nonOvTotal: totalNonVisibleValues }),
|
|
88
|
+
showVerificationButton && react_1.default.createElement(VerificationButton_1.VerificationButton, { attributeType: attributeType })),
|
|
83
89
|
react_1.default.createElement("div", { className: styles.attributes }, shownValues.map(function (value) { return (react_1.default.createElement(ReadOnlyAttributesFactory_1.ReadOnlyAttribute, { key: value.uri, className: (0, classnames_1.default)(styles.attribute, classes === null || classes === void 0 ? void 0 : classes.content), attributeValue: value, attributeType: attributeType, showNonOv: showNonOv, classes: classes })); })),
|
|
84
90
|
showMore && (react_1.default.createElement(ShowMore_1.ShowMore, { moreNumber: (0, ramda_1.min)(max, hiddenValuesCount), valueNumber: hiddenValuesCount, onClick: onShowMore })),
|
|
85
91
|
showLess && react_1.default.createElement(ShowLess_1.ShowLess, { onClick: onShowLess })));
|