@agilemotion/oui-react-js 1.8.42 → 1.8.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/ApplicationManager.js +10 -8
  2. package/dist/InteractionPortalApp.js +0 -1
  3. package/dist/InteractionPortalAppHome.js +69 -3
  4. package/dist/RestService.js +3 -3
  5. package/dist/Utils.js +7 -0
  6. package/dist/assets/jss/components/customInputStyle.js +0 -1
  7. package/dist/assets/jss/components/customInputStyle.jsx +0 -1
  8. package/dist/components/DataGrid.js +6 -2
  9. package/dist/components/DocumentTemplateDesignerComponent.css +2 -0
  10. package/dist/components/DocumentViewer.js +2 -2
  11. package/dist/components/SocketManager.js +4 -2
  12. package/dist/components/TitleBar.js +1 -1
  13. package/dist/components/Toolbar.js +1 -1
  14. package/dist/components/WordDocumentViewer.js +208 -16
  15. package/dist/components/customInput/CustomInput.js +4 -1
  16. package/dist/components/dashboard/FoldingSideTabDashboard.css +3 -0
  17. package/dist/components/dashboard/FoldingSideTabDashboard.js +24 -12
  18. package/dist/components/dashboard/SideMenuModuleDashboard.css +6 -5
  19. package/dist/components/dashboard/SideMenuModuleDashboard.js +5 -2
  20. package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.css +94 -0
  21. package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.js +111 -203
  22. package/dist/components/form/BaseField.js +1 -1
  23. package/dist/components/form/Form.css +2 -3
  24. package/dist/components/form/Form.js +5 -1
  25. package/dist/components/form/GridField.js +3 -1
  26. package/dist/components/form/RadioGroup.js +4 -1
  27. package/dist/components/layout/Layout.css +8 -0
  28. package/dist/components/layout/Layout.js +10 -1
  29. package/dist/components/layout/View.css +20 -6
  30. package/dist/components/layout/View.js +32 -1
  31. package/dist/components/layout/Window.js +1 -0
  32. package/dist/components/media/Chat.css +0 -0
  33. package/dist/components/media/Chat.js +86 -0
  34. package/dist/components/media/chat/ChatRoom.js +19 -12
  35. package/dist/components/signatures/AgilitySignaturePanel.js +2 -1
  36. package/package.json +3 -2
@@ -23,6 +23,7 @@ const View = props => {
23
23
  const [model] = _react.default.useState({});
24
24
  const loadingRef = _react.default.useRef(true);
25
25
  const paramsLoaded = _react.default.useRef(false);
26
+ const viewRef = _react.default.useRef(null);
26
27
  function registerInlineScriptLibraries() {
27
28
  if (!_Utils.default.isNull(props.config.lib)) {
28
29
  let libName = props.config.id + '_lib';
@@ -104,8 +105,37 @@ const View = props => {
104
105
  if (props.loadCallback) {
105
106
  props.loadCallback();
106
107
  }
108
+ const el = viewRef.current;
109
+ let ro;
110
+ if (el) {
111
+ let componentAttribute = _Utils.default.getComponentAttribute(props.config, 'headerHeight', null);
112
+ if (componentAttribute != null) {
113
+ const val = _Utils.default.normalizeCssSize(componentAttribute, "0");
114
+ el.style.setProperty("--view-header-h", val);
115
+ el.style.setProperty("--view-header-min", val);
116
+ }
117
+ const headerEl = el.querySelector('.sticky-header');
118
+ if (headerEl) {
119
+ // initialize the var to the floor so layout is valid before first callback
120
+ const floor = getComputedStyle(el).getPropertyValue('--view-header-min')?.trim() || '112px';
121
+ el.style.setProperty('--view-header-h', floor);
122
+ ro = new ResizeObserver(_ref => {
123
+ let [entry] = _ref;
124
+ // prefer borderBoxSize when available
125
+ const h = entry.borderBoxSize?.[0]?.blockSize ?? entry.borderBoxSize?.blockSize ?? entry.contentBoxSize?.[0]?.blockSize ?? entry.contentRect.height;
126
+ el.style.setProperty('--view-header-h', `${h}px`);
127
+ });
128
+ ro.observe(headerEl);
129
+ }
130
+ }
107
131
  return () => {
108
132
  _Observable.default.clearEventListeners(props.config.id);
133
+ if (el) {
134
+ el.style.removeProperty("--view-header-h");
135
+ }
136
+ if (ro) {
137
+ ro.disconnect();
138
+ }
109
139
  };
110
140
  }, []);
111
141
  function render(layout) {
@@ -174,7 +204,8 @@ const View = props => {
174
204
  style: _Utils.default.mergeStyles({
175
205
  minWidth: '128px',
176
206
  height: '100%'
177
- }, props.config)
207
+ }, props.config),
208
+ ref: viewRef
178
209
  }, render(props.config.layout));
