@agilemotion/oui-react-js 1.8.69 → 1.8.70

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/Utils.js CHANGED
@@ -326,6 +326,12 @@ class Utils {
326
326
  }
327
327
  return current[keys[keys.length - 1]];
328
328
  }
329
+ static stripHtml(html) {
330
+ if (!html) return '';
331
+ const temp = document.createElement('div');
332
+ temp.innerHTML = html;
333
+ return temp.textContent.replace(/\s+/g, ' ').trim();
334
+ }
329
335
  }
330
336
  exports.default = Utils;
331
337
  _Utils = Utils;
@@ -9,6 +9,8 @@ var _Utils = _interopRequireDefault(require("../Utils"));
9
9
  var _Alert = _interopRequireDefault(require("react-bootstrap/Alert"));
10
10
  var _EventType = _interopRequireDefault(require("../event/EventType"));
11
11
  var _Observable = _interopRequireDefault(require("../event/Observable"));
12
+ var _OverlayTrigger = _interopRequireDefault(require("react-bootstrap/OverlayTrigger"));
13
+ var _Tooltip = _interopRequireDefault(require("react-bootstrap/Tooltip"));
12
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
15
  const AlertBar = /*#__PURE__*/_react.default.memo(props => {
14
16
  const [message, setMessage] = _react.default.useState(props.config.message);
@@ -77,8 +79,14 @@ const AlertBar = /*#__PURE__*/_react.default.memo(props => {
77
79
  width: '100%'
78
80
  }
79
81
  }, /*#__PURE__*/_react.default.createElement("p", {
82
+ title: message,
80
83
  style: {
81
- color: 'rgba(255, 255, 255, 0.8)'
84
+ color: 'rgba(255, 255, 255, 0.8)',
85
+ overflow: 'hidden',
86
+ textOverflow: 'ellipsis',
87
+ whiteSpace: 'nowrap',
88
+ maxWidth: 'calc(100% - 32px)',
89
+ margin: 0
82
90
  }
83
91
  }, message))) : null;
84
92
  });
@@ -42,11 +42,12 @@ const TabPage = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.for
42
42
  let componentKey = 0;
43
43
  return /*#__PURE__*/_react.default.createElement("div", {
44
44
  style: _Utils.default.mergeStyles({
45
- width: "100%"
45
+ width: "100%",
46
+ height: '100%'
46
47
  }, props.config)
47
48
  }, /*#__PURE__*/_react.default.createElement(_Typography.default, _extends({
48
49
  component: "div",
49
- className: "w-100",
50
+ className: "w-100 h-100",
50
51
  role: "tabpanel",
51
52
  hidden: value !== index,
52
53
  id: "simple-tabpanel-".concat(index),
@@ -56,7 +57,8 @@ const TabPage = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.for
56
57
  className: classes.formTabPanel,
57
58
  style: {
58
59
  margin: 0,
59
- padding: 0
60
+ padding: 0,
61
+ height: '100%'
60
62
  }
61
63
  }, children)));
62
64
  }));
@@ -105,9 +105,6 @@ const TabPanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.fo
105
105
  }
