@agilemotion/oui-react-js 1.8.38 → 1.8.40

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 (37) hide show
  1. package/dist/ApplicationManager.js +6 -3
  2. package/dist/Utils.js +3 -0
  3. package/dist/components/DocumentViewer.js +5 -4
  4. package/dist/components/FaceApi.js +30 -0
  5. package/dist/components/facialRecognition/FaceRecognitionComponent.js +7 -23
  6. package/dist/components/form/LookupField.js +1 -1
  7. package/dist/components/layout/CollapsiblePanel.css +9 -9
  8. package/dist/components/layout/View.css +125 -125
  9. package/dist/components/layout/Window.js +31 -22
  10. package/dist/components/loader.css +36 -36
  11. package/dist/components/media/Video.css +4 -4
  12. package/dist/components/signatures/ResponsiveTable.css +91 -91
  13. package/dist/components/signatures/widgets.css +126 -126
  14. package/dist/event/RouteActionHandler.js +1 -1
  15. package/package.json +6 -10
  16. package/dist/assets/models/_base.js +0 -3
  17. package/dist/components/form/ImageEditor_bck.js +0 -466
  18. package/dist/models/_base.js +0 -3
  19. package/dist/models/age_gender_model-shard1 +0 -0
  20. package/dist/models/age_gender_model-weights_manifest.json +0 -1
  21. package/dist/models/face_expression_model-shard1 +0 -0
  22. package/dist/models/face_expression_model-weights_manifest.json +0 -1
  23. package/dist/models/face_landmark_68_model-shard1 +0 -0
  24. package/dist/models/face_landmark_68_model-weights_manifest.json +0 -1
  25. package/dist/models/face_landmark_68_tiny_model-shard1 +0 -0
  26. package/dist/models/face_landmark_68_tiny_model-weights_manifest.json +0 -1
  27. package/dist/models/face_recognition_model-shard1 +0 -0
  28. package/dist/models/face_recognition_model-shard2 +0 -6
  29. package/dist/models/face_recognition_model-weights_manifest.json +0 -1
  30. package/dist/models/mtcnn_model-shard1 +0 -0
  31. package/dist/models/mtcnn_model-weights_manifest.json +0 -1
  32. package/dist/models/ssd_mobilenetv1_model-shard1 +0 -0
  33. package/dist/models/ssd_mobilenetv1_model-shard2 +8 -137
  34. package/dist/models/ssd_mobilenetv1_model-weights_manifest.json +0 -1
  35. package/dist/models/tiny_face_detector_model-shard1 +0 -0
  36. package/dist/models/tiny_face_detector_model-weights_manifest.json +0 -1
  37. package/dist/view/Dashboard.bck.js +0 -562
@@ -299,12 +299,15 @@ class ApplicationManager {
299
299
  cachedFile.content = file.content;
300
300
  }
301
301
  };
302
- updateContext = values => {
303
- _Observable.default.emitContextChangeEvent(applicationContext, values);
302
+ updateContext = (() => function (values) {
303
+ let publish = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
304
+ if (publish) {
305
+ _Observable.default.emitContextChangeEvent(applicationContext, values);
306
+ }
304
307
  Object.keys(values).forEach(key => {
305
308
  applicationContext[key] = values[key];
306
309
  });
307
- };
310
+ })();
308
311
 