179
210
  };
180
211
  exports.View = View;
@@ -216,6 +216,7 @@ const Window = props => {
216
216
  paper.style.right = '0';
217
217
  paper.style.position = 'absolute';
218
218
  paper.style.top = '72px';
219
+ paper.style.border = '20px solid red';
219
220
  paper.style.left = (isNaN(getLeftOffset()) ? '328' : getLeftOffset()) + 'px';
220
221
  let header = document.getElementsByClassName('dialogHeader')[0];
221
222
  header.getElementsByTagName('button')[0].style.color = 'rgba(0, 0, 0, 0.54)';
File without changes
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _Utils = _interopRequireDefault(require("../../Utils"));
9
+ require("./Chat.css");
10
+ var _Observable = _interopRequireDefault(require("../../event/Observable"));
11
+ var _Event = _interopRequireDefault(require("../../event/Event"));
12
+ var _EventType = _interopRequireDefault(require("../../event/EventType"));
13
+ var _ChatRoom = _interopRequireDefault(require("./chat/ChatRoom"));
14
+ var _RestService = require("../../RestService");
15
+ var _ApplicationManager = _interopRequireDefault(require("../../ApplicationManager"));
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ const Chat = props => {
18
+ const [chat, setChat] = _react.default.useState(null);
19
+ _react.default.useEffect(() => {
20
+ props.handle.api = api();
21
+ });
22
+ _react.default.useEffect(() => {
23
+ let parsedConfig = _Utils.default.parseConfig(props.config, props.viewId);
24
+ _Observable.default.addSubscriptions(parsedConfig.eventHandlingConfig, props.handle, props.viewId);
25
+ _Observable.default.addSystemSubscriptions(props.viewId, parsedConfig);
26
+ let event = new _Event.default(props.handle, props.viewId, null);
27
+ _Observable.default.fireEvent(_EventType.default.COMPONENT_LOAD, event);
28
+ return () => {};
29
+ }, []);
30
+ const api = () => {
31
+ return {
32
+ get id() {
33
+ return props.config.id;
34
+ },
35
+ loadData: (actionConfig, event) => {
36
+ let parsedConfig = _Utils.default.parseConfig(props.config, props.viewId);
37
+ let service = !_Utils.default.isNull(parsedConfig.dataService) ? parsedConfig.dataService : !_Utils.default.isNull(actionConfig) ? actionConfig.dataService : null;
38
+ if (!_Utils.default.isNull(service)) {
39
+ let serviceType = service.type;
40
+ if (!serviceType) {
41
+ serviceType = 'rpc';
42
+ }
43
+ if (serviceType === 'rpc' || serviceType === 'rest') {
44
+ let method = serviceType === 'rpc' ? _RestService.invokeRpc : _RestService.invokeRest;
45
+ method({
46
+ service: service,
47
+ component: props.handle,
48
+ viewId: props.viewId,
49
+ event
50
+ }).then(result => {
51
+ setChat(result);
52
+ }).catch(e => {
53
+ console.error(e);
54
+ if (e.errorType !== 'INVALID_PARAMETER') {
55
+ _Utils.default.publishErrorMessage(e, props.viewId);
56
+ }
57
+ });
58
+ } else {
59
+ throw new Error('Unknown service type : ' + serviceType);
60
+ }
61
+ } else {
62
+ if (actionConfig && actionConfig.value) {
63
+ let data = _ApplicationManager.default.resolveParameterConfigValue(actionConfig.value);
64
+ setChat(data);
65
+ }
66
+ }
67
+ }
68
+ };
69
+ };
70
+ return /*#__PURE__*/_react.default.createElement("div", {
71
+ className: props.config.className ? props.config.className : null,
72
+ style: _Utils.default.mergeStyles({
73
+ width: '100%',
74
+ height: '100%'
75
+ }, props.config)
76
+ }, chat && /*#__PURE__*/_react.default.createElement(_ChatRoom.default, {
77
+ headerStyle: props.config.attributes?.headerStyle,
78
+ chatTab: true,
79
+ selectedChat: chat,
80
+ isHost: false,
81
+ disableMessageDelete: props.config.disableMessageDelete,
82
+ disableFileAttachment: props.config.disableFileAttachment,
83
+ showAllMessagesForNewParticipants: props.config.showAllMessagesForNewParticipants
84
+ }));
85
+ };
86
+ var _default = exports.default = Chat;
@@ -72,7 +72,8 @@ const ChatRoom = props => {
72
72
  };
73
73
  };
