@agilemotion/oui-react-js 1.6.8 → 1.7.0
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/dist/ApplicationManager.js +5 -6
- package/dist/DynamicJS.js +1 -4
- package/dist/RestUtils.js +26 -26
- package/dist/Utils.js +4 -2
- package/dist/components/Button.js +4 -0
- package/dist/components/DataGrid.js +2 -6
- package/dist/components/DocumentTemplateDesigner.js +27 -0
- package/dist/components/DocumentTemplateDesignerComponent.css +168 -0
- package/dist/components/DocumentTemplateDesignerComponent.js +9 -2
- package/dist/components/DocumentViewer.js +8 -2
- package/dist/components/FileThumb.js +11 -3
- package/dist/components/HtmlPanel.js +2 -4
- package/dist/components/Icon.js +7 -0
- package/dist/components/SocketManager.js +10 -5
- package/dist/components/TitleBar.js +0 -1
- package/dist/components/Toolbar.js +196 -22
- package/dist/components/UseIsVisible.js +15 -11
- package/dist/components/dashboard/FoldingSideTabDashboard.js +0 -1
- package/dist/components/form/FieldSet.js +288 -237
- package/dist/components/form/LookupField.js +5 -3
- package/dist/components/layout/Layout.js +184 -130
- package/dist/components/media/Toolbar.js +19 -2
- package/dist/components/media/ToolbarButton.js +6 -2
- package/dist/components/media/TrainingRoom.js +17 -3
- package/dist/components/media/VCRoom.css +12 -0
- package/dist/components/media/VCRoomWorkspace.js +3 -3
- package/dist/components/media/chat/ChatRoom.js +4 -10
- package/dist/components/media/chat/ChatRoomWrapper.js +65 -0
- package/dist/components/media/chat/ChatRooms.scss +10 -0
- package/dist/components/menu/MenuItem.js +45 -11
- package/dist/event/Observable.js +15 -25
- package/dist/event/ServiceCallActionHandler.js +2 -2
- package/dist/js/Docs.js +79 -0
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _react =
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _Observable = _interopRequireDefault(require("../event/Observable"));
|
|
9
9
|
var _core = require("@material-ui/core");
|
|
10
10
|
var _ToggleButtonGroup = _interopRequireDefault(require("@material-ui/lab/ToggleButtonGroup"));
|
|
@@ -13,8 +13,34 @@ var _Button = _interopRequireDefault(require("./Button"));
|
|
|
13
13
|
var _Utils = _interopRequireDefault(require("../Utils"));
|
|
14
14
|
var _styles = require("@material-ui/core/styles");
|
|
15
15
|
var _Icon = _interopRequireDefault(require("./Icon"));
|
|
16
|
+
var _ToolbarButton = _interopRequireDefault(require("./media/ToolbarButton"));
|
|
17
|
+
var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
|
|
18
|
+
var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
|
|
19
|
+
var _Grow = _interopRequireDefault(require("@material-ui/core/Grow"));
|
|
20
|
+
var _Paper = _interopRequireDefault(require("@material-ui/core/Paper"));
|
|
21
|
+
var _ClickAwayListener = _interopRequireDefault(require("@material-ui/core/ClickAwayListener"));
|
|
22
|
+
var _MenuList = _interopRequireDefault(require("@material-ui/core/MenuList"));
|
|
23
|
+
var _Popper = _interopRequireDefault(require("@material-ui/core/Popper"));
|
|
24
|
+
var _MenuItem = _interopRequireDefault(require("./menu/MenuItem"));
|
|
16
25
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
26
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
27
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
28
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
17
29
|
const useStyles = (0, _styles.makeStyles)(theme => ({
|
|
30
|
+
root: {
|
|
31
|
+
display: 'flex'
|
|
32
|
+
},
|
|
33
|
+
paper: {
|
|
34
|
+
marginRight: theme.spacing(2)
|
|
35
|
+
},
|
|
36
|
+
MuiButtonWhite: {
|
|
37
|
+
color: '#fff'
|
|
38
|
+
},
|
|
39
|
+
wrapper: {
|
|
40
|
+
maxHeight: "32px",
|
|
41
|
+
minwidth: "60px",
|
|
42
|
+
zIndex: 2
|
|
43
|
+
},
|
|
18
44
|
spacer: {
|
|
19
45
|
borderLeft: '2px solid' + theme.palette.secondary.main,
|
|
20
46
|
height: '100%'
|
|
@@ -33,13 +59,39 @@ const StyledToggleButtonGroup = (0, _core.withStyles)(theme => ({
|
|
|
33
59
|
}
|
|
34
60
|
}
|
|
35
61
|
}))(_ToggleButtonGroup.default);
|
|
36
|
-
const Toolbar =
|
|
62
|
+
const Toolbar = props => {
|
|
37
63
|
const classes = useStyles();
|
|
38
|
-
const [
|
|
39
|
-
const [
|
|
64
|
+
const [buttonItemHandles] = _react.default.useState({});
|
|
65
|
+
const [menuItemHandles] = _react.default.useState({});
|
|
40
66
|
const [config, setConfig] = _react.default.useState(null);
|
|
41
|
-
|
|
67
|
+
const [buttonVisibility, setButtonVisibility] = (0, _react.useState)({});
|
|
68
|
+
const [allButtonsVisible, setAllButtonsVisible] = (0, _react.useState)(false);
|
|
69
|
+
const [allItems] = (0, _react.useState)([]);
|
|
70
|
+
const [open, setOpen] = _react.default.useState(false);
|
|
71
|
+
const anchorRef = _react.default.useRef(null);
|
|
72
|
+
const ref = (0, _react.useRef)();
|
|
73
|
+
const sectionContainerRef = (0, _react.useRef)();
|
|
42
74
|
let sectionKeyCounter = 0;
|
|
75
|
+
const handleVisibilityChange = (id, visible) => {
|
|
76
|
+
buttonVisibility[id] = visible;
|
|
77
|
+
let allVisible = true;
|
|
78
|
+
Object.keys(buttonVisibility).forEach(key => {
|
|
79
|
+
if (buttonVisibility[key] === false) {
|
|
80
|
+
allVisible = false;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
setAllButtonsVisible(allVisible);
|
|
84
|
+
setButtonVisibility(JSON.parse(JSON.stringify(buttonVisibility)));
|
|
85
|
+
};
|
|
86
|
+
const handleClick = event => {
|
|
87
|
+
setAnchorEl(event.currentTarget);
|
|
88
|
+
};
|
|
89
|
+
const handleClose = event => {
|
|
90
|
+
if (anchorRef.current && anchorRef.current.contains(event.target)) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
setOpen(false);
|
|
94
|
+
};
|
|
43
95
|
_react.default.useEffect(() => {
|
|
44
96
|
props.handle.api = api();
|
|
45
97
|
});
|
|
@@ -49,6 +101,11 @@ const Toolbar = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
|
49
101
|
let parsedConfig = _Utils.default.parseConfig(config, props.viewId);
|
|
50
102
|
_Observable.default.addSubscriptions(parsedConfig.eventHandlingConfig, props.handle, props.viewId);
|
|
51
103
|
_Observable.default.addSystemSubscriptions(props.viewId, parsedConfig);
|
|
104
|
+
for (const section of config.sections) {
|
|
105
|
+
for (const item of section.items) {
|
|
106
|
+
allItems.push(item);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
52
109
|
}
|
|
53
110
|
}, [config]);
|
|
54
111
|
_react.default.useEffect(() => {
|
|
@@ -57,11 +114,27 @@ const Toolbar = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
|
57
114
|
id: props.config.id + '_' + props.tableRow.id?.replaceAll('-', '')
|
|
58
115
|
} : props.config);
|
|
59
116
|
}, []);
|
|
60
|
-
function
|
|
117
|
+
function createButtonItemHandle(id) {
|
|
118
|
+
let _id = props.tableRow ? id + '_' + props.tableRow.id?.replaceAll('-', '') : id;
|
|
119
|
+
if (buttonItemHandles[_id]) {
|
|
120
|
+
return buttonItemHandles[_id];
|
|
121
|
+
}
|
|
61
122
|
let handle = {};
|
|
62
|
-
|
|
123
|
+
buttonItemHandles[_id] = handle;
|
|
63
124
|
return handle;
|
|
64
125
|
}
|
|
126
|
+
function createMenuItemHandle(id) {
|
|
127
|
+
let _id = props.tableRow ? id + '_' + props.tableRow.id?.replaceAll('-', '') : id;
|
|
128
|
+
if (menuItemHandles[_id]) {
|
|
129
|
+
return menuItemHandles[_id];
|
|
130
|
+
}
|
|
131
|
+
let handle = {};
|
|
132
|
+
menuItemHandles[_id] = handle;
|
|
133
|
+
return handle;
|
|
134
|
+
}
|
|
135
|
+
const handleToggle = () => {
|
|
136
|
+
setOpen(prevOpen => !prevOpen);
|
|
137
|
+
};
|
|
65
138
|
function getDefaultStyle(item) {
|
|
66
139
|
return {
|
|
67
140
|
height: item.type === 'toolbarSpacer' ? item.attributes?.style?.height ? item.attributes?.style?.height : '100%' : null,
|
|
@@ -77,23 +150,35 @@ const Toolbar = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
|
77
150
|
if (_Utils.default.isNull(item.id)) {
|
|
78
151
|
item.id = defaultId;
|
|
79
152
|
}
|
|
80
|
-
return item.type === 'menuButton' ? /*#__PURE__*/_react.default.createElement(
|
|
153
|
+
return item.type === 'menuButton' ? /*#__PURE__*/_react.default.createElement(_ToolbarButton.default, {
|
|
154
|
+
root: sectionContainerRef,
|
|
155
|
+
onVisibilityChange: visible => handleVisibilityChange(item.id, visible)
|
|
156
|
+
}, /*#__PURE__*/_react.default.createElement(_MenuButton.default, {
|
|
81
157
|
config: item,
|
|
82
|
-
handle:
|
|
158
|
+
handle: createButtonItemHandle(item.id),
|
|
83
159
|
ref: /*#__PURE__*/_react.default.createRef(),
|
|
84
160
|
tableRow: props.tableRow,
|
|
85
161
|
viewId: props.viewId
|
|
86
|
-
}) : item.type === 'button' ? /*#__PURE__*/_react.default.createElement(
|
|
162
|
+
})) : item.type === 'button' ? /*#__PURE__*/_react.default.createElement(_ToolbarButton.default, {
|
|
163
|
+
root: sectionContainerRef,
|
|
164
|
+
onVisibilityChange: visible => handleVisibilityChange(item.id, visible)
|
|
165
|
+
}, /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
87
166
|
config: item,
|
|
88
|
-
handle:
|
|
167
|
+
handle: createButtonItemHandle(item.id),
|
|
89
168
|
ref: /*#__PURE__*/_react.default.createRef(),
|
|
90
169
|
tableRow: props.tableRow,
|
|
91
170
|
viewId: props.viewId
|
|
92
|
-
}) : item.type === 'toolbarSpacer' ? /*#__PURE__*/_react.default.createElement(
|
|
171
|
+
})) : item.type === 'toolbarSpacer' ? /*#__PURE__*/_react.default.createElement(_ToolbarButton.default, {
|
|
172
|
+
root: sectionContainerRef,
|
|
173
|
+
onVisibilityChange: visible => handleVisibilityChange(item.id, visible)
|
|
174
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
93
175
|
className: classes.spacer
|
|
94
|
-
}, "\xA0") : item.type === 'icon' ? /*#__PURE__*/_react.default.createElement(
|
|
176
|
+
}, "\xA0")) : item.type === 'icon' ? /*#__PURE__*/_react.default.createElement(_ToolbarButton.default, {
|
|
177
|
+
root: sectionContainerRef,
|
|
178
|
+
onVisibilityChange: visible => handleVisibilityChange(item.id, visible)
|
|
179
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
95
180
|
id: _Utils.default.getComponentAttribute(item, 'iconId', null)
|
|
96
|
-
}) : /*#__PURE__*/_react.default.createElement("div", null, "Unsupported toolbar item type " + item.type);
|
|
181
|
+
})) : /*#__PURE__*/_react.default.createElement("div", null, "Unsupported toolbar item type " + item.type);
|
|
97
182
|
}
|
|
98
183
|
function renderSection(section, counter) {
|
|
99
184
|
let itemCounter = 0;
|
|
@@ -104,18 +189,22 @@ const Toolbar = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
|
104
189
|
"aria-label": "text alignment",
|
|
105
190
|
style: _Utils.default.mergeStyles({
|
|
106
191
|
minWidth: '128px',
|
|
192
|
+
maxWidth: '100%',
|
|
107
193
|
height: '100%',
|
|
108
194
|
marginLeft: 0,
|
|
109
|
-
marginRight: 0
|
|
195
|
+
marginRight: 0,
|
|
196
|
+
position: 'relative'
|
|
110
197
|
}, section)
|
|
111
198
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
112
|
-
className: "row"
|
|
199
|
+
className: "row flex-nowrap"
|
|
113
200
|
}, section.items.map((item, index) => {
|
|
201
|
+
let defaultId = 'toolbar_item_' + counter + '_' + itemCounter++;
|
|
114
202
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
115
203
|
className: 'col-*-*',
|
|
204
|
+
id: item.id ? item.id : defaultId,
|
|
116
205
|
key: index,
|
|
117
206
|
style: getDefaultStyle(item)
|
|
118
|
-
}, renderItem(item,
|
|
207
|
+
}, renderItem(item, defaultId));
|
|
119
208
|
})));
|
|
120
209
|
}
|
|
121
210
|
const api = () => {
|
|
@@ -128,31 +217,116 @@ const Toolbar = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
|
128
217
|
return props.tableRow;
|
|
129
218
|
},
|
|
130
219
|
getChildren: () => {
|
|
131
|
-
|
|
220
|
+
let children = [];
|
|
221
|
+
let properties = Object.getOwnPropertyNames(buttonItemHandles);
|
|
222
|
+
for (const property of properties) {
|
|
223
|
+
let itemHandle = buttonItemHandles[property];
|
|
224
|
+
children.push(itemHandle);
|
|
225
|
+
}
|
|
226
|
+
properties = Object.getOwnPropertyNames(menuItemHandles);
|
|
227
|
+
for (const property of properties) {
|
|
228
|
+
let itemHandle = menuItemHandles[property];
|
|
229
|
+
children.push(itemHandle);
|
|
230
|
+
}
|
|
231
|
+
return children;
|
|
132
232
|
}
|
|
133
233
|
};
|
|
134
234
|
};
|
|
135
235
|
function render(toolbar) {
|
|
136
236
|
let counter = 0;
|
|
137
237
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
138
|
-
className: "row no-margin no-padding",
|
|
238
|
+
className: "row no-margin no-padding flex-nowrap",
|
|
139
239
|
ref: ref
|
|
240
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
241
|
+
style: {
|
|
242
|
+
width: 'calc(100% - 40px)'
|
|
243
|
+
},
|
|
244
|
+
ref: sectionContainerRef
|
|
140
245
|
}, toolbar.sections.map((section, index) => {
|
|
141
246
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
142
247
|
className: "col no-margin no-padding",
|
|
143
248
|
key: index,
|
|
144
249
|
style: {
|
|
145
|
-
textAlign: section.halign ? section.halign.toLowerCase() : null
|
|
250
|
+
textAlign: section.halign ? section.halign.toLowerCase() : null,
|
|
251
|
+
maxWidth: '100%'
|
|
146
252
|
}
|
|
147
253
|
}, renderSection(section, counter++));
|
|
254
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
255
|
+
style: {
|
|
256
|
+
width: '32px',
|
|
257
|
+
height: '44px',
|
|
258
|
+
display: 'flex',
|
|
259
|
+
alignItems: 'center'
|
|
260
|
+
}
|
|
261
|
+
}, !allButtonsVisible && /*#__PURE__*/_react.default.createElement("div", {
|
|
262
|
+
className: 'col-*-* more-button-wrapper',
|
|
263
|
+
style: {
|
|
264
|
+
display: 'flex',
|
|
265
|
+
alignItems: 'center'
|
|
266
|
+
}
|
|
267
|
+
}, /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
|
|
268
|
+
title: "More"
|
|
269
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
270
|
+
style: {
|
|
271
|
+
marginRight: '4px',
|
|
272
|
+
width: '20px',
|
|
273
|
+
height: '20px'
|
|
274
|
+
},
|
|
275
|
+
ref: anchorRef,
|
|
276
|
+
"aria-controls": "menu-list-grow",
|
|
277
|
+
"aria-haspopup": "true",
|
|
278
|
+
onClick: handleToggle
|
|
279
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
280
|
+
id: 'MORE'
|
|
281
|
+
}))))), /*#__PURE__*/_react.default.createElement(_Popper.default, {
|
|
282
|
+
open: open,
|
|
283
|
+
anchorEl: anchorRef.current,
|
|
284
|
+
keepMounted: true,
|
|
285
|
+
transition: true,
|
|
286
|
+
disablePortal: true,
|
|
287
|
+
style: {
|
|
288
|
+
zIndex: 1000
|
|
289
|
+
}
|
|
290
|
+
}, _ref => {
|
|
291
|
+
let {
|
|
292
|
+
TransitionProps,
|
|
293
|
+
placement
|
|
294
|
+
} = _ref;
|
|
295
|
+
return /*#__PURE__*/_react.default.createElement(_Grow.default, _extends({}, TransitionProps, {
|
|
296
|
+
style: {
|
|
297
|
+
transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom'
|
|
298
|
+
}
|
|
299
|
+
}), /*#__PURE__*/_react.default.createElement(_Paper.default, {
|
|
300
|
+
id: "menu-list-grow"
|
|
301
|
+
}, /*#__PURE__*/_react.default.createElement(_ClickAwayListener.default, {
|
|
302
|
+
onClickAway: handleClose
|
|
303
|
+
}, /*#__PURE__*/_react.default.createElement(_MenuList.default, {
|
|
304
|
+
style: {
|
|
305
|
+
background: "#ffffff",
|
|
306
|
+
opacity: "1"
|
|
307
|
+
}
|
|
308
|
+
}, allItems.map((item, index) => {
|
|
309
|
+
if (!buttonVisibility[item.id]) {
|
|
310
|
+
return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
311
|
+
config: item,
|
|
312
|
+
viewId: props.viewId,
|
|
313
|
+
key: index,
|
|
314
|
+
handle: createMenuItemHandle(item.id),
|
|
315
|
+
tableRow: props.tableRow,
|
|
316
|
+
ref: /*#__PURE__*/_react.default.createRef()
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
})))));
|
|
148
320
|
}));
|
|
149
321
|
}
|
|
150
322
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
323
|
+
id: props.config.id,
|
|
151
324
|
ref: ref,
|
|
152
325
|
style: _Utils.default.mergeStyles({
|
|
153
326
|
borderBottom: '1px solid #e2e2e2',
|
|
154
|
-
padding: '
|
|
327
|
+
padding: '4px 0 0 0',
|
|
328
|
+
overflow: 'hidden'
|
|
155
329
|
}, props.config)
|
|
156
330
|
}, render(props.config));
|
|
157
|
-
}
|
|
331
|
+
};
|
|
158
332
|
var _default = exports.default = Toolbar;
|
|
@@ -6,18 +6,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.useIsVisible = useIsVisible;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
function useIsVisible(ref) {
|
|
9
|
+
let root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
9
10
|
const [isIntersecting, setIntersecting] = (0, _react.useState)(false);
|
|
10
11
|
(0, _react.useEffect)(() => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
observer.
|
|
20
|
-
|
|
21
|
-
|
|
12
|
+
if (ref && root) {
|
|
13
|
+
const observer = new IntersectionObserver(_ref => {
|
|
14
|
+
let [entry] = _ref;
|
|
15
|
+
setIntersecting(entry.isIntersecting);
|
|
16
|
+
}, {
|
|
17
|
+
threshold: 1,
|
|
18
|
+
root
|
|
19
|
+
});
|
|
20
|
+
observer.observe(ref.current);
|
|
21
|
+
return () => {
|
|
22
|
+
observer.disconnect();
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}, [ref, root]);
|
|
22
26
|
return isIntersecting;
|
|
23
27
|
}
|
|
@@ -125,7 +125,6 @@ const FoldingSideTabDashboard = props => {
|
|
|
125
125
|
newRoute.level = 0;
|
|
126
126
|
newRoute.isParent = true;
|
|
127
127
|
newRoutes.push(newRoute);
|
|
128
|
-
console.log(props.settings.systemProfileDto);
|
|
129
128
|
if (!_Utils.default.isNull(props.settings.systemProfileDto.modules)) {
|
|
130
129
|
for (let i = 0; i < props.settings.systemProfileDto.modules.length; i++) {
|
|
131
130
|
let module = props.settings.systemProfileDto.modules[i];
|