309
312
  /**
310
313
  * add view configuration
package/dist/Utils.js CHANGED
@@ -149,6 +149,9 @@ class Utils {
149
149
  static getFieldColspan = field => {
150
150
  return !Utils.isNull(field.attributes) && !Utils.isNull(field.attributes['colspan']) ? parseInt(typeof field.attributes.colspan === 'string' ? _DynamicJS.default.executeScript("__colspan_" + field.id, field.attributes.colspan) : field.attributes.colspan) : 1;
151
151
  };
152
+ static prop = value => {
153
+ return _ApplicationManager.default.isExpression(value) ? _DynamicJS.default.executeScript("readProp_" + Math.random(), value, null, true, null, null, false) : value;
154
+ };
152
155
  static createRow = () => {
153
156
  let row = {};
154
157
  row.fields = [];
@@ -40,11 +40,12 @@ const DocumentViewer = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defa
40
40
  }
41
41
  }, []);
42
42
  function doLoadData(actionConfig) {
43
+ let parsedConfig = _Utils.default.parseConfig(props.config, props.viewId);
43
44
  if (!_Utils.default.isNull(actionConfig) && !_Utils.default.isNull(actionConfig.value)) {
44
45
  let value = _ApplicationManager.default.isExpression(actionConfig.value) ? _ApplicationManager.default.resolveExpressionValue(actionConfig.value) : actionConfig.value;
45
46
  // TODO : set value
46
47
  } else {
47
- let service = !_Utils.default.isNull(props.config.dataService) ? props.config.dataService : actionConfig !== null ? actionConfig.dataService : null;
48
+ let service = !_Utils.default.isNull(parsedConfig.dataService) ? parsedConfig.dataService : actionConfig !== null ? actionConfig.dataService : null;
48
49
  if (!_Utils.default.isNull(service)) {
49
50
  if (service.type === 'rpc') {
50
51
  (0, _RestService.invokeRpc)({
@@ -66,7 +67,7 @@ const DocumentViewer = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defa
66
67
  file.base64 = data.url.replace('data:application/pdf;base64,', '').replace('data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,', '');
67
68
  }
68
69
  file.name = data.name;
69
- file.type = props.config.fileType;
70
+ file.type = _Utils.default.prop(parsedConfig.fileType);
70
71
  setValue(file);
71
72
  setHasLoadingError(false);
72
73
  setLoading(false);
@@ -141,10 +142,10 @@ const DocumentViewer = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defa
141
142
  marginTop: '16px',
142
143
  color: 'red'
143
144
  }
144
- }, "Error loading document"), !loading && !hasLoadingError && props.config.fileType === 'application/pdf' && !_Utils.default.isNull(value) && /*#__PURE__*/_react.default.createElement(_PDFViewer.default, {
145
+ }, "Error loading document"), !loading && !hasLoadingError && _Utils.default.prop(parsedConfig.fileType) === 'application/pdf' && !_Utils.default.isNull(value) && /*#__PURE__*/_react.default.createElement(_PDFViewer.default, {
145
146
  file: value,
146
147
  onDocumentLoadSuccess: () => {}
147
- }), !loading && !hasLoadingError && props.config.fileType === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' && (!_Utils.default.isNull(value) || props.config.enableUpload) && /*#__PURE__*/_react.default.createElement(_WordDocumentViewer.default, {
148
+ }), !loading && !hasLoadingError && _Utils.default.prop(parsedConfig.fileType) === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' && (!_Utils.default.isNull(value) || props.config.enableUpload) && /*#__PURE__*/_react.default.createElement(_WordDocumentViewer.default, {
148
149
  file: value,
149
150
  onDocumentLoadSuccess: () => {},
150
151
  valueHandler: wordEditorValueHandler,
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = initModules;
7
+ function initModules() {
8
+ try {
9
+ const ctx = require.context('../assets/models', false, /\.(json|bin)$/);
10
+ ctx.keys().forEach(ctx);
11
+ } catch (e) {
12
+ try {
13
+ if (import.meta && import.meta.glob) {
14
+ const _ = import.meta.glob('../assets/models/*.{json,bin}', {
15
+ eager: true
16
+ });
17
+ }
18
+ } catch (_) {}
19
+ }
20
+ try {
21
+ // emit .bin shards
22
+ const ctxBin = require.context('@agilemotion/oui-react-js/dist/assets/models', false, /\.bin$/);
23
+ ctxBin.keys().forEach(ctxBin);
24
+ } catch {}
25
+ try {
26
+ // emit extension-less shards (…-shard1, …-part1, etc.)
27
+ const ctxExtless = require.context('@agilemotion/oui-react-js/dist/assets/models', false, /(?:^|\/)[^/]+-(?:shard|part)\d+$/);
28
+ ctxExtless.keys().forEach(ctxExtless);
29
+ } catch {}
30
+ }
@@ -10,35 +10,19 @@ var _faceApi2 = require("./service/faceApi");
10
10
  var _reactRouterDom = require("react-router-dom");
11
11
  require("./FacialRecognition.css");
12
12
  var _Button = _interopRequireDefault(require("@mui/material/Button"));
13
- var _Utils = _interopRequireDefault(require("../../Utils"));
14
- var _base = require("../../assets/models/_base.js");
15
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
14
  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); }
17
15
  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; }