106
106
  function renderPage(page, pageIndex) {
107
107
  return /*#__PURE__*/_react.default.createElement("div", {
108
- style: {
109
- margin: '16px'
110
- },
111
108
  className: 'tab-page-container'
112
109
  }, page.components.map((component, index) => {
113
110
  return renderTabPageComponent(component, page.id, pageIndex + index);
@@ -150,16 +147,17 @@ const TabPanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.fo
150
147
  };
151
148
  };
152
149
  return !_Utils.default.isNull(visibleTabPages) && /*#__PURE__*/_react.default.createElement("div", {
153
- style: _Utils.default.mergeStyles({
154
- width: '100%'
155
- }, props.config)
150
+ style: {
151
+ width: '100%',
152
+ height: '100%'
153
+ }
156
154
  }, /*#__PURE__*/_react.default.createElement(_AppBar.default, {
157
155
  position: "static",
158
156
  color: "default",
159
157
  style: {
160
158
  background: 'transparent',
161
159
  boxShadow: 'none',
162
- borderBottom: '1px solid #d1d1d1'
160
+ border: '1px solid #d1d1d1'
163
161
  }
164
162
  }, /*#__PURE__*/_react.default.createElement(_Tabs.default, {
165
163
  value: tabValue,
@@ -186,6 +184,7 @@ const TabPanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.fo
186
184
  }, a11yProps(index), {
187
185
  sx: {
188
186
  maxWidth: 240,
187
+ height: '100%',
189
188
  // constrain so wrapping can occur
190
189
  whiteSpace: 'normal',
191
190
  // allow wrap
@@ -195,13 +194,23 @@ const TabPanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.fo
195
194
  // keep original casing
196
195
  color: _ApplicationManager.default.isFormMarkersEnabled() && errors !== null && errors[page.id] === true ? '#ed5249' : undefined
197
196
  }
198
- }))))), visibleTabPages.map((page, index) => {
199
- return /*#__PURE__*/_react.default.createElement(_TabPage.default, {
197
+ }))))), /*#__PURE__*/_react.default.createElement("div", {
198
+ style: _Utils.default.mergeStyles({
199
+ width: '100%',
200
+ height: 'calc(100% - 64px)'
201
+ }, props.config)
202
+ }, visibleTabPages.map((page, index) => {
203
+ return /*#__PURE__*/_react.default.createElement("div", {
204
+ style: {
205
+ height: '100%',
206
+ display: tabValue === index ? null : 'none'
207
+ }
208
+ }, /*#__PURE__*/_react.default.createElement(_TabPage.default, {
200
209
  value: tabValue,
201
210
  key: index,
202
211
  index: index,
203
212
  config: page
204
- }, renderPage(page, index));
205
- }));
213
+ }, renderPage(page, index)));
214
+ })));
206
215
  }));
207
216
  var _default = exports.default = TabPanel;
@@ -57,13 +57,10 @@ const TitleBar = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.fo
57
57
  return /*#__PURE__*/_react.default.createElement("div", {
58
58
  className: 'title-bar'
59
59
  }, /*#__PURE__*/_react.default.createElement("div", {
60
- style: {
61
- padding: '4px 0 4px 0',
62
- fontSize: '24px',
63
- color: '#202124'
64
- }
60
+ className: "title-bar-content",
61
+ title: _Utils.default.stripHtml(title)
65
62
  }, /*#__PURE__*/_react.default.createElement(_reactHtmlRenderer.default, {
66
- html: "<p>".concat(title, "</p>")
63
+ html: title
67
64
  })));
68
65
  }));
69
66
  var _default = exports.default = TitleBar;
@@ -14,7 +14,7 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
14
14
  const SelectItemComponent = props => {
15
15
  var _props$config$attribu, _props$config$attribu2, _props$config$attribu3, _props$config$attribu4;
16
16
  const base = props.base;
17
- const [optionsLoaded, setOptionsLoaded] = _react.default.useState(false);
17
+ const optionsLoaded = _react.default.useRef(false);
18
18
  const [loadFullOptionList, setLoadFullOptionList] = _react.default.useState(false);
19
19
  const [value, setValue] = _react.default.useState(_Utils.default.isNull(props.value) ? '' : props.value.id);
20
20
  const initialValue = _react.default.useRef(null);
@@ -26,7 +26,7 @@ const SelectItemComponent = props => {
26
26
  let defaultOptions = [];
27
27
  defaultOptions.push(newValue);
28
28
  base.setSelectOptions(defaultOptions);
29
- setOptionsLoaded(true);
29
+ optionsLoaded.current = true;
30
30
  console.log("DEFAULT SETTINGS SET");
31
31
  }
32
32
  if (_Utils.default.isNull(initialValue.current) && !_Utils.default.isNull(newValue)) {
@@ -35,11 +35,12 @@ const SelectItemComponent = props => {
35
35
  setValue(newValue ? newValue.id : '');
36
36
  }
37
37
  _react.default.useEffect(() => {
38
- processValueChange(base.value, optionsLoaded);
38
+ processValueChange(base.value, optionsLoaded.current);
39
39
  }, [base.value]);
40
40
  _react.default.useEffect(() => {
41
- initialValue.current = null;
42
- processValueChange(base.valueObject[base.valueProperty], false);
41
+ if (!initialValue.current) {
42
+ processValueChange(base.valueObject[base.valueProperty], optionsLoaded.current);
43
+ }
43
44
  }, [base.valueObject[base.valueProperty]]);
44
45
  _react.default.useEffect(() => {
45
46
  if (!_Utils.default.isNull(base.selectOptions) && base.selectOptions.length > 0) {
@@ -75,7 +76,7 @@ const SelectItemComponent = props => {
75
76
  _Utils.default.publishErrorMessage(e, props.viewId);
76
77
  }
77
78
  });
78
- setOptionsLoaded(true);
79
+ optionsLoaded.current = true;
79
80
  }
80
81
  }, [loadFullOptionList, props.refreshData]);
