@agilemotion/oui-react-js 1.3.9 → 1.4.1
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/{ApplicationContext.js → ApplicationManager.js} +196 -74
- package/dist/BasicApp.js +66 -63
- package/dist/BasicAppHome.js +85 -118
- package/dist/BusinessPortalAppHome.js +9 -15
- package/dist/DynamicJS.js +7 -3
- package/dist/RestUtils.js +13 -14
- package/dist/Utils.js +15 -9
- package/dist/WithRouter.js +34 -0
- package/dist/assets/scss/black-dashboard-react/custom/_sidebar-and-main-panel.scss +1 -1
- package/dist/components/AlertBar.js +1 -1
- package/dist/components/Button.js +34 -25
- package/dist/components/Calendar.js +9 -45
- package/dist/components/DataGrid.js +49 -18
- package/dist/components/DataGridColumn.js +1 -1
- package/dist/components/DataGridFilter.js +2 -2
- package/dist/components/Dialog.js +1 -1
- package/dist/components/DocumentViewer.js +5 -5
- package/dist/components/FileThumb.js +30 -19
- package/dist/components/Graph.js +10 -2
- package/dist/components/GraphNode.js +1 -1
- package/dist/components/HtmlPanel.js +10 -5
- package/dist/components/Icon.js +8 -0
- package/dist/components/PopupView.js +1 -1
- package/dist/components/Portlet.js +100 -0
- package/dist/components/SignaturePanel.js +1 -1
- package/dist/components/SocketManager.js +2 -2
- package/dist/components/StepperTitleBar.js +4 -4
- package/dist/components/TabPanel.js +11 -3
- package/dist/components/TableCellContent.js +1 -1
- package/dist/components/TemplateDesigner.js +11 -11
- package/dist/components/TitleBar.js +4 -3
- package/dist/components/Toolbar.js +42 -11
- package/dist/components/Tree.js +3 -3
- package/dist/components/dashboard/BasicBusinessAppDashboard.js +9 -7
- package/dist/components/dashboard/components/Header.js +1 -1
- package/dist/components/dashboard/components/blackDashboard/sidebar/Sidebar.css +7 -0
- package/dist/components/dashboard/components/blackDashboard/sidebar/Sidebar.js +74 -72
- package/dist/components/form/AutoComplete.js +31 -30
- package/dist/components/form/BaseField.js +38 -26
- package/dist/components/form/DatePicker.js +5 -2
- package/dist/components/form/FieldSet.js +11 -19
- package/dist/components/form/Form.js +24 -16
- package/dist/components/form/ImageEditor.js +4 -4
- package/dist/components/form/MultiFileUploadField.js +15 -14
- package/dist/components/form/RadioGroup.js +10 -11
- package/dist/components/form/Section.js +10 -0
- package/dist/components/form/TimePicker.js +1 -0
- package/dist/components/form/UploadField.js +115 -108
- package/dist/components/layout/Layout.js +65 -12
- package/dist/components/layout/View.css +1 -0
- package/dist/components/layout/View.js +20 -23
- package/dist/components/layout/ViewContainer.css +3 -0
- package/dist/components/layout/ViewContainer.js +59 -0
- package/dist/components/layout/ViewPort.js +50 -80
- package/dist/components/layout/Window.css +18 -0
- package/dist/components/layout/Window.js +287 -0
- package/dist/components/layout/WindowViewPort.js +71 -0
- package/dist/components/media/MediaSoupHelper.js +1 -1
- package/dist/components/media/Toolbar.css +18 -3
- package/dist/components/media/Toolbar.js +80 -56
- package/dist/components/media/TrainingRoom.js +97 -20
- package/dist/components/media/VCRoom.js +1 -1
- package/dist/components/media/VCRoomParticipant.js +17 -15
- package/dist/components/media/VCRoomRecorder.js +223 -0
- package/dist/components/media/VCRoomWorkspace.js +169 -156
- package/dist/components/media/VideoPlayer.css +10 -0
- package/dist/components/media/VideoPlayer.js +86 -0
- package/dist/components/menu/MenuButton.js +22 -6
- package/dist/components/menu/MenuLink.js +13 -10
- package/dist/components/navbars/HomeNavbar.js +2 -2
- package/dist/components/navbars/PortalNavbar.js +3 -3
- package/dist/components/signatures/AgilitySignaturePanel.js +4 -4
- package/dist/components/signatures/ImageSignatureInput.js +4 -4
- package/dist/components/signatures/SignatureInput.js +4 -4
- package/dist/components/signatures/SignatureTemplateDesigner.js +6 -6
- package/dist/event/ActionHandlers.js +3 -3
- package/dist/event/Observable.js +33 -15
- package/dist/event/RouteActionHandler.js +38 -29
- package/dist/event/ServiceCallActionHandler.js +4 -2
- package/dist/event/SignalGraphActionHandler.js +2 -2
- package/dist/js/Calendar.js +220 -0
- package/dist/js/Media.js +2 -2
- package/dist/view/Dashboard.js +34 -28
- package/dist/view/Views.js +30 -0
- package/dist/view/security/ChangePasswordBasic.js +6 -4
- package/dist/view/security/ForgotPassword.js +4 -4
- package/dist/view/security/ForgotPasswordBasic.js +4 -4
- package/dist/view/security/Login.js +4 -4
- package/dist/view/security/LoginBasic.js +5 -5
- package/dist/view/security/LoginBusinessPortal.js +4 -4
- package/dist/view/security/ResetPassword.js +4 -4
- package/dist/view/security/ResetPasswordBasic.js +6 -4
- package/package.json +8 -14
|
@@ -7,30 +7,22 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
10
|
-
var _reactRouterDom = require("react-router-dom");
|
|
11
|
-
|
|
12
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
11
|
|
|
14
|
-
var _perfectScrollbar = _interopRequireDefault(require("perfect-scrollbar"));
|
|
15
|
-
|
|
16
12
|
var _Utils = _interopRequireDefault(require("../../../../../Utils"));
|
|
17
13
|
|
|
18
14
|
var _reactstrap = require("reactstrap");
|
|
19
15
|
|
|
20
16
|
var _MenuLink = _interopRequireDefault(require("../../../../menu/MenuLink"));
|
|
21
17
|
|
|
22
|
-
var _reactRedux = require("react-redux");
|
|
23
|
-
|
|
24
|
-
var _redux = require("redux");
|
|
25
|
-
|
|
26
|
-
var _DashboardStore = require("../../../../../redux/store/DashboardStore");
|
|
27
|
-
|
|
28
18
|
var _CardAvatar = _interopRequireDefault(require("../../../../card/CardAvatar"));
|
|
29
19
|
|
|
30
20
|
var _core = require("@material-ui/core");
|
|
31
21
|
|
|
32
22
|
var _RestUtils = require("../../../../../RestUtils");
|
|
33
23
|
|
|
24
|
+
require("./Sidebar.css");
|
|
25
|
+
|
|
34
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
27
|
|
|
36
28
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -38,13 +30,6 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
38
30
|
let ps;
|
|
39
31
|
const TAB = 16;
|
|
40
32
|
|
|
41
|
-
const propHandler = state => {
|
|
42
|
-
let activeRouteMenu = state.dashboard.activeRouteMenu;
|
|
43
|
-
return {
|
|
44
|
-
activeRouteMenu: activeRouteMenu
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
|
|
48
33
|
class Sidebar extends _react.default.Component {
|
|
49
34
|
constructor(props) {
|
|
50
35
|
super(props);
|
|
@@ -56,14 +41,14 @@ class Sidebar extends _react.default.Component {
|
|
|
56
41
|
let createView = {};
|
|
57
42
|
createView.name = menus[i].attributes.label;
|
|
58
43
|
createView.id = menus[i].id;
|
|
59
|
-
createView.mini =
|
|
60
|
-
createView.layout =
|
|
44
|
+
createView.mini = 'SS';
|
|
45
|
+
createView.layout = '/admin';
|
|
61
46
|
createView.level = level;
|
|
62
47
|
|
|
63
|
-
if (menus[i].
|
|
48
|
+
if (menus[i].subMenu) {
|
|
64
49
|
createView.collapse = true;
|
|
65
|
-
createView.state = menus[i].id +
|
|
66
|
-
createView.views = this.getItems(menus[i].items, level + 1);
|
|
50
|
+
createView.state = menus[i].id + 'Collapse';
|
|
51
|
+
createView.views = this.getItems(menus[i].subMenu.items, level + 1);
|
|
67
52
|
} else {
|
|
68
53
|
createView.item = menus[i];
|
|
69
54
|
}
|
|
@@ -71,7 +56,7 @@ class Sidebar extends _react.default.Component {
|
|
|
71
56
|
newViews.push(createView);
|
|
72
57
|
}
|
|
73
58
|
|
|
74
|
-
console.log(
|
|
59
|
+
console.log('VIEWS : ', newViews, menus);
|
|
75
60
|
return newViews;
|
|
76
61
|
});
|
|
77
62
|
|
|
@@ -82,15 +67,15 @@ class Sidebar extends _react.default.Component {
|
|
|
82
67
|
let createItem = {};
|
|
83
68
|
createItem.name = items[i].attributes.label;
|
|
84
69
|
createItem.id = items[i].id;
|
|
85
|
-
createItem.mini =
|
|
86
|
-
createItem.layout =
|
|
70
|
+
createItem.mini = 'SS';
|
|
71
|
+
createItem.layout = '/admin';
|
|
87
72
|
createItem.item = items[i];
|
|
88
73
|
createItem.level = level;
|
|
89
74
|
|
|
90
75
|
if (!_Utils.default.isNull(items[i].subMenu)) {
|
|
91
76
|
createItem.collapse = true;
|
|
92
|
-
createItem.state = items[i].id +
|
|
93
|
-
createItem.views = getItems(items[i].subMenu.items, level + 1);
|
|
77
|
+
createItem.state = items[i].id + 'SubMenuCollapse';
|
|
78
|
+
createItem.views = this.getItems(items[i].subMenu.items, level + 1);
|
|
94
79
|
}
|
|
95
80
|
|
|
96
81
|
newItems.push(createItem);
|
|
@@ -124,24 +109,24 @@ class Sidebar extends _react.default.Component {
|
|
|
124
109
|
let service = {
|
|
125
110
|
url: '/ui/api/v1/menu/get',
|
|
126
111
|
parameters: [{
|
|
127
|
-
name:
|
|
112
|
+
name: 'id',
|
|
128
113
|
value: route.menu,
|
|
129
|
-
httpParameterType:
|
|
114
|
+
httpParameterType: 'QUERY_PARAMETER'
|
|
130
115
|
}, {
|
|
131
|
-
name:
|
|
116
|
+
name: 'version',
|
|
132
117
|
value: 1.0,
|
|
133
|
-
httpParameterType:
|
|
118
|
+
httpParameterType: 'QUERY_PARAMETER'
|
|
134
119
|
}],
|
|
135
|
-
contentType:
|
|
120
|
+
contentType: 'application/json'
|
|
136
121
|
};
|
|
137
122
|
(0, _RestUtils.invokeRest)(service, {
|
|
138
123
|
api: {
|
|
139
124
|
get id() {
|
|
140
|
-
return
|
|
125
|
+
return 'dashboard-sidebar';
|
|
141
126
|
}
|
|
142
127
|
|
|
143
128
|
}
|
|
144
|
-
},
|
|
129
|
+
}, 'dashboard-sidebar', result => {
|
|
145
130
|
resolve(this.getViews(result.menus, route.level + 1));
|
|
146
131
|
}, e => {
|
|
147
132
|
console.error(e);
|
|
@@ -150,6 +135,10 @@ class Sidebar extends _react.default.Component {
|
|
|
150
135
|
});
|
|
151
136
|
});
|
|
152
137
|
|
|
138
|
+
_defineProperty(this, "getLiClassName", prop => {
|
|
139
|
+
return "li-" + prop.level;
|
|
140
|
+
});
|
|
141
|
+
|
|
153
142
|
_defineProperty(this, "createLinks", routes => {
|
|
154
143
|
const {
|
|
155
144
|
rtlActive,
|
|
@@ -162,12 +151,13 @@ class Sidebar extends _react.default.Component {
|
|
|
162
151
|
|
|
163
152
|
if ((prop.collapse || prop.isParent) && prop.name !== 'Dashboard' && prop.name !== 'My Work Items') {
|
|
164
153
|
var st = {};
|
|
165
|
-
st[prop[
|
|
154
|
+
st[prop['state']] = !this.state[prop.state];
|
|
166
155
|
return /*#__PURE__*/_react.default.createElement("li", {
|
|
167
|
-
className: prop.collapse ? this.getCollapseInitialState(prop.views) ?
|
|
156
|
+
className: prop.collapse ? this.getCollapseInitialState(prop.views) + '-' + prop.level ? 'active ' + this.getLiClassName(prop) : this.getLiClassName(prop) : this.getLiClassName(prop),
|
|
168
157
|
key: key
|
|
169
158
|
}, /*#__PURE__*/_react.default.createElement("a", {
|
|
170
159
|
href: "#pablo",
|
|
160
|
+
className: 'li-link-' + prop.level,
|
|
171
161
|
"data-toggle": "collapse",
|
|
172
162
|
style: {
|
|
173
163
|
marginLeft: (prop.level + 1) * TAB + 'px'
|
|
@@ -193,57 +183,71 @@ class Sidebar extends _react.default.Component {
|
|
|
193
183
|
style: {
|
|
194
184
|
width: '28px'
|
|
195
185
|
}
|
|
196
|
-
}),
|
|
186
|
+
}), ' ', /*#__PURE__*/_react.default.createElement("span", null, ' ', prop.name, ' ', prop.collapse ? /*#__PURE__*/_react.default.createElement("span", {
|
|
197
187
|
className: "caret",
|
|
198
188
|
style: {
|
|
199
189
|
marginTop: '0'
|
|
200
190
|
}
|
|
201
|
-
}) : null),
|
|
191
|
+
}) : null), ' ', ' ') : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
202
192
|
className: "sidebar-normal",
|
|
203
193
|
style: {
|
|
204
|
-
paddingLeft:
|
|
194
|
+
paddingLeft: '4px'
|
|
205
195
|
}
|
|
206
|
-
},
|
|
196
|
+
}, ' ', prop.name, ' ', /*#__PURE__*/_react.default.createElement("b", {
|
|
207
197
|
className: "caret"
|
|
208
|
-
})),
|
|
198
|
+
})), ' '), ' '), ' ', prop.collapse && prop.views ? /*#__PURE__*/_react.default.createElement(_reactstrap.Collapse, {
|
|
209
199
|
isOpen: this.state[prop.state]
|
|
210
200
|
}, /*#__PURE__*/_react.default.createElement("ul", {
|
|
211
201
|
className: "nav"
|
|
212
|
-
}, " ", this.createLinks(prop.views), " "),
|
|
202
|
+
}, " ", this.createLinks(prop.views), " "), ' ') : null);
|
|
213
203
|
}
|
|
214
204
|
|
|
215
205
|
return /*#__PURE__*/_react.default.createElement("li", {
|
|
216
|
-
className: "",
|
|
206
|
+
className: "".concat('menu-link-li' + (this.activeRoute(prop.id) ? '-active' : '') + (prop.name === 'Dashboard' ? ' dashboard-link' : '')),
|
|
217
207
|
key: key,
|
|
218
208
|
style: this.activeRoute(prop.id) ? {
|
|
219
209
|
backgroundColor: (0, _core.lighten)(secondaryThemeColor, .9),
|
|
220
210
|
borderRadius: '16px',
|
|
221
211
|
color: secondaryThemeColor,
|
|
222
|
-
fontWeight: 500
|
|
223
|
-
marginRight: '8px'
|
|
212
|
+
fontWeight: 500
|
|
224
213
|
} : {}
|
|
225
214
|
}, /*#__PURE__*/_react.default.createElement(_MenuLink.default, {
|
|
226
215
|
config: prop.item,
|
|
227
|
-
clickCallback: prop.name === 'Dashboard' ?
|
|
216
|
+
clickCallback: prop.name === 'Dashboard' ? item => {
|
|
217
|
+
this.props.dashboardLauncher();
|
|
218
|
+
this.setState({ ...this.state,
|
|
219
|
+
activeRouteMenu: item
|
|
220
|
+
});
|
|
221
|
+
} : item => this.setState({ ...this.state,
|
|
222
|
+
activeRouteMenu: item
|
|
223
|
+
}),
|
|
228
224
|
autoClick: prop.name === 'My Work Items' || prop.item && prop.item.defaultItem,
|
|
229
225
|
viewId: "menuBar",
|
|
230
226
|
icon: prop.icon,
|
|
231
227
|
iconColor: (prop.name === 'Dashboard' || prop.name === 'My Work Items') && this.activeRoute(prop.id) ? secondaryThemeColor : null,
|
|
228
|
+
backgroundColor: this.activeRoute(prop.id) ? (0, _core.lighten)(secondaryThemeColor, .9) : null,
|
|
232
229
|
name: prop.name,
|
|
233
230
|
id: prop.id,
|
|
234
231
|
level: prop.level,
|
|
235
232
|
tab: TAB,
|
|
236
233
|
color: this.activeRoute(prop.id) ? secondaryThemeColor : null
|
|
237
|
-
}),
|
|
234
|
+
}), ' ');
|
|
238
235
|
});
|
|
239
236
|
});
|
|
240
237
|
|
|
241
238
|
_defineProperty(this, "activeRoute", routeName => {
|
|
242
239
|
// return this.props.location.pathname.indexOf(routeName) > -1 ? "active" : "";
|
|
243
|
-
return this.
|
|
240
|
+
return this.state.activeRouteMenu.id === routeName;
|
|
244
241
|
});
|
|
245
242
|
|
|
246
|
-
this.state = this.getCollapseStates(props.routes)
|
|
243
|
+
this.state = { ...this.getCollapseStates(props.routes),
|
|
244
|
+
isLoading: false,
|
|
245
|
+
error: false,
|
|
246
|
+
activeRouteMenu: {
|
|
247
|
+
id: 'dashboard',
|
|
248
|
+
name: 'Dashboard'
|
|
249
|
+
}
|
|
250
|
+
};
|
|
247
251
|
}
|
|
248
252
|
|
|
249
253
|
// this verifies if any of the collapses should be default opened on a rerender of this component
|
|
@@ -271,7 +275,7 @@ class Sidebar extends _react.default.Component {
|
|
|
271
275
|
|
|
272
276
|
componentDidMount() {
|
|
273
277
|
// if you are using a Windows Machine, the scrollbars will have a Mac look
|
|
274
|
-
if (navigator.platform.indexOf(
|
|
278
|
+
if (navigator.platform.indexOf('Win') > -1) {
|
|
275
279
|
/*ps = new PerfectScrollbar(this.refs.sidebar, {
|
|
276
280
|
suppressScrollX: true,
|
|
277
281
|
suppressScrollY: false,
|
|
@@ -282,7 +286,7 @@ class Sidebar extends _react.default.Component {
|
|
|
282
286
|
componentWillUnmount() {
|
|
283
287
|
// we need to destroy the false scrollbar when we navigate
|
|
284
288
|
// to a page that doesn't have this component rendered
|
|
285
|
-
if (navigator.platform.indexOf(
|
|
289
|
+
if (navigator.platform.indexOf('Win') > -1) {//ps.destroy();
|
|
286
290
|
}
|
|
287
291
|
}
|
|
288
292
|
|
|
@@ -307,16 +311,13 @@ class Sidebar extends _react.default.Component {
|
|
|
307
311
|
}
|
|
308
312
|
}, /*#__PURE__*/_react.default.createElement("img", {
|
|
309
313
|
src: logo.imgSrc,
|
|
310
|
-
style: {
|
|
311
|
-
width: '150px'
|
|
312
|
-
},
|
|
313
314
|
alt: "react-logo"
|
|
314
|
-
})),
|
|
315
|
+
})), ' ');
|
|
315
316
|
logoText = /*#__PURE__*/_react.default.createElement("a", {
|
|
316
317
|
href: logo.outterLink,
|
|
317
318
|
className: "simple-text ",
|
|
318
319
|
onClick: this.props.closeSidebar
|
|
319
|
-
}, logo.text,
|
|
320
|
+
}, logo.text, ' ');
|
|
320
321
|
}
|
|
321
322
|
|
|
322
323
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -328,15 +329,15 @@ class Sidebar extends _react.default.Component {
|
|
|
328
329
|
}
|
|
329
330
|
}, /*#__PURE__*/_react.default.createElement("table", {
|
|
330
331
|
style: {
|
|
331
|
-
height:
|
|
332
|
-
maxHeight:
|
|
333
|
-
width:
|
|
332
|
+
height: '96%',
|
|
333
|
+
maxHeight: '100%',
|
|
334
|
+
width: '100%'
|
|
334
335
|
}
|
|
335
336
|
}, /*#__PURE__*/_react.default.createElement("tbody", null, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", {
|
|
336
337
|
style: {
|
|
337
338
|
height: '10%'
|
|
338
339
|
}
|
|
339
|
-
},
|
|
340
|
+
}, ' ', logoImg !== null ? /*#__PURE__*/_react.default.createElement("div", {
|
|
340
341
|
className: "logo",
|
|
341
342
|
style: {
|
|
342
343
|
display: 'flex',
|
|
@@ -344,7 +345,7 @@ class Sidebar extends _react.default.Component {
|
|
|
344
345
|
alignItems: 'center',
|
|
345
346
|
height: '100%'
|
|
346
347
|
}
|
|
347
|
-
},
|
|
348
|
+
}, ' ', logoImg, ' ') : null, ' ', !_Utils.default.isNull(this.props.heading) ? /*#__PURE__*/_react.default.createElement("div", {
|
|
348
349
|
className: "logo",
|
|
349
350
|
style: {
|
|
350
351
|
display: 'flex',
|
|
@@ -358,24 +359,27 @@ class Sidebar extends _react.default.Component {
|
|
|
358
359
|
style: {
|
|
359
360
|
height: '70%'
|
|
360
361
|
},
|
|
361
|
-
valign:
|
|
362
|
+
valign: 'top'
|
|
362
363
|
}, /*#__PURE__*/_react.default.createElement(_reactstrap.Nav, {
|
|
363
364
|
style: {
|
|
364
|
-
margin:
|
|
365
|
-
padding:
|
|
366
|
-
}
|
|
365
|
+
margin: '8px',
|
|
366
|
+
padding: '16px'
|
|
367
|
+
},
|
|
368
|
+
className: 'nav-wrapper'
|
|
367
369
|
}, this.createLinks(this.props.routes)))), /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", {
|
|
370
|
+
className: 'sidebar-app-logo-wrapper',
|
|
368
371
|
style: {
|
|
369
372
|
height: '10%'
|
|
370
373
|
},
|
|
371
|
-
valign:
|
|
374
|
+
valign: 'top'
|
|
372
375
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
373
|
-
className:
|
|
376
|
+
className: 'sidebar-app-logo',
|
|
374
377
|
style: {
|
|
375
378
|
justifyContent: 'center',
|
|
376
379
|
height: '92px'
|
|
377
380
|
}
|
|
378
381
|
}, !_Utils.default.isNull(this.props.appLogoPath) ? /*#__PURE__*/_react.default.createElement("div", {
|
|
382
|
+
className: 'product-logo',
|
|
379
383
|
style: {
|
|
380
384
|
display: 'flex',
|
|
381
385
|
justifyContent: 'center',
|
|
@@ -393,13 +397,13 @@ class Sidebar extends _react.default.Component {
|
|
|
393
397
|
alignItems: 'center',
|
|
394
398
|
marginTop: '8px'
|
|
395
399
|
}
|
|
396
|
-
}, "Copyrights \xA9 ", 1900 + new Date().getYear(), " ",
|
|
400
|
+
}, "Copyrights \xA9 ", 1900 + new Date().getYear(), " ", ' ')))))));
|
|
397
401
|
}
|
|
398
402
|
|
|
399
403
|
}
|
|
400
404
|
|
|
401
405
|
Sidebar.propTypes = {
|
|
402
|
-
activeColor: _propTypes.default.oneOf([
|
|
406
|
+
activeColor: _propTypes.default.oneOf(['primary', 'blue', 'green', 'orange', 'red', 'agility']),
|
|
403
407
|
secondaryThemeColor: _propTypes.default.string.isRequired,
|
|
404
408
|
rtlActive: _propTypes.default.bool,
|
|
405
409
|
routes: _propTypes.default.array.isRequired,
|
|
@@ -415,7 +419,5 @@ Sidebar.propTypes = {
|
|
|
415
419
|
// this is used on responsive to close the sidebar on route navigation
|
|
416
420
|
closeSidebar: _propTypes.default.func
|
|
417
421
|
};
|
|
418
|
-
|
|
419
|
-
var _default = (0, _reactRouterDom.withRouter)((0, _reactRedux.connect)(propHandler, dispatch => (0, _redux.bindActionCreators)(_DashboardStore.actionCreators, dispatch))(Sidebar));
|
|
420
|
-
|
|
422
|
+
var _default = Sidebar;
|
|
421
423
|
exports.default = _default;
|
|
@@ -17,7 +17,7 @@ var _Autocomplete = _interopRequireDefault(require("@material-ui/lab/Autocomplet
|
|
|
17
17
|
|
|
18
18
|
require("./Form.css");
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _ApplicationManager = _interopRequireDefault(require("../../ApplicationManager"));
|
|
21
21
|
|
|
22
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
23
|
|
|
@@ -49,6 +49,7 @@ const AutoCompleteWrapper = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_reac
|
|
|
49
49
|
const [inputValue, setInputValue] = (0, _react.useState)('');
|
|
50
50
|
const baseValue = (0, _react.useRef)(null);
|
|
51
51
|
const [options, setOptions] = (0, _react.useState)([]);
|
|
52
|
+
const [entityStore] = (0, _react.useState)([]);
|
|
52
53
|
|
|
53
54
|
_react.default.useEffect(() => {
|
|
54
55
|
let minLen = _Utils.default.getComponentAttribute(props.config, 'minSearchAttributeLength', 1);
|
|
@@ -66,13 +67,18 @@ const AutoCompleteWrapper = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_reac
|
|
|
66
67
|
keys.push(currValue[props.config.attributes.searchAttribute]);
|
|
67
68
|
return keys;
|
|
68
69
|
}, []);
|
|
70
|
+
|
|
71
|
+
for (const valueElement of base.value) {
|
|
72
|
+
entityStore.push(valueElement);
|
|
73
|
+
}
|
|
74
|
+
|
|
69
75
|
baseValue.current = base.value;
|
|
70
76
|
setOptions(value.current);
|
|
71
77
|
}
|
|
72
78
|
}, [base.value]);
|
|
73
79
|
|
|
74
80
|
const fetchOptions = () => {
|
|
75
|
-
fetch(encodeURI(location +
|
|
81
|
+
fetch(encodeURI(location + _ApplicationManager.default.getContextRoot() + props.config.attributes.optionsUrlPath), {
|
|
76
82
|
method: 'POST',
|
|
77
83
|
headers: {
|
|
78
84
|
'Accept': 'application/json',
|
|
@@ -89,7 +95,22 @@ const AutoCompleteWrapper = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_reac
|
|
|
89
95
|
"currentPage": 0
|
|
90
96
|
})
|
|
91
97
|
}).then(status).then(json).then(data => {
|
|
92
|
-
|
|
98
|
+
let records = JSON.parse(data).records;
|
|
99
|
+
let newOptions = [];
|
|
100
|
+
|
|
101
|
+
for (const record of records) {
|
|
102
|
+
var _baseValue$current;
|
|
103
|
+
|
|
104
|
+
if (!((_baseValue$current = baseValue.current) !== null && _baseValue$current !== void 0 && _baseValue$current.find(o => o[props.config.attributes.searchAttribute] === record[props.config.attributes.searchAttribute]))) {
|
|
105
|
+
newOptions.push(record[props.config.attributes.searchAttribute]);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (!entityStore.find(o => o.username === record.username)) {
|
|
109
|
+
entityStore.push(record);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
setOptions(newOptions);
|
|
93
114
|
}).catch(ignored => {});
|
|
94
115
|
};
|
|
95
116
|
|
|
@@ -100,46 +121,26 @@ const AutoCompleteWrapper = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_reac
|
|
|
100
121
|
return /*#__PURE__*/_react.default.createElement(_Autocomplete.default, {
|
|
101
122
|
inputValue: inputValue,
|
|
102
123
|
multiple: true,
|
|
124
|
+
disabled: base.disabled,
|
|
103
125
|
value: value.current,
|
|
104
|
-
getOptionLabel: option => option ? option
|
|
126
|
+
getOptionLabel: option => option ? option : '',
|
|
105
127
|
onInputChange: (event, newValue) => handleInputChange(event, newValue),
|
|
106
128
|
onChange: (e, newValue, reason) => {
|
|
107
129
|
let val = [];
|
|
108
130
|
|
|
109
|
-
if (baseValue.current && Array.isArray(baseValue.current)) {
|
|
110
|
-
for (const baseValueElement of baseValue.current) {
|
|
111
|
-
if (baseValueElement) {
|
|
112
|
-
val.push(baseValueElement);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
baseValue.current = null;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
131
|
for (const newValueElement of newValue) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
if (!find) {
|
|
123
|
-
var _value$current;
|
|
124
|
-
|
|
125
|
-
find = (_value$current = value.current) === null || _value$current === void 0 ? void 0 : _value$current.find(o => o[props.config.attributes.searchAttribute] === newValueElement);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
if (find) {
|
|
129
|
-
val.push(find);
|
|
130
|
-
} else {
|
|
131
|
-
console.error("Cannot map autocomplete key : " + newValueElement);
|
|
132
|
-
}
|
|
132
|
+
val.push(entityStore.find(e => e[props.config.attributes.searchAttribute] === newValueElement));
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
value.current = newValue;
|
|
136
136
|
base.handleValueChange(val);
|
|
137
137
|
},
|
|
138
|
-
options: options
|
|
138
|
+
options: options,
|
|
139
139
|
id: props.config.id,
|
|
140
140
|
renderInput: params => /*#__PURE__*/_react.default.createElement(_TextField.default, _extends({
|
|
141
|
-
|
|
142
|
-
|
|
141
|
+
required: base.required,
|
|
142
|
+
error: base.hasError,
|
|
143
|
+
helperText: base.errorMessage,
|
|
143
144
|
variant: props.borderless ? 'standard' : 'outlined'
|
|
144
145
|
}, params, {
|
|
145
146
|
label: _Utils.default.getComponentAttribute(props.config, 'label', '')
|
|
@@ -11,7 +11,7 @@ var _Utils = _interopRequireDefault(require("../../Utils"));
|
|
|
11
11
|
|
|
12
12
|
var _Observable = _interopRequireDefault(require("../../event/Observable"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _ApplicationManager = _interopRequireDefault(require("../../ApplicationManager"));
|
|
15
15
|
|
|
16
16
|
var _Event = _interopRequireDefault(require("../../event/Event"));
|
|
17
17
|
|
|
@@ -32,9 +32,13 @@ const BaseField = props => {
|
|
|
32
32
|
|
|
33
33
|
const loadingRef = _react.default.useRef(true);
|
|
34
34
|
|
|
35
|
-
const [config, setConfig] = _react.default.useState(null);
|
|
35
|
+
const [config, setConfig] = _react.default.useState(null); // TODO : Replace the state value with the valueRef below. The state value is occationaly not available in time for event scripts
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
|
|
38
|
+
const [value, setValue] = _react.default.useState(!_Utils.default.isNull(props.value) ? props.value : null); // TODO : Replace the state value with this ref for the reason mensioned above
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
const valueRef = _react.default.useRef(!_Utils.default.isNull(props.value) ? props.value : null);
|
|
38
42
|
|
|
39
43
|
const [selectOptions, setSelectOptions] = _react.default.useState([]);
|
|
40
44
|
|
|
@@ -54,11 +58,14 @@ const BaseField = props => {
|
|
|
54
58
|
if (props.config.fieldType === 'SELECT' || props.config.fieldType === 'LOOKUP') {
|
|
55
59
|
if (!value || _Utils.default.isNull(value.id)) {
|
|
56
60
|
setValue(null);
|
|
61
|
+
valueRef.current = null;
|
|
57
62
|
} else {
|
|
58
63
|
setValue(value);
|
|
64
|
+
valueRef.current = value;
|
|
59
65
|
}
|
|
60
66
|
} else {
|
|
61
67
|
setValue(value);
|
|
68
|
+
valueRef.current = value;
|
|
62
69
|
}
|
|
63
70
|
}, [valueObject[valueProperty]]); // Change the required value and re-validate field if necessary
|
|
64
71
|
|
|
@@ -78,10 +85,10 @@ const BaseField = props => {
|
|
|
78
85
|
};
|
|
79
86
|
|
|
80
87
|
if (!_Utils.default.isNull(config.validator) && !_Utils.default.isNull(config.validator.script)) {
|
|
81
|
-
result
|
|
88
|
+
result = _DynamicJS.default.executeScriptObject("".concat(config.id, "Validator"), config.validator.script);
|
|
82
89
|
|
|
83
90
|
if (!result.valid) {
|
|
84
|
-
result.message = config.validator.message;
|
|
91
|
+
result.message = result.message ? result.message : config.validator.message;
|
|
85
92
|
}
|
|
86
93
|
}
|
|
87
94
|
|
|
@@ -89,11 +96,11 @@ const BaseField = props => {
|
|
|
89
96
|
result = _Utils.default.validateField(path.valueProperty, required, path.valueObject, currentValue, config.validator);
|
|
90
97
|
}
|
|
91
98
|
|
|
92
|
-
setErrorMessage(
|
|
93
|
-
setHasError(!result.valid &&
|
|
94
|
-
valid.current = result.valid &&
|
|
99
|
+
setErrorMessage(_ApplicationManager.default.isFormMarkersEnabled() ? result.message : '');
|
|
100
|
+
setHasError(!result.valid && _ApplicationManager.default.isFormMarkersEnabled());
|
|
101
|
+
valid.current = result.valid && _ApplicationManager.default.isFormMarkersEnabled();
|
|
95
102
|
|
|
96
|
-
if (
|
|
103
|
+
if (_ApplicationManager.default.isFormMarkersEnabled()) {
|
|
97
104
|
props.form().setFieldError(config.id, typeof result.message === 'undefined' ? null : result.message);
|
|
98
105
|
}
|
|
99
106
|
|
|
@@ -110,7 +117,7 @@ const BaseField = props => {
|
|
|
110
117
|
|
|
111
118
|
_Observable.default.addSubscriptions(parsedConfig.eventHandlingConfig, props.handle, props.viewId);
|
|
112
119
|
|
|
113
|
-
_Observable.default.addSystemSubscriptions(parsedConfig);
|
|
120
|
+
_Observable.default.addSystemSubscriptions(props.viewId, parsedConfig);
|
|
114
121
|
|
|
115
122
|
setConfig(parsedConfig);
|
|
116
123
|
setVisible(_Utils.default.evaluateBooleanExpression(parsedConfig.visible, parsedConfig.id, true));
|
|
@@ -128,12 +135,13 @@ const BaseField = props => {
|
|
|
128
135
|
}
|
|
129
136
|
|
|
130
137
|
if (!_Utils.default.isNull(props.config.value)) {
|
|
131
|
-
let scriptValue =
|
|
138
|
+
let scriptValue = _ApplicationManager.default.isExpression(props.config.value) ? _DynamicJS.default.executeScript(props.config.id.replace('.', '_') + 'Value', props.config.value) : props.config.value;
|
|
132
139
|
|
|
133
140
|
if (!_Utils.default.isNull(scriptValue)) {
|
|
134
141
|
let val = scriptValue.instanceType === 'TypedValue' ? scriptValue.value : scriptValue;
|
|
135
142
|
valueObject[valueProperty] = val;
|
|
136
143
|
setValue(val);
|
|
144
|
+
valueRef.current = val;
|
|
137
145
|
props.form().handleChange(config.id, val);
|
|
138
146
|
}
|
|
139
147
|
}
|
|
@@ -164,23 +172,26 @@ const BaseField = props => {
|
|
|
164
172
|
}, []);
|
|
165
173
|
|
|
166
174
|
const handleValueChange = newValue => {
|
|
167
|
-
let valueChanged = newValue !==
|
|
175
|
+
let valueChanged = newValue !== valueRef.current;
|
|
168
176
|
|
|
169
|
-
if (!_Utils.default.isNull(newValue) && !_Utils.default.isNull(
|
|
177
|
+
if (!_Utils.default.isNull(newValue) && !_Utils.default.isNull(valueRef.current)) {
|
|
170
178
|
if (props.config.fieldType === 'SELECT' || props.config.fieldType === 'LOOKUP') {
|
|
171
|
-
valueChanged = newValue.id !==
|
|
179
|
+
valueChanged = newValue.id !== valueRef.current.id;
|
|
180
|
+
} else if (props.config.fieldType === 'DATE' || props.config.fieldType === 'TIME') {
|
|
181
|
+
valueChanged = newValue !== valueRef.current;
|
|
172
182
|
} else {
|
|
173
|
-
valueChanged = JSON.stringify(
|
|
183
|
+
valueChanged = JSON.stringify(valueRef.current) !== JSON.stringify(newValue);
|
|
174
184
|
}
|
|
175
185
|
}
|
|
176
186
|
|
|
177
187
|
if (valueChanged) {
|
|
178
188
|
let id = props.config.dataBinding ? props.config.dataBinding : props.config.id;
|
|
179
189
|
|
|
180
|
-
|
|
190
|
+
_ApplicationManager.default.enableFormMarkers(true);
|
|
181
191
|
|
|
182
192
|
if (props.config.fieldType === 'SELECT') {
|
|
183
193
|
setValue(props.form().handleSelectItemChange(id, selectOptions, newValue));
|
|
194
|
+
valueRef.current = props.form().handleSelectItemChange(id, selectOptions, newValue);
|
|
184
195
|
|
|
185
196
|
for (const selectOption of selectOptions) {
|
|
186
197
|
if (selectOption.id === newValue) {
|
|
@@ -190,6 +201,7 @@ const BaseField = props => {
|
|
|
190
201
|
}
|
|
191
202
|
} else {
|
|
192
203
|
setValue(newValue);
|
|
204
|
+
valueRef.current = newValue;
|
|
193
205
|
props.form().handleChange(!_Utils.default.isNull(props.config.dataBinding) ? props.config.dataBinding : id, newValue);
|
|
194
206
|
}
|
|
195
207
|
|
|
@@ -251,11 +263,11 @@ const BaseField = props => {
|
|
|
251
263
|
return null;
|
|
252
264
|
},
|
|
253
265
|
|
|
254
|
-
set value(
|
|
255
|
-
handleValueChange(
|
|
266
|
+
set value(val) {
|
|
267
|
+
handleValueChange(val);
|
|
256
268
|
|
|
257
269
|
if (!_Utils.default.isNull(props.valueChangeCallback)) {
|
|
258
|
-
props.valueChangeCallback(
|
|
270
|
+
props.valueChangeCallback(val);
|
|
259
271
|
}
|
|
260
272
|
},
|
|
261
273
|
|
|
@@ -272,13 +284,13 @@ const BaseField = props => {
|
|
|
272
284
|
},
|
|
273
285
|
|
|
274
286
|
refresh() {
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
287
|
+
let parsedConfig = _Utils.default.parseConfig(props.config, props.viewId);
|
|
288
|
+
|
|
289
|
+
setVisible(_Utils.default.evaluateBooleanExpression(parsedConfig.visible, parsedConfig.id, true));
|
|
290
|
+
setDisabled(_Utils.default.evaluateBooleanExpression(parsedConfig.disabled, parsedConfig.id));
|
|
291
|
+
let requiredNewVal = !_Utils.default.isNull(parsedConfig.validator) ? !_Utils.default.evaluateBooleanExpression(parsedConfig.validator.nullable, parsedConfig.id, true) : false;
|
|
292
|
+
validateOnChange.current = required !== null && required !== requiredNewVal && loadingRef.current === false;
|
|
293
|
+
setRequired(requiredNewVal);
|
|
282
294
|
},
|
|
283
295
|
|
|
284
296
|
get required() {
|