18
- function preloadFaceApiModelFiles() {
19
- // Webpack: include all json/bin in ../models. This runs at build-time (no runtime cost).
16
+ function getModelsBase() {
20
17
  try {
21
- var ctx = require.context('../../assets/models', false, /\.(json|bin)$/);
22
- ctx.keys().forEach(ctx);
23
- } catch (e) {
24
- console.error(e);
25
- // Not Webpack (e.g., Vite) — try Vite's glob import if available
26
- try {
27
- if (import.meta && import.meta.glob) {
28
- var _ = import.meta.glob('../../assets/models/*.{json,bin}', {
29
- eager: true
30
- });
31
- }
32
- } catch (e2) {
33
- console.error(e2);
34
- // ignore — some toolchains will still work via the direct URL reference above
35
- }
18
+ const u = new URL('../../assets/models/ssd_mobilenetv1_model-weights_manifest.json', import.meta.url);
19
+ return u.toString().replace(/[^/]+$/, '');
20
+ } catch {
21
+ return '';
36
22
  }
37
23
  }
38
- preloadFaceApiModelFiles();
39
24
  const FaceRecognitionComponent = _ref => {
40
25
  let {
41
- props,
42
26
  mode,
43
27
  processingPath,
44
28
  onComplete
@@ -55,8 +39,8 @@ const FaceRecognitionComponent = _ref => {
55
39
  const canvasRef = (0, _react.useRef)(null);
56
40
  const navigate = (0, _reactRouterDom.useNavigate)();
57
41
  (0, _react.useEffect)(() => {
58
- const base = props && props.modelsPath ? props.modelsPath : _base.MODELS_BASE;
59
- alert(base);
42
+ const base = process.env.FACE_API_MODULE_BASE || getModelsBase();
43
+ console.log("LOADING FACIAL RECOGNITION ASSETS FROM BASE : ", base);
60
44
  const loadModels = async () => {
61
45
  await faceapi.nets.ssdMobilenetv1.loadFromUri(base);
62
46
  await faceapi.nets.faceLandmark68Net.loadFromUri(base);
@@ -160,7 +160,7 @@ const LookupFieldComponent = exports.LookupFieldComponent = /*#__PURE__*/_react.
160
160
  }
161
161
  }, /*#__PURE__*/_react.default.createElement(_DialogTitle.default, {
162
162
  id: "alert-dialog-title"
163
- }, !_Utils.default.isNull(props.config.attributes) && !_Utils.default.isNull(props.config.attributes['pickerLabel']) ? props.config.attributes['pickerLabel'] : props.config.attributes['label']), /*#__PURE__*/_react.default.createElement("div", {
163
+ }, !_Utils.default.isNull(props.config.attributes) && !_Utils.default.isNull(props.config.attributes?.pickerLabel) ? props.config.attributes?.pickerLabel : props.config.attributes?.label), /*#__PURE__*/_react.default.createElement("div", {
164
164
  style: {
165
165
  maxHeight: "calc(38vh - 52px)",
166
166
  overflow: "auto",
@@ -1,9 +1,9 @@
1
- .coll-panel-container {
2
- font-family: sans-serif;
3
- text-align: center;
4
- }
5
-
6
- .coll-panel-btn:focus {
7
- outline: 0;
8
- box-shadow: none;
9
- }
1
+ .coll-panel-container {
2
+ font-family: sans-serif;
3
+ text-align: center;
4
+ }
5
+
6
+ .coll-panel-btn:focus {
7
+ outline: 0;
8
+ box-shadow: none;
9
+ }
@@ -1,125 +1,125 @@
1
- .view {
2
- padding: 0 32px;
3
- background-color: #ffffff;
4
- border-radius: 4px;
5
- }
6
-
7
- .window-unpinned .view {
8
- width: 0 !important;;
9
- }
10
-
11
- .window-pinned .view {
12
- padding: 0 8px;
13
- }
14
-
15
- .no-margin {
16
- margin-left: 0 !important;
17
- margin-right: 0 !important;
18
- }
19
-
20
- .no-padding {
21
- padding-left: 0 !important;
22
- padding-right: 0 !important;
23
- }
24
-
25
- .centered-flex-box {
26
- display: flex;
27
- align-Items: center;
28
- justify-content: center
29
- }
30
-
31
- .max-h-40 {
32
- }
33
-
34
- /* 150% zoom res */
35
- @media (max-width: 1512px) and (max-height: 982px) and (min-resolution: 2dppx) {
36
- .max-h-40 {
37
- max-height: 150px !important;
38
- }
39
-
40
- .flex-nowrap {
41
- flex-wrap: wrap !important;
42
- }
43
-
44
- .flex-child-nowrap {
45
- width: 100% !important;
46
- }
47
-
48
- .view {
49
- padding: 0 8px !important;
50
- }
51
-
52
- .grid-table-pagination div {
53
- font-size: 12px;
54
- }
55
-
56
- .grid-table-pagination p {
57
- overflow: hidden;
58
- text-overflow: ellipsis;
59
- white-space: nowrap;
60
- max-width: 12px;
61
- font-size: 12px;
62
- margin-top: 4px;
63
- }
64
-
65
- .tab-page-container {
66
- margin: 0;
67
- }
68
-
69
- .default-oui-layout {
70
- margin: 8px;
71
- padding: 0 !important;
72
- }
73
-
74
- .defaultForm {
75
- margin: 0;
76
- }
77
-
78
- .oui-form-item {
79
- min-width: 232px !important;
80
- }
81
-
82
- .oui-form-item-container {
83
- min-width: 240px !important;
84
- margin: 0 4px;
85
- }
86
- }
87
-
88
- /* Smartphones (landscape); */
89
- @media only screen and (min-device-width : 361px) and (max-device-width : 480px) {
90
- .view {
91
- padding: 0 16px;
92
- }
93
- }
94
-
95
- /* Smartphones (portrait); */
96
- @media only screen and (min-device-width : 280px) and (max-device-width : 360px) {
97
- .view {
98
- padding: 0 16px;
99
- }
100
- }
101
-
102
- /* iPads (portrait and landscape); */
103
- @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) {
104
- .view {
105
- padding: 0 24px;
106
- }
107
- }
108
-
109
- /* iPad 3 */
110
- @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) and (-webkit-min-device-pixel-ratio : 2) {
111
- .view {
112
- padding: 0 24px;
113
- }
114
- }
115
-
116
- /* small desktop screens */
117
- @media only screen and (max-width : 600px) {
118
- }
119
-
120
- /* low resolution desktop */
121
- @media only screen and (max-width : 1200px) {
122
- .view {
123
-
124
- }
125
- }
1
+ .view {
2
+ padding: 0 32px;
3
+ background-color: #ffffff;
4
+ border-radius: 4px;
5
+ }
6
+
7
+ .window-unpinned .view {
8
+ width: 0 !important;;
9
+ }
10
+
11
+ .window-pinned .view {
12
+ padding: 0 8px;
13
+ }
14
+
15
+ .no-margin {
16
+ margin-left: 0 !important;
17
+ margin-right: 0 !important;
18
+ }
19
+
20
+ .no-padding {
21
+ padding-left: 0 !important;
22
+ padding-right: 0 !important;
23
+ }
24
+
25
+ .centered-flex-box {
26
+ display: flex;
27
+ align-Items: center;
28
+ justify-content: center
29
+ }
30
+
31
+ .max-h-40 {
32
+ }
33
+
34
+ /* 150% zoom res */
35
+ @media (max-width: 1512px) and (max-height: 982px) and (min-resolution: 2dppx) {
36
+ .max-h-40 {
37
+ max-height: 150px !important;
38
+ }
39
+
40
+ .flex-nowrap {
41
+ flex-wrap: wrap !important;
42
+ }
43
+
44
+ .flex-child-nowrap {
45
+ width: 100% !important;
46
+ }
47
+
48
+ .view {
49
+ padding: 0 8px !important;
50
+ }
51
+
52
+ .grid-table-pagination div {
53
+ font-size: 12px;
54
+ }
55
+
56
+ .grid-table-pagination p {
57
+ overflow: hidden;
58
+ text-overflow: ellipsis;
59
+ white-space: nowrap;
60
+ max-width: 12px;
61
+ font-size: 12px;
62
+ margin-top: 4px;
63
+ }
64
+
65
+ .tab-page-container {
66
+ margin: 0;
67
+ }
68
+
69
+ .default-oui-layout {
70
+ margin: 8px;
71
+ padding: 0 !important;
72
+ }
73
+
74
+ .defaultForm {
75
+ margin: 0;
76
+ }
77
+
78
+ .oui-form-item {
79
+ min-width: 232px !important;
80
+ }
81
+
82
+ .oui-form-item-container {
83
+ min-width: 240px !important;
84
+ margin: 0 4px;
85
+ }
86
+ }
87
+
88
+ /* Smartphones (landscape); */
89
+ @media only screen and (min-device-width : 361px) and (max-device-width : 480px) {
90
+ .view {
91
+ padding: 0 16px;
92
+ }
93
+ }
94
+
95
+ /* Smartphones (portrait); */
96
+ @media only screen and (min-device-width : 280px) and (max-device-width : 360px) {
97
+ .view {
98
+ padding: 0 16px;
99
+ }
100
+ }
101
+
102
+ /* iPads (portrait and landscape); */
103
+ @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) {
104
+ .view {
105
+ padding: 0 24px;
106
+ }
107
+ }
108
+
109
+ /* iPad 3 */
110
+ @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) and (-webkit-min-device-pixel-ratio : 2) {
111
+ .view {
112
+ padding: 0 24px;
113
+ }
114
+ }
115
+
116
+ /* small desktop screens */
117
+ @media only screen and (max-width : 600px) {
118
+ }
119
+
120
+ /* low resolution desktop */
121
+ @media only screen and (max-width : 1200px) {
122
+ .view {
123
+
124
+ }
125
+ }
@@ -41,19 +41,19 @@ const PaperComponent = props => {
41
41
  bottom: bottom
42
42
  });
43
43
  };
44
- return /*#__PURE__*/_react.default.createElement(_reactDraggable.default, {
45
- disabled: props.disabled,
46
- bounds: bounds,
47
- onStart: handleStart,
48
- handle: "#meeting-window-header",
49
- cancel: '[class*="MuiDialogContent-root"]',
50
- nodeRef: nodeRef
51
- }, /*#__PURE__*/_react.default.createElement(_Paper.default, _extends({}, props, {
52
- ref: nodeRef,
53
- style: {
54
- minWidth: '320px'
55
- }
56
- })));
44
+ return /*#__PURE__*/_react.default.createElement(_Paper.default, _extends({}, props, {
45
+ ref: nodeRef
46
+ }))
47
+ /*<Draggable
48
+ disabled={props.disabled}
49
+ bounds={bounds}
50
+ onStart={handleStart}
51
+ handle="#meeting-window-header"
52
+ cancel={'[class*="MuiDialogContent-root"]'}
53
+ nodeRef={nodeRef}
54
+ >
55
+ <Paper {...props} ref={nodeRef} style={{minWidth: '320px'}}/>
56
+ </Draggable>*/;
57
57
  };
58
58
  const Window = props => {
59
59
  const {
@@ -148,14 +148,18 @@ const Window = props => {
148
148
  paper.style.left = 'unset';
149
149
  paper.style.right = '0';
150
150
  paper.style.position = 'absolute';
151
- paper.style.top = '72px';
151
+ paper.style.top = '52px';
152
+ paper.style.margin = '32px 0';
153
+ paper.style.maxWidth = 'unset';
152
154
  let header = document.getElementsByClassName('dialogHeader')[0];
153
155
  header.getElementsByTagName('button')[0].style.color = '#000000';
154
- setDisplayState('PINNED');
156
+ if (displayState !== 'PINNED') {
157
+ setDisplayState('PINNED');
158
+ }
155
159
  if (updateContext) {
156
160
  _ApplicationManager.default.updateContext({
157
161
  windowDisplayState: 'PINNED'
158
- });
162
+ }, false);
159
163
  }
160
164
  props.onPinned();
161
165
  }
@@ -179,11 +183,13 @@ const Window = props => {
179
183
  let header = document.getElementsByClassName('dialogHeader')[0];
180
184
  header.getElementsByTagName('button')[0].style.color = '#000000';
181
185
  document.getElementById('meeting-window-header').style.cursor = 'move';
182
- setDisplayState('MINIMIZED');
186
+ if (displayState !== 'MINIMIZED') {
187
+ setDisplayState('MINIMIZED');
188
+ }
183
189
  if (updateContext) {
184
190
  _ApplicationManager.default.updateContext({
185
191
  windowDisplayState: 'MINIMIZED'
186
- });
192
+ }, false);
187
193
  }