81
82
  return /*#__PURE__*/_react.default.createElement(_material.FormControl, {
@@ -1,8 +1,8 @@
1
1
  .parent-layout {
2
2
  overflow: hidden;
3
- block-size: 100dvh;
4
3
  display: flex;
5
4
  flex-direction: column;
6
- height: auto !important;
7
- padding: 16px !important;
5
+ height: 100% !important;
6
+ width: 100% !important;
7
+ padding: 8px 0 0 0 !important;
8
8
  }
@@ -1,4 +1,4 @@
1
- :root { --header-h: 72px; --view-header-h: 112px; --view-header-min: 112px}
1
+ :root { --header-h: 72px; --view-header-h: 104px; --view-header-min: 104px}
2
2
 
3
3
  .view {
4
4
  padding: 16px 8px 16px 32px;
@@ -31,12 +31,48 @@
31
31
  font-weight: bold;
32
32
  }
33
33
 
34
+ .title-bar {
35
+ height: 36px;
36
+ display: flex;
37
+ align-items: center;
38
+ }
39
+
40
+ .title-bar-content {
41
+ font-size: 24px;
42
+ color: #202124;
43
+
44
+ overflow: hidden;
45
+ white-space: nowrap;
46
+ text-overflow: ellipsis;
47
+
48
+ width: 100%;
49
+ }
50
+
51
+ .title-bar-content p {
52
+ display: inline;
53
+ margin: 0;
54
+ padding: 0;
55
+ }
56
+
57
+ .default-oui-layout {
58
+ min-height: 0;
59
+ }
60
+
34
61
  .view .sticky-header {
35
- position: sticky; top: 0; z-index: 1;
36
- box-sizing: border-box;
37
- block-size: auto; /* allow both grow & shrink */
38
- min-block-size: var(--view-header-min); /* constant floor only */
39
- overflow: visible;
62
+ position: sticky;
63
+ top: 0;
64
+ z-index: 10;
65
+
66
+ height: var(--view-header-h);
67
+ min-height: var(--view-header-h);
68
+ max-height: var(--view-header-h);
69
+
70
+ overflow: hidden !important;
71
+ background: #fff;
72
+
73
+ display: flex;
74
+ flex-direction: column;
75
+ justify-content: flex-end; /* pushes content to the bottom */
40
76
  }
41
77
 
42
78
  .view .scrolling-body {
@@ -74,6 +110,10 @@
74
110
  .max-h-40 {
75
111
  }
76
112
 
113
+ .tab-page-container {
114
+ height: 100%;
115
+ }
116
+
77
117
  /* 150% zoom res */
78
118
  @media (max-width: 1512px) and (max-height: 982px) and (min-resolution: 2dppx) {
79
119
  .max-h-40 {
@@ -17,7 +17,7 @@ class ProcurementMeetings {
17
17
  _defineProperty(this, "emitSocketEvent", (viewId, systemEventType, data, meeting) => {
18
18
  return new Promise((resolve, reject) => {
19
19
  let recipientIds = [];
20
- if (meeting) {
20
+ if (meeting && meeting.attendees) {
21
21
  for (const attendee of meeting.attendees) {
22
22
  let username = attendee.username;
23
23
  if (username !== _ApplicationManager.default.getUserDetails().username) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agilemotion/oui-react-js",
3
- "version": "1.8.69",
3
+ "version": "1.8.70",
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": "",