74
74
  const fetchChat = () => {
75
- (0, _RestUtils.sendRequest)(`${location + '/' + _ApplicationManager.default.getContextRoot()}/calendar/api/v1/chat/fetchMeetingChat/${selectedChat.meetingId}`, response => {
75
+ let url = selectedChat.meetingId ? `${location + '/' + _ApplicationManager.default.getContextRoot()}/calendar/api/v1/chat/fetchMeetingChat/${selectedChat.meetingId}` : `${location + '/' + _ApplicationManager.default.getContextRoot()}/calendar/api/v1/chat/fetch/${selectedChat.id}`;
76
+ (0, _RestUtils.sendRequest)(url, response => {
76
77
  if (response && response.id) {
77
78
  setSelectedChat(response);
78
79
  }
@@ -144,11 +145,14 @@ const ChatRoom = props => {
144
145
  scrollToBottom();
145
146
  if (selectedChat) {
146
147
  const newMessages = [].concat(selectedChat.messages);
147
- let find = selectedChat.participants.find(p => p.userId === currentUser.userId);
148
- const dateAddedToChat = find ? find.dateAddedToChat : new Date();
149
- const filteredMessages = newMessages.filter(txt => dateAddedToChat === null || new Date(dateAddedToChat) < new Date(txt.createdDate));
150
- console.log("FILTERED : ", filteredMessages);
151
- setMessages(filteredMessages);
148
+ if (!props.showAllMessagesForNewParticipants) {
149
+ let find = selectedChat.participants.find(p => p.userId === currentUser.userId);
150
+ const dateAddedToChat = find ? find.dateAddedToChat : new Date();
151
+ const filteredMessages = newMessages.filter(txt => dateAddedToChat === null || new Date(dateAddedToChat) < new Date(txt.createdDate));
152
+ setMessages(filteredMessages);
153
+ } else {
154
+ setMessages(newMessages);
155
+ }
152
156
  }
153
157
  setLoading(false);
154
158
  };
@@ -249,7 +253,7 @@ const ChatRoom = props => {
249
253
  skipAlert: props.chatTab || finalMessage,
250
254
  newChat: selectedChat.messages.length === 0,
251
255
  meetingId: props.meetingId ? props.meetingId : null,
252
- profile: _ApplicationManager.default.getUserDetails().profile
256
+ profile: _ApplicationManager.default.getActiveTenant() || _ApplicationManager.default.getUserDetails().profile
253
257
  }).then(data => {
254
258
  msg.id = data.id;
255
259
  setMessages(oldMsgs => [...oldMsgs, msg]);
@@ -257,7 +261,9 @@ const ChatRoom = props => {
257
261
  if (props.onMessage && selectedChat) {
258
262
  props.onMessage(msg, selectedChat);
259
263
  }
260
- }).catch(error => {});
264
+ }).catch(error => {
265
+ console.log("Error sending chat message : ", error);
266
+ });
261
267
  }
262
268
  setMessage('');
263
269
  setImgUploadConfirm('');
@@ -537,7 +543,7 @@ const ChatRoom = props => {
537
543
  }
538
544
  }, /*#__PURE__*/_react.default.createElement("div", {
539
545
  className: 'col chat-time'
540
- }, (0, _moment.default)(message.createdDate).format('DD/MM, HH:mm')), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
546
+ }, (0, _moment.default)(message.createdDate).format('DD/MM, HH:mm')), !props.disableMessageDelete && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
541
547
  component: "span",