188
194
  }
189
195
  }
@@ -203,7 +209,8 @@ const Window = props => {
203
209
  paper.style.boxShadow = 'unset';
204
210
  paper.style.transform = 'translate(0, 0)';
205
211
  paper.style.backgroundColor = '#FFFFFF';
206
- paper.style.width = 'calc(100% - ' + isNaN(getLeftOffset()) ? '344' : getLeftOffset() + 'px)';
212
+ paper.style.width = 'unset';
213
+ paper.style.maxWidth = 'unset';
207
214
  paper.style.height = 'calc(100% - 88px)';
208
215
  paper.style.margin = '8px';
209
216
  paper.style.right = '0';
@@ -213,11 +220,13 @@ const Window = props => {
213
220
  let header = document.getElementsByClassName('dialogHeader')[0];
214
221
  header.getElementsByTagName('button')[0].style.color = 'rgba(0, 0, 0, 0.54)';
215
222
  document.getElementById('meeting-window-header').style.cursor = 'default';
216
- setDisplayState('MAXIMIZED');
223
+ if (displayState !== 'MAXIMIZED') {
224
+ setDisplayState('MAXIMIZED');
225
+ }
217
226
  if (updateContext) {
218
227
  _ApplicationManager.default.updateContext({
219
228
  windowDisplayState: 'MAXIMIZED'
220
- });
229
+ }, false);
221
230
  }
