@reltio/components 1.4.808 → 1.4.812
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/components/ProfileBand/styles.d.ts +1 -1
- package/components/ReltioMap/EntityMarker/EntityMarker.d.ts +9 -0
- package/components/ReltioMap/EntityMarker/EntityMarker.js +91 -0
- package/components/ReltioMap/EntityMarker/styles.d.ts +1 -0
- package/components/ReltioMap/EntityMarker/styles.js +13 -0
- package/components/ReltioMap/MapControls/MapControlContainer/MapControlContrainer.d.ts +10 -0
- package/components/ReltioMap/MapControls/MapControlContainer/MapControlContrainer.js +28 -0
- package/components/ReltioMap/MapControls/TopCenterMapControls/TopCenterMapControls.d.ts +7 -0
- package/components/ReltioMap/MapControls/TopCenterMapControls/TopCenterMapControls.js +23 -0
- package/components/ReltioMap/MapControls/TopCenterMapControls/styles.d.ts +1 -0
- package/components/ReltioMap/MapControls/TopCenterMapControls/styles.js +27 -0
- package/components/ReltioMap/MapControls/TopRightMapControls/TopRightMapControls.d.ts +47 -0
- package/components/ReltioMap/MapControls/TopRightMapControls/TopRightMapControls.js +40 -0
- package/components/ReltioMap/MapControls/TopRightMapControls/styles.d.ts +1 -0
- package/components/ReltioMap/MapControls/TopRightMapControls/styles.js +22 -0
- package/components/ReltioMap/constants.d.ts +14 -0
- package/components/ReltioMap/constants.js +17 -0
- package/components/ReltioMap/helpers/index.d.ts +6 -0
- package/components/ReltioMap/helpers/index.js +63 -0
- package/components/ReltioMap/index.d.ts +27 -0
- package/components/ReltioMap/index.js +162 -0
- package/components/ReltioMap/styles.d.ts +1 -0
- package/components/ReltioMap/styles.js +12 -0
- package/components/ReltioMap/types.d.ts +23 -0
- package/components/ReltioMap/types.js +2 -0
- package/components/attributes/PivotingAttributes/PivotingTooltipContent.js +3 -1
- package/components/attributes/editMode/AttributesList/AttributesList.js +1 -1
- package/components/attributes/editMode/AttributesList/helpers.d.ts +1 -2
- package/components/attributes/editMode/AttributesList/helpers.js +1 -20
- package/components/attributes/editMode/AttributesPager/AttributeRenderer.js +4 -3
- package/components/attributes/editMode/AttributesPager/index.d.ts +4 -2
- package/components/attributes/editMode/AttributesPager/index.js +11 -20
- package/components/attributes/editMode/ComplexAttribute/ComplexAttribute.d.ts +3 -1
- package/components/attributes/editMode/ComplexAttribute/ComplexAttribute.js +19 -5
- package/components/attributes/editMode/ComplexAttribute/styles.d.ts +1 -1
- package/components/attributes/editMode/ComplexAttribute/styles.js +10 -2
- package/components/attributes/editMode/NestedAttribute/NestedAttribute.d.ts +1 -0
- package/components/attributes/editMode/ReferenceAttribute/ReferenceAttribute.d.ts +1 -0
- package/components/attributes/editMode/ReferenceAttribute/index.d.ts +1 -0
- package/components/attributes/editMode/SimpleAttributeEditor/SimpleAttributeEditor.js +15 -4
- package/components/attributes/editMode/SimpleAttributeEditor/styles.d.ts +1 -1
- package/components/attributes/editMode/SimpleAttributeEditor/styles.js +8 -0
- package/components/attributes/inline/ComplexAttribute/ComplexAttribute.js +1 -1
- package/components/attributes/readMode/AttributesPager/index.d.ts +3 -1
- package/components/attributes/readMode/AttributesPager/index.js +26 -2
- package/components/attributes/readMode/NestedAttribute/NestedAttribute.d.ts +1 -0
- package/components/attributes/readMode/ReferenceAttribute/ReferenceAttribute.d.ts +1 -0
- package/components/attributes/readMode/ReferenceAttribute/index.d.ts +1 -0
- package/components/crosswalks/CrosswalkAttributes/styles.js +3 -2
- package/components/crosswalks/CrosswalkEditor/CrosswalkEditor.d.ts +2 -1
- package/components/crosswalks/CrosswalkEditor/CrosswalkEditor.js +2 -2
- package/components/crosswalks/CrosswalkEditor/styles.d.ts +1 -1
- package/components/crosswalks/CrosswalkEditor/styles.js +0 -4
- package/components/crosswalks/hooks/useCrosswalkActions.d.ts +12 -0
- package/components/crosswalks/hooks/useCrosswalkActions.js +75 -0
- package/components/crosswalks/index.d.ts +2 -1
- package/components/crosswalks/index.js +3 -1
- package/components/crosswalks/types/AddCrosswalkEvent.d.ts +6 -0
- package/components/crosswalks/types/AddCrosswalkEvent.js +2 -0
- package/components/crosswalks/types/DeleteCrosswalkEvent.d.ts +4 -0
- package/components/crosswalks/types/DeleteCrosswalkEvent.js +2 -0
- package/components/crosswalks/types/EditCrosswalkEvent.d.ts +6 -0
- package/components/crosswalks/types/EditCrosswalkEvent.js +2 -0
- package/components/crosswalks/types/index.d.ts +3 -0
- package/components/index.d.ts +5 -1
- package/components/index.js +10 -3
- package/constants/index.d.ts +1 -0
- package/constants/index.js +5 -1
- package/constants/map.d.ts +14 -0
- package/constants/map.js +17 -0
- package/contexts/EntityMarkerContext/index.d.ts +6 -0
- package/contexts/EntityMarkerContext/index.js +9 -0
- package/contexts/index.d.ts +1 -0
- package/contexts/index.js +3 -1
- package/hooks/useRelationsLoader.js +3 -1
- package/package.json +3 -3
|
@@ -0,0 +1,162 @@
|
|
|
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
+
if (mod && mod.__esModule) return mod;
|
|
27
|
+
var result = {};
|
|
28
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
+
__setModuleDefault(result, mod);
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
33
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
34
|
+
};
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ReltioMap = void 0;
|
|
37
|
+
var react_1 = __importStar(require("react"));
|
|
38
|
+
var ramda_1 = require("ramda");
|
|
39
|
+
var api_1 = require("@react-google-maps/api");
|
|
40
|
+
var MapControlContrainer_1 = require("./MapControls/MapControlContainer/MapControlContrainer");
|
|
41
|
+
var TopRightMapControls_1 = require("./MapControls/TopRightMapControls/TopRightMapControls");
|
|
42
|
+
var TopCenterMapControls_1 = require("./MapControls/TopCenterMapControls/TopCenterMapControls");
|
|
43
|
+
var helpers_1 = require("./helpers");
|
|
44
|
+
var EntityMarker_1 = __importDefault(require("./EntityMarker/EntityMarker"));
|
|
45
|
+
var constants_1 = require("../../constants");
|
|
46
|
+
var styles_1 = require("./styles");
|
|
47
|
+
var hooks_1 = require("../../hooks");
|
|
48
|
+
var ON_MAP_MOVE_DEBOUNCE_INTERVAL = 1000;
|
|
49
|
+
var libraries = ['drawing'];
|
|
50
|
+
var useFitMapBounds = function (_a) {
|
|
51
|
+
var markers = _a.markers, activeOverlay = _a.activeOverlay, isSearchOnMapMove = _a.isSearchOnMapMove, map = _a.map;
|
|
52
|
+
var prevMarkers = hooks_1.usePrevious(markers);
|
|
53
|
+
var prevActiveOverlay = hooks_1.usePrevious(activeOverlay);
|
|
54
|
+
var apiIsLoaded = map && window.google;
|
|
55
|
+
react_1.useEffect(function () {
|
|
56
|
+
if (apiIsLoaded && !isSearchOnMapMove && markers.length && markers !== prevMarkers) {
|
|
57
|
+
helpers_1.fitMapBoundsForMarkers(markers, map, activeOverlay);
|
|
58
|
+
}
|
|
59
|
+
else if (apiIsLoaded && activeOverlay && activeOverlay !== prevActiveOverlay) {
|
|
60
|
+
helpers_1.fitMapBoundsForOverlay(map, activeOverlay);
|
|
61
|
+
}
|
|
62
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
63
|
+
}, [map, markers, activeOverlay]);
|
|
64
|
+
};
|
|
65
|
+
var ReltioMap = function (_a) {
|
|
66
|
+
var _b = _a.markers, markers = _b === void 0 ? [] : _b, mapKey = _a.mapKey, defaultZoom = _a.defaultZoom, defaultCenter = _a.defaultCenter, loadingElement = _a.loadingElement, isSearchOnMapMove = _a.isSearchOnMapMove, isSearchEnabled = _a.isSearchEnabled, activeOverlay = _a.activeOverlay, overlayOptions = _a.overlayOptions, _c = _a.drawingModes, drawingModes = _c === void 0 ? [] : _c, markerClusterer = _a.markerClusterer, markerClustererOptions = _a.markerClustererOptions, mapContainerClassName = _a.mapContainerClassName, onMapBoundsChanged = _a.onMapBoundsChanged, onOverlayUpdated = _a.onOverlayUpdated, onMarkerClicked = _a.onMarkerClicked;
|
|
67
|
+
var styles = styles_1.useStyles();
|
|
68
|
+
var _d = api_1.useJsApiLoader({
|
|
69
|
+
googleMapsApiKey: mapKey,
|
|
70
|
+
libraries: libraries
|
|
71
|
+
}), isLoaded = _d.isLoaded, loadError = _d.loadError;
|
|
72
|
+
var mapMoveEndTimer = react_1.useRef(null);
|
|
73
|
+
var _e = react_1.useState(null), map = _e[0], setMap = _e[1];
|
|
74
|
+
var _f = react_1.useState(null), polygon = _f[0], setPolygon = _f[1];
|
|
75
|
+
var _g = react_1.useState(null), drawingMode = _g[0], setDrawingMode = _g[1];
|
|
76
|
+
useFitMapBounds({ markers: markers, activeOverlay: activeOverlay, map: map, isSearchOnMapMove: isSearchOnMapMove });
|
|
77
|
+
var allOverlayOptions = react_1.useMemo(function () { return (__assign(__assign({}, constants_1.DEFAULT_OVERLAY_OPTIONS), (overlayOptions || {}))); }, [overlayOptions]);
|
|
78
|
+
var handleChangeIsSearchOnMapMove = react_1.useCallback(function (isSearchOnMapMove) {
|
|
79
|
+
onMapBoundsChanged(isSearchOnMapMove ? helpers_1.getMapBoundsPolygon(map) : null);
|
|
80
|
+
setDrawingMode(null);
|
|
81
|
+
clearTimeout(mapMoveEndTimer.current);
|
|
82
|
+
}, [map, onMapBoundsChanged]);
|
|
83
|
+
var handleMapMoveStart = react_1.useCallback(function () {
|
|
84
|
+
clearTimeout(mapMoveEndTimer.current);
|
|
85
|
+
}, []);
|
|
86
|
+
var handleMapMoveEnd = react_1.useCallback(function () {
|
|
87
|
+
if (isSearchOnMapMove) {
|
|
88
|
+
onMapBoundsChanged(helpers_1.getMapBoundsPolygon(map));
|
|
89
|
+
}
|
|
90
|
+
}, [isSearchOnMapMove, map, onMapBoundsChanged]);
|
|
91
|
+
var handleMapIdle = react_1.useCallback(function () {
|
|
92
|
+
if (isSearchOnMapMove) {
|
|
93
|
+
clearTimeout(mapMoveEndTimer.current);
|
|
94
|
+
mapMoveEndTimer.current = setTimeout(handleMapMoveEnd, ON_MAP_MOVE_DEBOUNCE_INTERVAL);
|
|
95
|
+
}
|
|
96
|
+
}, [handleMapMoveEnd, isSearchOnMapMove]);
|
|
97
|
+
var handleOverlayChange = react_1.useCallback(function (e, propOverlay) {
|
|
98
|
+
var _a;
|
|
99
|
+
var stateOverlay = propOverlay ||
|
|
100
|
+
(polygon && {
|
|
101
|
+
type: constants_1.MAP_DRAWING_MODES.POLYGON,
|
|
102
|
+
overlay: polygon
|
|
103
|
+
});
|
|
104
|
+
if (!ramda_1.isEmpty(stateOverlay) && typeof onOverlayUpdated === 'function') {
|
|
105
|
+
var overlay_1 = stateOverlay.overlay, type = stateOverlay.type;
|
|
106
|
+
var typeActions = (_a = {},
|
|
107
|
+
_a[constants_1.MAP_DRAWING_MODES.POLYGON] = function () {
|
|
108
|
+
return overlay_1
|
|
109
|
+
.getPath()
|
|
110
|
+
.getArray()
|
|
111
|
+
.map(function (latlng) { return [latlng.lat(), latlng.lng()]; });
|
|
112
|
+
},
|
|
113
|
+
_a[constants_1.MAP_DRAWING_MODES.CIRCLE] = function () {
|
|
114
|
+
return { radius: overlay_1.getRadius() / 1000, center: overlay_1.getCenter() };
|
|
115
|
+
},
|
|
116
|
+
_a);
|
|
117
|
+
var data = typeActions[type] && typeActions[type]();
|
|
118
|
+
data && onOverlayUpdated({ data: data, type: type });
|
|
119
|
+
}
|
|
120
|
+
}, [onOverlayUpdated, polygon]);
|
|
121
|
+
var handleOverlayComplete = react_1.useCallback(function (type) { return function (overlay) {
|
|
122
|
+
handleOverlayChange(null, { type: type, overlay: overlay });
|
|
123
|
+
overlay.setMap(null);
|
|
124
|
+
setDrawingMode(null);
|
|
125
|
+
}; }, [handleOverlayChange]);
|
|
126
|
+
var handleClearOverlay = react_1.useCallback(function () {
|
|
127
|
+
onOverlayUpdated(null);
|
|
128
|
+
}, [onOverlayUpdated]);
|
|
129
|
+
var renderMarkers = function (clusterer) {
|
|
130
|
+
return markers
|
|
131
|
+
.filter(ramda_1.prop('point'))
|
|
132
|
+
.map(function (marker) { return (react_1.default.createElement(EntityMarker_1.default, { key: marker.id, marker: marker, clusterer: clusterer, onClick: onMarkerClicked })); });
|
|
133
|
+
};
|
|
134
|
+
var renderMarkerClusterer = function (options) {
|
|
135
|
+
return react_1.default.createElement(api_1.MarkerClusterer, { options: options }, renderMarkers);
|
|
136
|
+
};
|
|
137
|
+
if (loadError) {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
if (!isLoaded) {
|
|
141
|
+
return loadingElement;
|
|
142
|
+
}
|
|
143
|
+
return (react_1.default.createElement(api_1.GoogleMap, { mapTypeId: window.google.maps.MapTypeId.ROADMAP, options: {
|
|
144
|
+
mapTypeControl: false,
|
|
145
|
+
streetViewControl: false,
|
|
146
|
+
fullscreenControl: false
|
|
147
|
+
}, onLoad: setMap, zoom: defaultZoom, center: defaultCenter, onZoomChanged: handleMapMoveStart, onDragStart: handleMapMoveStart, onIdle: handleMapIdle, mapContainerClassName: mapContainerClassName },
|
|
148
|
+
map && isSearchEnabled && Boolean(drawingModes.length) && (react_1.default.createElement(MapControlContrainer_1.MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_RIGHT, map: map },
|
|
149
|
+
react_1.default.createElement(TopRightMapControls_1.TopRightMapControls, { hasActiveOverlay: !!activeOverlay, drawingModes: drawingModes, drawingMode: drawingMode, onDrawingModeChanged: setDrawingMode, onClearOverlay: handleClearOverlay }))),
|
|
150
|
+
map && isSearchEnabled && (react_1.default.createElement(MapControlContrainer_1.MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_CENTER, map: map },
|
|
151
|
+
react_1.default.createElement(TopCenterMapControls_1.TopCenterMapControls, { onChangeIsSearchOnMapMove: handleChangeIsSearchOnMapMove, isSearchOnMapMove: isSearchOnMapMove }))),
|
|
152
|
+
markerClusterer ? renderMarkerClusterer(markerClustererOptions) : renderMarkers(),
|
|
153
|
+
!helpers_1.getDrawingMode(drawingMode) &&
|
|
154
|
+
activeOverlay &&
|
|
155
|
+
ramda_1.propEq('type', constants_1.MAP_DRAWING_MODES.POLYGON, activeOverlay) && (react_1.default.createElement(api_1.Polygon, { onLoad: setPolygon, path: activeOverlay.path, editable: true, options: allOverlayOptions, onMouseUp: handleOverlayChange, onDragEnd: handleOverlayChange })),
|
|
156
|
+
isSearchEnabled && Boolean(drawingModes.length) && (react_1.default.createElement(api_1.DrawingManager, { onPolygonComplete: handleOverlayComplete(constants_1.MAP_DRAWING_MODES.POLYGON), onCircleComplete: handleOverlayComplete(constants_1.MAP_DRAWING_MODES.CIRCLE), drawingMode: helpers_1.getDrawingMode(drawingMode), options: {
|
|
157
|
+
drawingControl: false,
|
|
158
|
+
circleOptions: allOverlayOptions,
|
|
159
|
+
polygonOptions: allOverlayOptions
|
|
160
|
+
} }))));
|
|
161
|
+
};
|
|
162
|
+
exports.ReltioMap = ReltioMap;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"mapControlContainer">;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useStyles = void 0;
|
|
4
|
+
var styles_1 = require("@material-ui/core/styles");
|
|
5
|
+
exports.useStyles = styles_1.makeStyles({
|
|
6
|
+
mapControlContainer: {
|
|
7
|
+
borderRadius: '2px',
|
|
8
|
+
backgroundColor: '#FFFFFF',
|
|
9
|
+
boxShadow: '0 1px 3px 0 rgba(0,0,0,0.15)',
|
|
10
|
+
margin: '10px'
|
|
11
|
+
}
|
|
12
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Entity } from '@reltio/mdm-sdk';
|
|
2
|
+
export declare type DrawingMode = 'circle' | 'polygon';
|
|
3
|
+
export declare type DrawingModes = DrawingMode[];
|
|
4
|
+
export declare type EntityMarker = {
|
|
5
|
+
entity: Entity;
|
|
6
|
+
id: string;
|
|
7
|
+
label: string;
|
|
8
|
+
point: {
|
|
9
|
+
lat: number;
|
|
10
|
+
lng: number;
|
|
11
|
+
};
|
|
12
|
+
visible?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare type OverlayPath = Array<{
|
|
15
|
+
lat: number;
|
|
16
|
+
lng: number;
|
|
17
|
+
}>;
|
|
18
|
+
export declare type Overlay = {
|
|
19
|
+
path: OverlayPath;
|
|
20
|
+
type: string;
|
|
21
|
+
};
|
|
22
|
+
export declare type MapInstance = any;
|
|
23
|
+
export declare type MapBounds = [number, number][];
|
|
@@ -43,19 +43,21 @@ var EntityAvatar_1 = __importDefault(require("../../EntityAvatar/EntityAvatar"))
|
|
|
43
43
|
var EntityUriLink_1 = __importDefault(require("../../EntityUriLink/EntityUriLink"));
|
|
44
44
|
var styles_1 = require("./styles");
|
|
45
45
|
var helpers_1 = require("./helpers");
|
|
46
|
+
var hooks_1 = require("../../../hooks");
|
|
46
47
|
var MAX_ENTITIES_PIVOTING_TOOLTIP = 6;
|
|
47
48
|
var PivotingTooltipContent = function (_a) {
|
|
48
49
|
var value = _a.value, attributeType = _a.attributeType, _b = _a.config, config = _b === void 0 ? {} : _b;
|
|
49
50
|
var _c = react_1.useState([]), entities = _c[0], setEntities = _c[1];
|
|
50
51
|
var _d = react_1.useState(0), total = _d[0], setTotal = _d[1];
|
|
51
52
|
var entity = react_redux_1.useSelector(mdm_module_1.default.selectors.getEntity) || {};
|
|
53
|
+
var safePromise = hooks_1.useSafePromise();
|
|
52
54
|
var styles = styles_1.useStyles();
|
|
53
55
|
var globalSearchRequestOptions = react_redux_1.useSelector(mdm_module_1.default.selectors.getGlobalSearchRequestOptions) || {};
|
|
54
56
|
var entityType = config.entityType || entity.type;
|
|
55
57
|
react_1.useEffect(function () {
|
|
56
58
|
var filters = helpers_1.getParamsFilteringEntities(value, attributeType, entityType);
|
|
57
59
|
var options = __assign({ max: MAX_ENTITIES_PIVOTING_TOOLTIP }, globalSearchRequestOptions);
|
|
58
|
-
Promise.all([mdm_sdk_1.getFilteredEntities(filters, options), mdm_sdk_1.getTotals(filters, options)])
|
|
60
|
+
safePromise(Promise.all([mdm_sdk_1.getFilteredEntities(filters, options), mdm_sdk_1.getTotals(filters, options)]))
|
|
59
61
|
.then(function (results) {
|
|
60
62
|
var entities = results[0], total = results[1].total;
|
|
61
63
|
setEntities(Array.isArray(entities) ? entities : []);
|
|
@@ -49,7 +49,7 @@ var AttributesList = function (_a) {
|
|
|
49
49
|
var _c = entity.attributes, attributes = _c === void 0 ? {} : _c;
|
|
50
50
|
var creatableAttrTypes = react_1.useMemo(function () { return mdm_sdk_1.getCreatableAttributeTypes(mode, attrTypes); }, [attrTypes, mode]);
|
|
51
51
|
var moreAttrTypes = helpers_1.getMoreAttrTypes(creatableAttrTypes, entity);
|
|
52
|
-
var pagersData = react_1.useMemo(function () { return
|
|
52
|
+
var pagersData = react_1.useMemo(function () { return mdm_sdk_1.getAttributesListForEditMode(attrTypes, mode, entity, showEmptyEditors); }, [
|
|
53
53
|
attrTypes,
|
|
54
54
|
mode,
|
|
55
55
|
entity,
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { AttributeType, Entity
|
|
2
|
-
export declare const getAttributesListForEditMode: (attrTypes: AttributeType[], mode: Mode, entity: Entity, showEmptyEditors: boolean) => any;
|
|
1
|
+
import { AttributeType, Entity } from '@reltio/mdm-sdk';
|
|
3
2
|
export declare const getMoreAttrTypes: (attrTypes: AttributeType[], entity: Entity) => AttributeType[];
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMoreAttrTypes =
|
|
3
|
+
exports.getMoreAttrTypes = void 0;
|
|
4
4
|
var ramda_1 = require("ramda");
|
|
5
5
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
6
|
-
var getCreatableAttributeTypesAndAnaliticsAttributes = ramda_1.curry(function (mode, attrTypes) {
|
|
7
|
-
return ramda_1.pipe(ramda_1.defaultTo([]), mdm_sdk_1.filterOutHiddenAttributes, ramda_1.filter(function (attributeType) { return mdm_sdk_1.checkMetadataForCreate(mode, attributeType); }))(attrTypes);
|
|
8
|
-
});
|
|
9
6
|
var getSource = function (attrType, entity) {
|
|
10
7
|
var _a = entity.attributes, attributes = _a === void 0 ? {} : _a, _b = entity.analyticsAttributes, analyticsAttributes = _b === void 0 ? {} : _b;
|
|
11
8
|
return ramda_1.cond([
|
|
@@ -17,22 +14,6 @@ var getSource = function (attrType, entity) {
|
|
|
17
14
|
var getNameProp = function (attrType) {
|
|
18
15
|
return mdm_sdk_1.isSpecialAttribute(attrType) ? 'uri' : 'name';
|
|
19
16
|
};
|
|
20
|
-
var getAttributesListForEditMode = function (attrTypes, mode, entity, showEmptyEditors) {
|
|
21
|
-
var creatableAttrTypes = getCreatableAttributeTypesAndAnaliticsAttributes(mode, attrTypes);
|
|
22
|
-
return creatableAttrTypes.reduce(function (result, attrType) {
|
|
23
|
-
var needShowAttribute = function (hasValues) {
|
|
24
|
-
return hasValues || showEmptyEditors || attrType.required;
|
|
25
|
-
};
|
|
26
|
-
var source = getSource(attrType, entity);
|
|
27
|
-
var nameProp = getNameProp(attrType);
|
|
28
|
-
var hasValues = ramda_1.has(attrType[nameProp])(source);
|
|
29
|
-
return ramda_1.when(function () { return needShowAttribute(hasValues); }, ramda_1.append({
|
|
30
|
-
attrType: attrType,
|
|
31
|
-
values: ramda_1.pipe(ramda_1.prop(attrType[nameProp]), ramda_1.defaultTo([]), mdm_sdk_1.wrapInArrayIfNeeded)(source)
|
|
32
|
-
}), result);
|
|
33
|
-
}, []);
|
|
34
|
-
};
|
|
35
|
-
exports.getAttributesListForEditMode = getAttributesListForEditMode;
|
|
36
17
|
var getMoreAttrTypes = function (attrTypes, entity) {
|
|
37
18
|
return attrTypes.filter(function (attrType) {
|
|
38
19
|
var source = getSource(attrType, entity);
|
|
@@ -92,8 +92,9 @@ var AttributeRenderer = function (_a) {
|
|
|
92
92
|
react_1.default.createElement(Title_1.default, { label: label, isRequired: isRequired, className: styles.title, attributeType: attributeType }),
|
|
93
93
|
isEditableMode && react_1.default.createElement(CardinalityMessage_1.default, { cardinality: cardinality }),
|
|
94
94
|
isEditableMode && react_1.default.createElement(ErrorMessage_1.default, { message: errorMessage }),
|
|
95
|
-
react_1.default.createElement("div", { className: styles.attributesWrapper },
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
react_1.default.createElement("div", { className: styles.attributesWrapper },
|
|
96
|
+
shownValues.map(function (value, idx) { return (react_1.default.createElement(Attribute_1.default, { key: value.uri, attributeValue: value, attributeType: attributeType, lazy: showEmpty && !isRequired, showEmptyEditors: showEmptyEditors, errors: errors, ownError: mdm_sdk_1.getAttributeOwnError(value, idx, attributeType.uri, errors), mode: mode, crosswalks: crosswalks, onAddOneMore: lastIndex === idx ? onAddOneMore : null, onAddAttributes: onAddAttributes, onDeleteAttribute: onDelete, onChangeAttribute: onChangeAttribute, onDeactivateError: onDeactivateError, additionalControlsRenderer: additionalControlsRenderer })); }),
|
|
97
|
+
showMore && (react_1.default.createElement(ShowMore_1.default, { moreNumber: ramda_1.min(max, hiddenValuesCount), valueNumber: hiddenValuesCount, onClick: onShowMore })),
|
|
98
|
+
showLess && react_1.default.createElement(ShowLess_1.default, { onClick: onShowLess }))));
|
|
98
99
|
};
|
|
99
100
|
exports.default = AttributeRenderer;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { RequestNextPageOfAttributeValuesPayload } from '@reltio/mdm-module';
|
|
3
3
|
import { AttributeError, AttributeType, AttributeValue, Crosswalk, ImageAttributeValue, Mode, NestedAttributeValue, Paging, ReferenceAttributeValue, SimpleAttributeValue } from '@reltio/mdm-sdk';
|
|
4
4
|
import AttributesPager from './AttributesPager';
|
|
5
|
+
import CardinalityMessage from './CardinalityMessage';
|
|
5
6
|
export declare type AttributeItem = {
|
|
6
7
|
uri?: string;
|
|
7
8
|
parentUri?: string;
|
|
@@ -12,6 +13,7 @@ export declare type AttributeItem = {
|
|
|
12
13
|
declare type StateProps = {
|
|
13
14
|
errorMessage: string;
|
|
14
15
|
errors: AttributeError[];
|
|
16
|
+
max: number;
|
|
15
17
|
};
|
|
16
18
|
declare type DispatchProps = {
|
|
17
19
|
onDeactivateError: (id: string) => void;
|
|
@@ -33,6 +35,6 @@ declare type OwnProps = {
|
|
|
33
35
|
additionalControlsRenderer?: (props: any) => JSX.Element;
|
|
34
36
|
};
|
|
35
37
|
export declare type AttributePagerProps = StateProps & DispatchProps & OwnProps;
|
|
36
|
-
export { AttributesPager };
|
|
37
|
-
declare const _default: import("react-redux").ConnectedComponent<import("react").MemoExoticComponent<({ values, attributeType, mode, crosswalks, drawLines, paging, parentUri, errors, errorMessage, max, showEmptyEditors, onAddAttributes, onDeleteAttribute, onChangeAttribute, onDeactivateError, additionalControlsRenderer, requestNextPageOfAttributeValues }: AttributePagerProps) => JSX.Element>, import("react-redux").Omit<StateProps & DispatchProps & OwnProps, "errorMessage" | "errors" | "requestNextPageOfAttributeValues" | "onDeactivateError"> & OwnProps>;
|
|
38
|
+
export { AttributesPager, CardinalityMessage };
|
|
39
|
+
declare const _default: import("react-redux").ConnectedComponent<import("react").MemoExoticComponent<({ values, attributeType, mode, crosswalks, drawLines, paging, parentUri, errors, errorMessage, max, showEmptyEditors, onAddAttributes, onDeleteAttribute, onChangeAttribute, onDeactivateError, additionalControlsRenderer, requestNextPageOfAttributeValues }: AttributePagerProps) => JSX.Element>, import("react-redux").Omit<StateProps & DispatchProps & OwnProps, "errorMessage" | "max" | "errors" | "requestNextPageOfAttributeValues" | "onDeactivateError"> & OwnProps>;
|
|
38
40
|
export default _default;
|
|
@@ -22,31 +22,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
22
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.AttributesPager = void 0;
|
|
25
|
+
exports.CardinalityMessage = exports.AttributesPager = void 0;
|
|
26
26
|
var react_redux_1 = require("react-redux");
|
|
27
|
-
var re_reselect_1 = __importDefault(require("re-reselect"));
|
|
28
27
|
var mdm_module_1 = __importStar(require("@reltio/mdm-module"));
|
|
29
28
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
30
29
|
var AttributesPager_1 = __importDefault(require("./AttributesPager"));
|
|
31
30
|
exports.AttributesPager = AttributesPager_1.default;
|
|
32
|
-
var
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
})(function (state, _a) {
|
|
43
|
-
var parentUri = _a.parentUri, attributeType = _a.attributeType;
|
|
44
|
-
return parentUri + "-" + attributeType.uri;
|
|
45
|
-
});
|
|
46
|
-
var mapStateToProps = function (state, ownProps) { return ({
|
|
47
|
-
errors: cachedErrorsSelector(state, ownProps),
|
|
48
|
-
errorMessage: mdm_sdk_1.getAttributePagerActiveTypeErrorMessage(ownProps.parentUri, ownProps.attributeType, mdm_module_1.default.selectors.getProfileErrors(state))
|
|
49
|
-
}); };
|
|
31
|
+
var CardinalityMessage_1 = __importDefault(require("./CardinalityMessage"));
|
|
32
|
+
exports.CardinalityMessage = CardinalityMessage_1.default;
|
|
33
|
+
var mapStateToProps = function (state, _a) {
|
|
34
|
+
var parentUri = _a.parentUri, attributeType = _a.attributeType, max = _a.max;
|
|
35
|
+
return ({
|
|
36
|
+
errors: mdm_module_1.default.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType),
|
|
37
|
+
errorMessage: mdm_sdk_1.getAttributePagerActiveTypeErrorMessage(parentUri, attributeType, mdm_module_1.default.selectors.getProfileErrors(state)),
|
|
38
|
+
max: max || mdm_module_1.default.selectors.getDefaultMaxValues(state)
|
|
39
|
+
});
|
|
40
|
+
};
|
|
50
41
|
var mapDispatchToProps = {
|
|
51
42
|
requestNextPageOfAttributeValues: mdm_module_1.profile.actions.requestNextPageOfAttributeValues,
|
|
52
43
|
onDeactivateError: mdm_module_1.profile.errors.actions.errorDeactivated
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export default ComplexAttribute;
|
|
2
|
-
declare function ComplexAttribute({ label, attributeTypesList, attributeType, attributeValue, children, errors, ownError, mode, metadata, crosswalks, lazy, showEmptyEditors, onAddOneMore, onAddAttributes, onDeleteAttribute, onChangeAttribute, additionalControlsRenderer, hideDeleteButton }: {
|
|
2
|
+
declare function ComplexAttribute({ label, attributeTypesList, attributeType, attributeValue, children, errors, ownError, mode, metadata, crosswalks, lazy, showEmptyEditors, onAddOneMore, onAddAttributes, onDeleteAttribute, onChangeAttribute, additionalControlsRenderer, hideDeleteButton, state }: {
|
|
3
3
|
label: any;
|
|
4
4
|
attributeTypesList: any;
|
|
5
5
|
attributeType: any;
|
|
@@ -18,6 +18,7 @@ declare function ComplexAttribute({ label, attributeTypesList, attributeType, at
|
|
|
18
18
|
onChangeAttribute: any;
|
|
19
19
|
additionalControlsRenderer: any;
|
|
20
20
|
hideDeleteButton: any;
|
|
21
|
+
state: any;
|
|
21
22
|
}): JSX.Element;
|
|
22
23
|
declare namespace ComplexAttribute {
|
|
23
24
|
const propTypes: {
|
|
@@ -126,6 +127,7 @@ declare namespace ComplexAttribute {
|
|
|
126
127
|
onChangeAttribute: PropTypes.Requireable<(...args: any[]) => any>;
|
|
127
128
|
additionalControlsRenderer: PropTypes.Requireable<(...args: any[]) => any>;
|
|
128
129
|
hideDeleteButton: PropTypes.Requireable<boolean>;
|
|
130
|
+
state: PropTypes.Requireable<string>;
|
|
129
131
|
label: PropTypes.Requireable<string>;
|
|
130
132
|
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
131
133
|
attributeTypesList: PropTypes.Requireable<PropTypes.InferProps<{
|
|
@@ -35,9 +35,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
var react_1 = __importStar(require("react"));
|
|
37
37
|
var prop_types_1 = __importDefault(require("prop-types"));
|
|
38
|
+
var classnames_1 = __importDefault(require("classnames"));
|
|
38
39
|
var Button_1 = __importDefault(require("@material-ui/core/Button"));
|
|
39
40
|
var SmallIconButton_1 = __importDefault(require("../../../SmallIconButton/SmallIconButton"));
|
|
40
41
|
var Delete_1 = __importDefault(require("@material-ui/icons/Delete"));
|
|
42
|
+
var Typography_1 = __importDefault(require("@material-ui/core/Typography"));
|
|
41
43
|
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
42
44
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
43
45
|
var styles_1 = require("./styles");
|
|
@@ -45,11 +47,14 @@ var ErrorWrapper_1 = __importDefault(require("../../../ErrorWrapper/ErrorWrapper
|
|
|
45
47
|
var AttributesList_1 = __importDefault(require("../AttributesList/AttributesList"));
|
|
46
48
|
var ArrowExpandButton_1 = __importDefault(require("../../../ArrowExpandButton/ArrowExpandButton"));
|
|
47
49
|
var ComplexAttribute = function (_a) {
|
|
48
|
-
var
|
|
50
|
+
var _b;
|
|
51
|
+
var label = _a.label, attributeTypesList = _a.attributeTypesList, attributeType = _a.attributeType, attributeValue = _a.attributeValue, children = _a.children, errors = _a.errors, ownError = _a.ownError, mode = _a.mode, metadata = _a.metadata, crosswalks = _a.crosswalks, lazy = _a.lazy, showEmptyEditors = _a.showEmptyEditors, onAddOneMore = _a.onAddOneMore, onAddAttributes = _a.onAddAttributes, onDeleteAttribute = _a.onDeleteAttribute, onChangeAttribute = _a.onChangeAttribute, additionalControlsRenderer = _a.additionalControlsRenderer, hideDeleteButton = _a.hideDeleteButton, state = _a.state;
|
|
49
52
|
var styles = styles_1.useStyles();
|
|
53
|
+
var deleted = state === 'deleted';
|
|
54
|
+
var edited = state === 'edited';
|
|
50
55
|
var uri = attributeValue.uri;
|
|
51
56
|
var isNew = mdm_sdk_1.isTempUri(uri);
|
|
52
|
-
var
|
|
57
|
+
var _c = react_1.useState(isNew), expanded = _c[0], setExpanded = _c[1];
|
|
53
58
|
var canDelete = react_1.useMemo(function () {
|
|
54
59
|
return mdm_sdk_1.checkCanDeleteAttribute({
|
|
55
60
|
attributeType: attributeType,
|
|
@@ -59,7 +64,7 @@ var ComplexAttribute = function (_a) {
|
|
|
59
64
|
isReltioCrosswalk: mdm_sdk_1.isReltioCrosswalk(crosswalks, attributeValue)
|
|
60
65
|
});
|
|
61
66
|
}, [attributeType, attributeValue, mode, metadata, crosswalks]);
|
|
62
|
-
var showDeleteButton = !hideDeleteButton && !!onDeleteAttribute && canDelete;
|
|
67
|
+
var showDeleteButton = !deleted && !hideDeleteButton && !!onDeleteAttribute && canDelete;
|
|
63
68
|
var onDeleteThis = function () { return onDeleteAttribute({ uri: uri, attributeType: attributeType, attributeValue: attributeValue }); };
|
|
64
69
|
var hasDescendantsWithErrors = react_1.useMemo(function () { return mdm_sdk_1.hasAttributeDescendantsWithErrors(attributeValue, errors); }, [
|
|
65
70
|
errors,
|
|
@@ -70,6 +75,11 @@ var ComplexAttribute = function (_a) {
|
|
|
70
75
|
setExpanded(true);
|
|
71
76
|
}
|
|
72
77
|
}, [errors, hasDescendantsWithErrors]);
|
|
78
|
+
react_1.useEffect(function () {
|
|
79
|
+
if (deleted) {
|
|
80
|
+
setExpanded(false);
|
|
81
|
+
}
|
|
82
|
+
}, [deleted]);
|
|
73
83
|
var hasAnalyticValue = (attributeTypesList || []).some(function (attributeType) { return mdm_sdk_1.isAnalyticAttribute(attributeType); });
|
|
74
84
|
var attributeListEntity = react_1.useMemo(function () { return ({
|
|
75
85
|
attributes: hasAnalyticValue ? null : attributeValue.value,
|
|
@@ -79,10 +89,14 @@ var ComplexAttribute = function (_a) {
|
|
|
79
89
|
return lazy ? (react_1.default.createElement(Button_1.default, { variant: "text", color: "primary", onClick: onAddOneMore }, "Create attribute")) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
80
90
|
react_1.default.createElement("div", { className: styles.editor },
|
|
81
91
|
react_1.default.createElement("div", { className: styles.titleContainer },
|
|
82
|
-
react_1.default.createElement(ArrowExpandButton_1.default, { onClick: function () { return setExpanded(function (value) { return !value; }); }, expanded: expanded, className: styles.expandButton }),
|
|
92
|
+
react_1.default.createElement(ArrowExpandButton_1.default, { onClick: function () { return setExpanded(function (value) { return !value; }); }, expanded: expanded, className: styles.expandButton, disabled: deleted }),
|
|
83
93
|
react_1.default.createElement(ErrorWrapper_1.default, { errorMessage: errorMessage },
|
|
84
|
-
react_1.default.createElement("div", { className: styles.label }, label))),
|
|
94
|
+
react_1.default.createElement("div", { className: classnames_1.default(styles.label, (_b = {}, _b[styles.deleted] = deleted, _b)) }, label))),
|
|
85
95
|
react_1.default.createElement("div", { className: styles.actions },
|
|
96
|
+
edited && (react_1.default.createElement(Typography_1.default, { variant: "caption", className: styles.editedLabel },
|
|
97
|
+
"(",
|
|
98
|
+
ui_i18n_1.default.text('edited'),
|
|
99
|
+
")")),
|
|
86
100
|
additionalControlsRenderer && additionalControlsRenderer({ attributeType: attributeType, attributeValue: attributeValue }),
|
|
87
101
|
showDeleteButton && react_1.default.createElement(SmallIconButton_1.default, { icon: Delete_1.default, onClick: onDeleteThis, size: "L" }))),
|
|
88
102
|
expanded && (react_1.default.createElement(AttributesList_1.default, { attrTypes: attributeTypesList, entity: attributeListEntity, showEmptyEditors: showEmptyEditors || isNew, drawLines: true, parentUri: uri, mode: mode, crosswalks: crosswalks, onAddAttributes: onAddAttributes, onChangeAttribute: onChangeAttribute, onDeleteAttribute: onDeleteAttribute, additionalControlsRenderer: additionalControlsRenderer }, children))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"label" | "expandButton" | "actions" | "editor" | "titleContainer">;
|
|
1
|
+
export const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"deleted" | "label" | "expandButton" | "actions" | "editor" | "editedLabel" | "titleContainer">;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useStyles = void 0;
|
|
4
4
|
var styles_1 = require("@material-ui/core/styles");
|
|
5
|
-
exports.useStyles = styles_1.makeStyles({
|
|
5
|
+
exports.useStyles = styles_1.makeStyles(function (theme) { return ({
|
|
6
6
|
editor: {
|
|
7
7
|
display: 'flex',
|
|
8
8
|
flex: 1,
|
|
@@ -27,5 +27,13 @@ exports.useStyles = styles_1.makeStyles({
|
|
|
27
27
|
},
|
|
28
28
|
expandButton: {
|
|
29
29
|
marginTop: '2px'
|
|
30
|
+
},
|
|
31
|
+
deleted: {
|
|
32
|
+
color: theme.palette.text.secondary,
|
|
33
|
+
textDecoration: 'line-through'
|
|
34
|
+
},
|
|
35
|
+
editedLabel: {
|
|
36
|
+
fontStyle: 'italic',
|
|
37
|
+
color: theme.palette.text.secondary
|
|
30
38
|
}
|
|
31
|
-
});
|
|
39
|
+
}); });
|
|
@@ -106,6 +106,7 @@ declare var _default: React.MemoExoticComponent<{
|
|
|
106
106
|
onChangeAttribute: import("prop-types").Requireable<(...args: any[]) => any>;
|
|
107
107
|
additionalControlsRenderer: import("prop-types").Requireable<(...args: any[]) => any>;
|
|
108
108
|
hideDeleteButton: import("prop-types").Requireable<boolean>;
|
|
109
|
+
state: import("prop-types").Requireable<string>;
|
|
109
110
|
attributeValue: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
110
111
|
value: import("prop-types").Requireable<object>;
|
|
111
112
|
ov: import("prop-types").Requireable<boolean>;
|
|
@@ -114,6 +114,7 @@ declare var _default: React.MemoExoticComponent<{
|
|
|
114
114
|
onChangeAttribute: PropTypes.Requireable<(...args: any[]) => any>;
|
|
115
115
|
additionalControlsRenderer: PropTypes.Requireable<(...args: any[]) => any>;
|
|
116
116
|
hideDeleteButton: PropTypes.Requireable<boolean>;
|
|
117
|
+
state: PropTypes.Requireable<string>;
|
|
117
118
|
attributeValue: PropTypes.Requireable<PropTypes.InferProps<{
|
|
118
119
|
refEntity: PropTypes.Requireable<object>;
|
|
119
120
|
refRelation: PropTypes.Requireable<object>;
|
|
@@ -115,6 +115,7 @@ declare var _default: import("react-redux").ConnectedComponent<import("react").M
|
|
|
115
115
|
onChangeAttribute: import("prop-types").Requireable<(...args: any[]) => any>;
|
|
116
116
|
additionalControlsRenderer: import("prop-types").Requireable<(...args: any[]) => any>;
|
|
117
117
|
hideDeleteButton: import("prop-types").Requireable<boolean>;
|
|
118
|
+
state: import("prop-types").Requireable<string>;
|
|
118
119
|
attributeValue: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
119
120
|
refEntity: import("prop-types").Requireable<object>;
|
|
120
121
|
refRelation: import("prop-types").Requireable<object>;
|
|
@@ -51,6 +51,8 @@ var classnames_1 = __importDefault(require("classnames"));
|
|
|
51
51
|
var ramda_1 = require("ramda");
|
|
52
52
|
var Add_1 = __importDefault(require("@material-ui/icons/Add"));
|
|
53
53
|
var Delete_1 = __importDefault(require("@material-ui/icons/Delete"));
|
|
54
|
+
var Typography_1 = __importDefault(require("@material-ui/core/Typography"));
|
|
55
|
+
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
54
56
|
var styles_1 = require("./styles");
|
|
55
57
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
56
58
|
var DataTypeValue_1 = __importDefault(require("../../../DataTypeValue/DataTypeValue"));
|
|
@@ -65,8 +67,11 @@ var AsyncMountPlaceholder = function () {
|
|
|
65
67
|
return react_1.default.createElement("div", { className: styles.placeholder });
|
|
66
68
|
};
|
|
67
69
|
var SimpleAttributeEditor = function (_a) {
|
|
68
|
-
var
|
|
70
|
+
var _b;
|
|
71
|
+
var className = _a.className, attributeValue = _a.attributeValue, attributeType = _a.attributeType, isReltioCrosswalk = _a.isReltioCrosswalk, ownError = _a.ownError, mode = _a.mode, onAddOneMore = _a.onAddOneMore, onDeleteAttribute = _a.onDeleteAttribute, onChangeAttribute = _a.onChangeAttribute, onDeactivateError = _a.onDeactivateError, additionalControlsRenderer = _a.additionalControlsRenderer, state = _a.state, otherProps = __rest(_a, ["className", "attributeValue", "attributeType", "isReltioCrosswalk", "ownError", "mode", "onAddOneMore", "onDeleteAttribute", "onChangeAttribute", "onDeactivateError", "additionalControlsRenderer", "state"]);
|
|
69
72
|
var styles = styles_1.useStyles();
|
|
73
|
+
var deleted = state === 'deleted';
|
|
74
|
+
var edited = state === 'edited';
|
|
70
75
|
var isEditableMode = mdm_sdk_1.isEditableMode(mode);
|
|
71
76
|
var dataTypeDefinition = mdm_sdk_1.getAttrDataTypeDefinition(attributeType);
|
|
72
77
|
var value = utils_1.attributeValueToEditorValue(attributeValue, dataTypeDefinition);
|
|
@@ -93,13 +98,18 @@ var SimpleAttributeEditor = function (_a) {
|
|
|
93
98
|
};
|
|
94
99
|
if (showToEdit) {
|
|
95
100
|
var showAddButton = !!onAddOneMore && canCreate && !attributeType.singleValue;
|
|
96
|
-
var showDeleteButton = !!onDeleteAttribute && canDelete;
|
|
101
|
+
var showDeleteButton = !deleted && !!onDeleteAttribute && canDelete;
|
|
97
102
|
var hasError = !!errorMessage;
|
|
103
|
+
var deletedProps = deleted ? { disabled: true } : {};
|
|
98
104
|
return (react_1.default.createElement("div", { className: classnames_1.default(styles.editor, className) },
|
|
99
105
|
react_1.default.createElement(ErrorWrapper_1.default, { errorMessage: errorMessage },
|
|
100
|
-
react_1.default.createElement("div", { className: styles['editor-value'] },
|
|
101
|
-
react_1.default.createElement(DataTypeValueEditor_1.default, __assign({ fieldName: mdm_sdk_1.attributeUriToSearchUri(attributeType.uri), value: value, dataTypeDefinition: dataTypeDefinition, error: hasError, onChange: ramda_1.pipe(utils_1.prepareChangeData(attributeValue, attributeType), onChangeAttribute, deactivateError), fullWidth: true }, dependentLookupEditorContext, otherProps)))),
|
|
106
|
+
react_1.default.createElement("div", { className: classnames_1.default(styles['editor-value'], (_b = {}, _b[styles.deleted] = deleted, _b)) },
|
|
107
|
+
react_1.default.createElement(DataTypeValueEditor_1.default, __assign({ fieldName: mdm_sdk_1.attributeUriToSearchUri(attributeType.uri), value: value, dataTypeDefinition: dataTypeDefinition, error: hasError, onChange: ramda_1.pipe(utils_1.prepareChangeData(attributeValue, attributeType), onChangeAttribute, deactivateError), fullWidth: true }, dependentLookupEditorContext, otherProps, deletedProps)))),
|
|
102
108
|
react_1.default.createElement("div", { className: styles['editor-actions'] },
|
|
109
|
+
edited && (react_1.default.createElement(Typography_1.default, { variant: "caption", className: styles.editedLabel },
|
|
110
|
+
"(",
|
|
111
|
+
ui_i18n_1.default.text('edited'),
|
|
112
|
+
")")),
|
|
103
113
|
showAddButton && (react_1.default.createElement(SmallIconButton_1.default, { icon: Add_1.default, onClick: onAddOneMore, size: "L", className: classnames_1.default(styles.addButton, styles.button) })),
|
|
104
114
|
additionalControlsRenderer && additionalControlsRenderer({ attributeType: attributeType, attributeValue: attributeValue }),
|
|
105
115
|
showDeleteButton && (react_1.default.createElement(SmallIconButton_1.default, { className: styles.button, icon: Delete_1.default, onClick: onDelete, size: "L" })))));
|
|
@@ -115,6 +125,7 @@ SimpleAttributeEditor.propTypes = {
|
|
|
115
125
|
attributeType: mdm_sdk_1.AttributeTypeType,
|
|
116
126
|
ownError: mdm_sdk_1.AttributeErrorType,
|
|
117
127
|
isReltioCrosswalk: prop_types_1.default.bool,
|
|
128
|
+
state: prop_types_1.default.oneOf(['deleted', 'edited']),
|
|
118
129
|
mode: mdm_sdk_1.ModeType,
|
|
119
130
|
onAddOneMore: prop_types_1.default.func,
|
|
120
131
|
onDeleteAttribute: prop_types_1.default.func,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"button" | "placeholder" | "wrapper" | "addButton" | "editor" | "editor-value" | "editor-actions">;
|
|
1
|
+
export const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"deleted" | "button" | "placeholder" | "wrapper" | "addButton" | "editor" | "editor-value" | "editor-actions" | "editedLabel">;
|
|
@@ -29,5 +29,13 @@ exports.useStyles = styles_1.makeStyles(function (theme) { return ({
|
|
|
29
29
|
},
|
|
30
30
|
placeholder: {
|
|
31
31
|
height: 40 + marginBottom + "px"
|
|
32
|
+
},
|
|
33
|
+
deleted: {
|
|
34
|
+
color: theme.palette.text.secondary,
|
|
35
|
+
textDecoration: 'line-through'
|
|
36
|
+
},
|
|
37
|
+
editedLabel: {
|
|
38
|
+
fontStyle: 'italic',
|
|
39
|
+
color: theme.palette.text.secondary
|
|
32
40
|
}
|
|
33
41
|
}); });
|
|
@@ -58,7 +58,7 @@ var ComplexAttribute = function (_a) {
|
|
|
58
58
|
react_1.default.createElement(ArrowExpandButton_1.default, { onClick: function () { return setExpanded(function (value) { return !value; }); }, expanded: expanded }),
|
|
59
59
|
react_1.default.createElement("span", null,
|
|
60
60
|
label,
|
|
61
|
-
crosswalks.map(function (crosswalk) { return (react_1.default.createElement(CrosswalkIcon_1.default, { key: crosswalk
|
|
61
|
+
crosswalks.map(function (crosswalk) { return (react_1.default.createElement(CrosswalkIcon_1.default, { key: mdm_sdk_1.getCrosswalkId(crosswalk), crosswalk: crosswalk, className: styles.crosswalkIcon })); })),
|
|
62
62
|
react_1.default.createElement(index_1.Spacer, null),
|
|
63
63
|
react_1.default.createElement("div", { className: styles.actions },
|
|
64
64
|
showPin && react_1.default.createElement(PinButton_1.default, { isPinned: attributeValue.pin, onClick: function () { return onPin({ attributeValue: attributeValue }); } }),
|
|
@@ -21,6 +21,8 @@ declare var _default: import("react-redux").ConnectedComponent<import("react").M
|
|
|
21
21
|
titleClassName?: string;
|
|
22
22
|
contentClassName?: string;
|
|
23
23
|
showTitle?: boolean;
|
|
24
|
-
}, "requestNextPageOfAttributeValues"
|
|
24
|
+
}, "max" | "requestNextPageOfAttributeValues"> & {
|
|
25
|
+
max?: any;
|
|
26
|
+
}>;
|
|
25
27
|
export default _default;
|
|
26
28
|
import AttributesPager from "./AttributesPager";
|