542
548
  onClick: () => {
543
549
  deleteChatMessage(message);
@@ -572,7 +578,7 @@ const ChatRoom = props => {
572
578
  }
573
579
  }, /*#__PURE__*/_react.default.createElement("div", {
574
580
  className: 'col chat-time'
575
- }, (0, _moment.default)(message.createdDate).format('DD/MM, HH:mm')), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
581
+ }, (0, _moment.default)(message.createdDate).format('DD/MM, HH:mm')), !props.disableMessageDelete && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
576
582
  component: "span",
577
583
  onClick: () => {
578
584
  deleteChatMessage(message);
@@ -650,7 +656,8 @@ const ChatRoom = props => {
650
656
  return /*#__PURE__*/_react.default.createElement("div", {
651
657
  className: "chatroom"
652
658
  }, /*#__PURE__*/_react.default.createElement("div", {
653
- className: "chatroom__header"
659
+ className: "chatroom__header",
660
+ style: _Utils.default.mergeObjects({}, props.headerStyle)
654
661
  }, !props.chatTab && /*#__PURE__*/_react.default.createElement("div", {
655
662
  className: "chatroom__headerright"
656
663
  }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
@@ -687,7 +694,7 @@ const ChatRoom = props => {
687
694
  style: {
688
695
  position: 'relative'
689
696
  }
690
- }, /*#__PURE__*/_react.default.createElement("div", {
697
+ }, !props.disableFileAttachment && /*#__PURE__*/_react.default.createElement("div", {
691
698
  className: "file-upload chats-file-upload",
692
699
  style: {
693
700
  zIndex: !_Utils.default.isNull(documents) ? 1 : 0
@@ -212,7 +212,8 @@ const AgilitySignaturePanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_rea
212
212
  })
213
213
  }, "SIGN")))), /*#__PURE__*/_react.default.createElement("div", {
214
214
  style: {
215
- width: '100%'
215
+ width: '100%',
216
+ overflowX: 'hidden'
216
217
  }
217
218
  }, /*#__PURE__*/_react.default.createElement(_DocumentContainer.default, {
218
219
  config: props.config,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agilemotion/oui-react-js",
3
- "version": "1.8.42",
3
+ "version": "1.8.44",
4
4
  "description": "AgileMotion React UI Component Library - A comprehensive collection of dashboard components, forms, media controls, and more",
5
5
  "license": "ISC",
6
6
  "author": "",
@@ -62,6 +62,7 @@
62
62
  "@syncfusion/ej2-react-base": "^26.2.10",
63
63
  "@syncfusion/ej2-react-documenteditor": "^26.2.14",
64
64
  "@syncfusion/ej2-react-popups": "^26.2.11",
65
+ "@syncfusion/ej2-react-splitbuttons": "^31.2.2",
65
66
  "@syncfusion/ej2-splitbuttons": "^26.2.10",
66
67
  "@testing-library/dom": "^10.4.0",
67
68
  "@testing-library/jest-dom": "^6.6.3",
@@ -93,10 +94,10 @@
93
94
  "process": "^0.11.10",
94
95
  "prop-types": "^15.7.2",
95
96
  "react": "^18.3.1",
96
- "react-dom": "^18.3.1",
97
97
  "react-bootstrap": "^1.5.2",
98
98
  "react-bootstrap-switch": "^15.5.3",
99
99
  "react-confirm-alert": "^3.0.6",
100
+ "react-dom": "^18.3.1",
100
101
  "react-draggable": "^4.4.6",
101
102
  "react-feather": "^2.0.10",
102
103
  "react-google-autocomplete": "^2.7.3",