222
231
  }
223
232
  };
@@ -234,7 +243,7 @@ const Window = props => {
234
243
  }, /*#__PURE__*/_react.default.createElement(_WindowDialog.default, {
235
244
  leftOffset: props.leftOffset,
236
245
  disableEnforceFocus: true,
237
- open: open,
246
+ open: true,
238
247
  onClose: e => {
239
248
  props.onClose();
240
249
  },
@@ -1,36 +1,36 @@
1
- .loaderModal {
2
- display: block; /* Hidden by default */
3
- position: fixed; /* Stay in place */
4
- z-index: 3000; /* Sit on top */
5
- left: 0;
6
- top: 0;
7
- width: 100vw; /* Full width */
8
- height: 100vh; /* Full height */
9
- overflow: hidden; /* Enable scroll if needed */
10
- background-color: rgb(0,0,0); /* Fallback color */
11
- background-color: rgba(0,0,0,0.1); /* Black w/ opacity */
12
- }
13
-
14
- /* Modal Content/Box */
15
- .modal-content {
16
- background-color: transparent;
17
- margin: 30% auto; /* 15% from the top and centered */
18
- padding: 20px;
19
- border: 1px solid #888;
20
- width: 10%; /* Could be more or less, depending on screen size */
21
- }
22
-
23
- /* The Close Button */
24
- .close {
25
- color: #aaa;
26
- float: right;
27
- font-size: 28px;
28
- font-weight: bold;
29
- }
30
-
31
- .close:hover,
32
- .close:focus {
33
- color: black;
34
- text-decoration: none;
35
- cursor: pointer;
36
- }
1
+ .loaderModal {
2
+ display: block; /* Hidden by default */
3
+ position: fixed; /* Stay in place */
4
+ z-index: 3000; /* Sit on top */
5
+ left: 0;
6
+ top: 0;
7
+ width: 100vw; /* Full width */
8
+ height: 100vh; /* Full height */
9
+ overflow: hidden; /* Enable scroll if needed */
10
+ background-color: rgb(0,0,0); /* Fallback color */
11
+ background-color: rgba(0,0,0,0.1); /* Black w/ opacity */
12
+ }
13
+
14
+ /* Modal Content/Box */
15
+ .modal-content {
16
+ background-color: transparent;
17
+ margin: 30% auto; /* 15% from the top and centered */
18
+ padding: 20px;
19
+ border: 1px solid #888;
20
+ width: 10%; /* Could be more or less, depending on screen size */
21
+ }
22
+
23
+ /* The Close Button */
24
+ .close {
25
+ color: #aaa;
26
+ float: right;
27
+ font-size: 28px;
28
+ font-weight: bold;
29
+ }
30
+
31
+ .close:hover,
32
+ .close:focus {
33
+ color: black;
34
+ text-decoration: none;
35
+ cursor: pointer;
36
+ }
@@ -1,4 +1,4 @@
1
- .user-video {
2
- min-width: 280px;
3
- height: 280px;
4
- }
1
+ .user-video {
2
+ min-width: 280px;
3
+ height: 280px;
4
+ }