dce-reactkit 3.8.6 → 3.9.0-beta-loading-modal.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/cjs/index.js +253 -381
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/Modal/ModalProps.d.ts +2 -0
- package/dist/cjs/types/index.d.ts +1 -3
- package/dist/esm/index.js +255 -381
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/Modal/ModalProps.d.ts +2 -0
- package/dist/esm/types/index.d.ts +1 -3
- package/dist/index.d.ts +45 -79
- package/package.json +1 -1
- package/src/components/Modal/ModalProps.ts +4 -0
- package/src/components/Modal/index.tsx +49 -21
- package/src/components/MultiSwitch.tsx +1 -1
- package/src/index.ts +0 -4
- package/dist/cjs/types/components/Dropdown.d.ts +0 -32
- package/dist/cjs/types/helpers/validators/ChicagoTitleCase.d.ts +0 -9
- package/dist/cjs/types/helpers/validators/validURL.d.ts +0 -8
- package/dist/cjs/types/types/DropdownItemType.d.ts +0 -6
- package/dist/esm/types/components/Dropdown.d.ts +0 -32
- package/dist/esm/types/helpers/validators/ChicagoTitleCase.d.ts +0 -9
- package/dist/esm/types/helpers/validators/validURL.d.ts +0 -8
- package/dist/esm/types/types/DropdownItemType.d.ts +0 -6
- package/src/components/Dropdown.tsx +0 -317
- package/src/helpers/validators/ChicagoTitleCase.test.ts +0 -85
- package/src/helpers/validators/ChicagoTitleCase.ts +0 -32
- package/src/helpers/validators/findURL.test.ts +0 -83
- package/src/helpers/validators/findURL.ts +0 -43
- package/src/helpers/validators/validURL.test.ts +0 -90
- package/src/helpers/validators/validURL.ts +0 -18
- package/src/types/DropdownItemType.ts +0 -11
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import React__default, { useState, useRef, useEffect, useReducer, forwardRef, useContext, useLayoutEffect, createContext, useMemo, useCallback, Component, Fragment } from 'react';
|
|
3
|
-
import { faExclamationTriangle,
|
|
3
|
+
import { faExclamationTriangle, faCircle, faHourglassEnd, faDotCircle, faCheckSquare, faHourglass, faClipboard, faChevronDown, faChevronRight, faCloudDownloadAlt, faMinus, faCheckCircle, faXmarkCircle, faSort, faSortDown, faSortUp, faCalendar, faTag, faHammer, faList, faTimes, faSave, faTrash, faCog, faPlus } from '@fortawesome/free-solid-svg-icons';
|
|
4
4
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
5
5
|
import ReactDOM, { createPortal } from 'react-dom';
|
|
6
6
|
import { faCircle as faCircle$1, faSquareMinus, faSquare } from '@fortawesome/free-regular-svg-icons';
|
|
@@ -180,6 +180,98 @@ const LogBuiltInMetadata = {
|
|
|
180
180
|
},
|
|
181
181
|
};
|
|
182
182
|
|
|
183
|
+
/**
|
|
184
|
+
* Loading spinner/indicator
|
|
185
|
+
* @author Gabe Abrams
|
|
186
|
+
*/
|
|
187
|
+
/*------------------------------------------------------------------------*/
|
|
188
|
+
/* -------------------------------- Style ------------------------------- */
|
|
189
|
+
/*------------------------------------------------------------------------*/
|
|
190
|
+
const style$a = `
|
|
191
|
+
/* Container fades in */
|
|
192
|
+
.LoadingSpinner-container {
|
|
193
|
+
animation-name: LoadingSpinner-container-fade-in;
|
|
194
|
+
animation-duration: 0.3s;
|
|
195
|
+
animation-delay: 0.4s;
|
|
196
|
+
animation-fill-mode: both;
|
|
197
|
+
animation-timing-function: ease-out;
|
|
198
|
+
}
|
|
199
|
+
@keyframes LoadingSpinner-container-fade-in {
|
|
200
|
+
0% {
|
|
201
|
+
opacity: 0;
|
|
202
|
+
}
|
|
203
|
+
100% {
|
|
204
|
+
opacity: 1;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/* Blips */
|
|
209
|
+
.LoadingSpinner-blip-1,
|
|
210
|
+
.LoadingSpinner-blip-2,
|
|
211
|
+
.LoadingSpinner-blip-3,
|
|
212
|
+
.LoadingSpinner-blip-4 {
|
|
213
|
+
font-size: 1.8rem;
|
|
214
|
+
opacity: 0.6;
|
|
215
|
+
margin-top: 1rem;
|
|
216
|
+
margin-bottom: 1rem;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* First Blip */
|
|
220
|
+
.LoadingSpinner-blip-1 {
|
|
221
|
+
animation: LoadingSpinner-pop-animation 2s infinite;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* Second Blip */
|
|
225
|
+
.LoadingSpinner-blip-2 {
|
|
226
|
+
animation: LoadingSpinner-pop-animation 2s infinite;
|
|
227
|
+
-webkit-animation-delay: 0.1s;
|
|
228
|
+
animation-delay: 0.1s;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/* Third Blip */
|
|
232
|
+
.LoadingSpinner-blip-3 {
|
|
233
|
+
animation: LoadingSpinner-pop-animation 2s infinite;
|
|
234
|
+
animation-delay: 0.2s;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/* Fourth Blip */
|
|
238
|
+
.LoadingSpinner-blip-4 {
|
|
239
|
+
animation: LoadingSpinner-pop-animation 2s infinite;
|
|
240
|
+
animation-delay: 0.3s;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/* Pop Animation for Each Blip */
|
|
244
|
+
@keyframes LoadingSpinner-pop-animation {
|
|
245
|
+
0% {
|
|
246
|
+
transform: scale(1.0);
|
|
247
|
+
}
|
|
248
|
+
10% {
|
|
249
|
+
transform: scale(1.5);
|
|
250
|
+
}
|
|
251
|
+
30% {
|
|
252
|
+
transform: scale(1.0);
|
|
253
|
+
}
|
|
254
|
+
100% {
|
|
255
|
+
transform: scale(1.0);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
`;
|
|
259
|
+
/*------------------------------------------------------------------------*/
|
|
260
|
+
/* ------------------------------ Component ----------------------------- */
|
|
261
|
+
/*------------------------------------------------------------------------*/
|
|
262
|
+
const LoadingSpinner = () => {
|
|
263
|
+
/*------------------------------------------------------------------------*/
|
|
264
|
+
/* ------------------------------- Render ------------------------------- */
|
|
265
|
+
/*------------------------------------------------------------------------*/
|
|
266
|
+
// Add all four blips to a container
|
|
267
|
+
return (React__default.createElement("div", { className: "text-center LoadingSpinner LoadingSpinner-container" },
|
|
268
|
+
React__default.createElement("style", null, style$a),
|
|
269
|
+
React__default.createElement(FontAwesomeIcon, { icon: faCircle, className: "LoadingSpinner-blip-1 me-1" }),
|
|
270
|
+
React__default.createElement(FontAwesomeIcon, { icon: faCircle, className: "LoadingSpinner-blip-2 me-1" }),
|
|
271
|
+
React__default.createElement(FontAwesomeIcon, { icon: faCircle, className: "LoadingSpinner-blip-3 me-1" }),
|
|
272
|
+
React__default.createElement(FontAwesomeIcon, { icon: faCircle, className: "LoadingSpinner-blip-4" })));
|
|
273
|
+
};
|
|
274
|
+
|
|
183
275
|
/**
|
|
184
276
|
* Wait for a certain number of ms
|
|
185
277
|
* @author Gabe Abrams
|
|
@@ -300,6 +392,7 @@ const BASE_Z_INDEX = 1000000000;
|
|
|
300
392
|
const BASE_Z_INDEX_ON_TOP = 2000000000;
|
|
301
393
|
// Constants
|
|
302
394
|
const MS_TO_ANIMATE = 200; // Animation duration
|
|
395
|
+
const MS_TO_WAIT_BEFORE_SHOWING_LOADING_INDICATOR = 1000;
|
|
303
396
|
// Modal type to list of buttons
|
|
304
397
|
const modalTypeToModalButtonTypes = {
|
|
305
398
|
[ModalType$1.Okay]: [
|
|
@@ -410,7 +503,7 @@ const getNextUniqueId = () => {
|
|
|
410
503
|
/*------------------------------------------------------------------------*/
|
|
411
504
|
/* -------------------------------- Style ------------------------------- */
|
|
412
505
|
/*------------------------------------------------------------------------*/
|
|
413
|
-
const style$
|
|
506
|
+
const style$9 = `
|
|
414
507
|
.Modal-backdrop {
|
|
415
508
|
position: fixed;
|
|
416
509
|
top: 0;
|
|
@@ -482,13 +575,14 @@ const Modal = (props) => {
|
|
|
482
575
|
/*------------------------------------------------------------------------*/
|
|
483
576
|
var _a;
|
|
484
577
|
/* -------------- Props ------------- */
|
|
485
|
-
const { type = ModalType$1.NoButtons, size = ModalSize$1.Large, title, largeTitle, children, onClose, dontAllowBackdropExit, dontShowXButton, onTopOfOtherModals, } = props;
|
|
578
|
+
const { type = ModalType$1.NoButtons, size = ModalSize$1.Large, title, largeTitle, children, onClose, dontAllowBackdropExit, dontShowXButton, onTopOfOtherModals, isLoading, isLoadingCancelable, } = props;
|
|
486
579
|
// Determine if no header either
|
|
487
580
|
const noHeader = (!title && type === ModalType$1.NoButtons);
|
|
488
581
|
/* -------------- State ------------- */
|
|
489
582
|
// True if animation is in use
|
|
490
583
|
const [animatingIn, setAnimatingIn] = useState(true);
|
|
491
584
|
const [animatingPop, setAnimatingPop] = useState(false);
|
|
585
|
+
const [showModal, setShowModal] = useState(false);
|
|
492
586
|
/* -------------- Refs -------------- */
|
|
493
587
|
// Keep track of whether modal is still mounted
|
|
494
588
|
const mounted = useRef(false);
|
|
@@ -515,6 +609,14 @@ const Modal = (props) => {
|
|
|
515
609
|
if (mounted.current) {
|
|
516
610
|
setAnimatingIn(false);
|
|
517
611
|
}
|
|
612
|
+
if (isLoading) {
|
|
613
|
+
// wait before showing modal
|
|
614
|
+
yield waitMs(MS_TO_WAIT_BEFORE_SHOWING_LOADING_INDICATOR);
|
|
615
|
+
setShowModal(true);
|
|
616
|
+
}
|
|
617
|
+
else {
|
|
618
|
+
setShowModal(true);
|
|
619
|
+
}
|
|
518
620
|
}))();
|
|
519
621
|
return () => {
|
|
520
622
|
mounted.current = false;
|
|
@@ -581,6 +683,9 @@ const Modal = (props) => {
|
|
|
581
683
|
else if (animatingPop) {
|
|
582
684
|
animationClass = 'Modal-animating-pop';
|
|
583
685
|
}
|
|
686
|
+
// default to show close button when not loading and not show close button when loading
|
|
687
|
+
// unless downShowXButton or isLoadingCancelable
|
|
688
|
+
const showCloseButton = onClose && !dontShowXButton && !(isLoading && !isLoadingCancelable);
|
|
584
689
|
// Render the modal
|
|
585
690
|
const contentToRender = (React__default.createElement("div", { className: "modal show", tabIndex: -1, style: {
|
|
586
691
|
zIndex: baseZIndex,
|
|
@@ -589,7 +694,7 @@ const Modal = (props) => {
|
|
|
589
694
|
left: 0,
|
|
590
695
|
right: 0,
|
|
591
696
|
} },
|
|
592
|
-
React__default.createElement("style", null, style$
|
|
697
|
+
React__default.createElement("style", null, style$9),
|
|
593
698
|
React__default.createElement("div", { className: `Modal-backdrop ${backdropAnimationClass}`, style: {
|
|
594
699
|
zIndex: baseZIndex + 1,
|
|
595
700
|
}, onClick: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -607,11 +712,11 @@ const Modal = (props) => {
|
|
|
607
712
|
// Handle close
|
|
608
713
|
handleClose(ModalButtonType$1.Cancel);
|
|
609
714
|
}) }),
|
|
610
|
-
React__default.createElement("div", { className: `modal-dialog modal-${size} ${animationClass} modal-dialog-scrollable modal-dialog-centered`, style: {
|
|
715
|
+
showModal && (React__default.createElement("div", { className: `modal-dialog modal-${size} ${animationClass} modal-dialog-scrollable modal-dialog-centered`, style: {
|
|
611
716
|
zIndex: baseZIndex + 2,
|
|
612
717
|
// Override sizes for even larger for XL
|
|
613
718
|
width: (size === ModalSize$1.ExtraLarge
|
|
614
|
-
? 'calc(100vw -
|
|
719
|
+
? 'calc(100vw - 3rem)'
|
|
615
720
|
: undefined),
|
|
616
721
|
maxWidth: (size === ModalSize$1.ExtraLarge
|
|
617
722
|
? '80rem'
|
|
@@ -639,7 +744,7 @@ const Modal = (props) => {
|
|
|
639
744
|
? '1.6rem'
|
|
640
745
|
: undefined),
|
|
641
746
|
} }, title),
|
|
642
|
-
|
|
747
|
+
showCloseButton && (React__default.createElement("button", { type: "button", className: "Modal-x-button btn-close", "aria-label": "Close", style: {
|
|
643
748
|
backgroundColor: (isDarkModeOn()
|
|
644
749
|
? 'white'
|
|
645
750
|
: undefined),
|
|
@@ -647,14 +752,16 @@ const Modal = (props) => {
|
|
|
647
752
|
// Handle close
|
|
648
753
|
handleClose(ModalButtonType$1.Cancel);
|
|
649
754
|
} })))),
|
|
650
|
-
|
|
755
|
+
React__default.createElement("div", { className: "modal-body", style: {
|
|
651
756
|
color: (isDarkModeOn()
|
|
652
757
|
? 'white'
|
|
653
758
|
: undefined),
|
|
654
759
|
backgroundColor: (isDarkModeOn()
|
|
655
760
|
? '#444'
|
|
656
761
|
: undefined),
|
|
657
|
-
} }, children
|
|
762
|
+
} }, isLoading && !children ? (React__default.createElement(React__default.Fragment, null,
|
|
763
|
+
React__default.createElement(LoadingSpinner, null),
|
|
764
|
+
React__default.createElement("span", { className: "sr-only" }, "Content loading"))) : (children)),
|
|
658
765
|
footer && (React__default.createElement("div", { className: "modal-footer pt-1 pb-1", style: {
|
|
659
766
|
color: (isDarkModeOn()
|
|
660
767
|
? 'white'
|
|
@@ -665,7 +772,7 @@ const Modal = (props) => {
|
|
|
665
772
|
borderTop: (isDarkModeOn()
|
|
666
773
|
? '0.1rem solid gray'
|
|
667
774
|
: undefined),
|
|
668
|
-
} }, footer))))));
|
|
775
|
+
} }, footer)))))));
|
|
669
776
|
// Determine which portal to use
|
|
670
777
|
const portalNumber = id.current % NUM_MODAL_PORTALS;
|
|
671
778
|
// Render in a portal
|
|
@@ -1145,7 +1252,7 @@ const showSessionExpiredMessage = () => __awaiter(void 0, void 0, void 0, functi
|
|
|
1145
1252
|
/*------------------------------------------------------------------------*/
|
|
1146
1253
|
/* -------------------------------- Style ------------------------------- */
|
|
1147
1254
|
/*------------------------------------------------------------------------*/
|
|
1148
|
-
const style$
|
|
1255
|
+
const style$8 = `
|
|
1149
1256
|
.AppWrapper-leave-to-url-notice {
|
|
1150
1257
|
opacity: 0;
|
|
1151
1258
|
|
|
@@ -1320,105 +1427,13 @@ const AppWrapper = (props) => {
|
|
|
1320
1427
|
/* --------------- Main UI -------------- */
|
|
1321
1428
|
/*----------------------------------------*/
|
|
1322
1429
|
return (React__default.createElement(React__default.Fragment, null,
|
|
1323
|
-
React__default.createElement("style", null, style$
|
|
1430
|
+
React__default.createElement("style", null, style$8),
|
|
1324
1431
|
React__default.createElement("style", null, tooltipStyle),
|
|
1325
1432
|
modal,
|
|
1326
1433
|
customModalPortals,
|
|
1327
1434
|
body));
|
|
1328
1435
|
};
|
|
1329
1436
|
|
|
1330
|
-
/**
|
|
1331
|
-
* Loading spinner/indicator
|
|
1332
|
-
* @author Gabe Abrams
|
|
1333
|
-
*/
|
|
1334
|
-
/*------------------------------------------------------------------------*/
|
|
1335
|
-
/* -------------------------------- Style ------------------------------- */
|
|
1336
|
-
/*------------------------------------------------------------------------*/
|
|
1337
|
-
const style$8 = `
|
|
1338
|
-
/* Container fades in */
|
|
1339
|
-
.LoadingSpinner-container {
|
|
1340
|
-
animation-name: LoadingSpinner-container-fade-in;
|
|
1341
|
-
animation-duration: 0.3s;
|
|
1342
|
-
animation-delay: 0.4s;
|
|
1343
|
-
animation-fill-mode: both;
|
|
1344
|
-
animation-timing-function: ease-out;
|
|
1345
|
-
}
|
|
1346
|
-
@keyframes LoadingSpinner-container-fade-in {
|
|
1347
|
-
0% {
|
|
1348
|
-
opacity: 0;
|
|
1349
|
-
}
|
|
1350
|
-
100% {
|
|
1351
|
-
opacity: 1;
|
|
1352
|
-
}
|
|
1353
|
-
}
|
|
1354
|
-
|
|
1355
|
-
/* Blips */
|
|
1356
|
-
.LoadingSpinner-blip-1,
|
|
1357
|
-
.LoadingSpinner-blip-2,
|
|
1358
|
-
.LoadingSpinner-blip-3,
|
|
1359
|
-
.LoadingSpinner-blip-4 {
|
|
1360
|
-
font-size: 1.8rem;
|
|
1361
|
-
opacity: 0.6;
|
|
1362
|
-
margin-top: 1rem;
|
|
1363
|
-
margin-bottom: 1rem;
|
|
1364
|
-
}
|
|
1365
|
-
|
|
1366
|
-
/* First Blip */
|
|
1367
|
-
.LoadingSpinner-blip-1 {
|
|
1368
|
-
animation: LoadingSpinner-pop-animation 2s infinite;
|
|
1369
|
-
}
|
|
1370
|
-
|
|
1371
|
-
/* Second Blip */
|
|
1372
|
-
.LoadingSpinner-blip-2 {
|
|
1373
|
-
animation: LoadingSpinner-pop-animation 2s infinite;
|
|
1374
|
-
-webkit-animation-delay: 0.1s;
|
|
1375
|
-
animation-delay: 0.1s;
|
|
1376
|
-
}
|
|
1377
|
-
|
|
1378
|
-
/* Third Blip */
|
|
1379
|
-
.LoadingSpinner-blip-3 {
|
|
1380
|
-
animation: LoadingSpinner-pop-animation 2s infinite;
|
|
1381
|
-
animation-delay: 0.2s;
|
|
1382
|
-
}
|
|
1383
|
-
|
|
1384
|
-
/* Fourth Blip */
|
|
1385
|
-
.LoadingSpinner-blip-4 {
|
|
1386
|
-
animation: LoadingSpinner-pop-animation 2s infinite;
|
|
1387
|
-
animation-delay: 0.3s;
|
|
1388
|
-
}
|
|
1389
|
-
|
|
1390
|
-
/* Pop Animation for Each Blip */
|
|
1391
|
-
@keyframes LoadingSpinner-pop-animation {
|
|
1392
|
-
0% {
|
|
1393
|
-
transform: scale(1.0);
|
|
1394
|
-
}
|
|
1395
|
-
10% {
|
|
1396
|
-
transform: scale(1.5);
|
|
1397
|
-
}
|
|
1398
|
-
30% {
|
|
1399
|
-
transform: scale(1.0);
|
|
1400
|
-
}
|
|
1401
|
-
100% {
|
|
1402
|
-
transform: scale(1.0);
|
|
1403
|
-
}
|
|
1404
|
-
}
|
|
1405
|
-
`;
|
|
1406
|
-
/*------------------------------------------------------------------------*/
|
|
1407
|
-
/* ------------------------------ Component ----------------------------- */
|
|
1408
|
-
/*------------------------------------------------------------------------*/
|
|
1409
|
-
const LoadingSpinner = () => {
|
|
1410
|
-
/*------------------------------------------------------------------------*/
|
|
1411
|
-
/* ------------------------------- Render ------------------------------- */
|
|
1412
|
-
/*------------------------------------------------------------------------*/
|
|
1413
|
-
// Add all four blips to a container
|
|
1414
|
-
return (React__default.createElement("div", { className: "text-center LoadingSpinner LoadingSpinner-container" },
|
|
1415
|
-
React__default.createElement("style", null, style$8),
|
|
1416
|
-
React__default.createElement(FontAwesomeIcon, { icon: faCircle, className: "LoadingSpinner-blip-1 me-1" }),
|
|
1417
|
-
React__default.createElement(FontAwesomeIcon, { icon: faCircle, className: "LoadingSpinner-blip-2 me-1" }),
|
|
1418
|
-
React__default.createElement(FontAwesomeIcon, { icon: faCircle, className: "LoadingSpinner-blip-3 me-1" }),
|
|
1419
|
-
React__default.createElement(FontAwesomeIcon, { icon: faCircle, className: "LoadingSpinner-blip-4" })));
|
|
1420
|
-
};
|
|
1421
|
-
|
|
1422
1437
|
/**
|
|
1423
1438
|
* A box with a tab on the top that holds buttons and other content
|
|
1424
1439
|
* @author Gabe Abrams
|
|
@@ -2210,27 +2225,27 @@ const PopPendingMark = (props) => {
|
|
|
2210
2225
|
*/
|
|
2211
2226
|
/* ------------- Actions ------------ */
|
|
2212
2227
|
// Types of actions
|
|
2213
|
-
var ActionType$
|
|
2228
|
+
var ActionType$8;
|
|
2214
2229
|
(function (ActionType) {
|
|
2215
2230
|
// Indicate that the text was recently copied
|
|
2216
2231
|
ActionType["IndicateRecentlyCopied"] = "indicate-recently-copied";
|
|
2217
2232
|
// Clear the status
|
|
2218
2233
|
ActionType["ClearRecentlyCopiedStatus"] = "clear-recently-copied-status";
|
|
2219
|
-
})(ActionType$
|
|
2234
|
+
})(ActionType$8 || (ActionType$8 = {}));
|
|
2220
2235
|
/**
|
|
2221
2236
|
* Reducer that executes actions
|
|
2222
2237
|
* @author Gabe Abrams
|
|
2223
2238
|
* @param state current state
|
|
2224
2239
|
* @param action action to execute
|
|
2225
2240
|
*/
|
|
2226
|
-
const reducer$
|
|
2241
|
+
const reducer$9 = (state, action) => {
|
|
2227
2242
|
switch (action.type) {
|
|
2228
|
-
case ActionType$
|
|
2243
|
+
case ActionType$8.IndicateRecentlyCopied: {
|
|
2229
2244
|
return {
|
|
2230
2245
|
recentlyCopied: true,
|
|
2231
2246
|
};
|
|
2232
2247
|
}
|
|
2233
|
-
case ActionType$
|
|
2248
|
+
case ActionType$8.ClearRecentlyCopiedStatus: {
|
|
2234
2249
|
return {
|
|
2235
2250
|
recentlyCopied: false,
|
|
2236
2251
|
};
|
|
@@ -2256,7 +2271,7 @@ const CopiableBox = (props) => {
|
|
|
2256
2271
|
recentlyCopied: false,
|
|
2257
2272
|
};
|
|
2258
2273
|
// Initialize state
|
|
2259
|
-
const [state, dispatch] = useReducer(reducer$
|
|
2274
|
+
const [state, dispatch] = useReducer(reducer$9, initialState);
|
|
2260
2275
|
// Destructure common state
|
|
2261
2276
|
const { recentlyCopied, } = state;
|
|
2262
2277
|
/*------------------------------------------------------------------------*/
|
|
@@ -2276,13 +2291,13 @@ const CopiableBox = (props) => {
|
|
|
2276
2291
|
}
|
|
2277
2292
|
// Show copied notice
|
|
2278
2293
|
dispatch({
|
|
2279
|
-
type: ActionType$
|
|
2294
|
+
type: ActionType$8.IndicateRecentlyCopied,
|
|
2280
2295
|
});
|
|
2281
2296
|
// Wait a moment
|
|
2282
2297
|
yield waitMs(4000);
|
|
2283
2298
|
// Hide copied notice
|
|
2284
2299
|
dispatch({
|
|
2285
|
-
type: ActionType$
|
|
2300
|
+
type: ActionType$8.ClearRecentlyCopiedStatus,
|
|
2286
2301
|
});
|
|
2287
2302
|
});
|
|
2288
2303
|
/*------------------------------------------------------------------------*/
|
|
@@ -2338,20 +2353,20 @@ const CopiableBox = (props) => {
|
|
|
2338
2353
|
*/
|
|
2339
2354
|
/* ------------- Actions ------------ */
|
|
2340
2355
|
// Types of actions
|
|
2341
|
-
var ActionType$
|
|
2356
|
+
var ActionType$7;
|
|
2342
2357
|
(function (ActionType) {
|
|
2343
2358
|
// Toggle whether a child are being shown
|
|
2344
2359
|
ActionType["ToggleChild"] = "toggle-child";
|
|
2345
|
-
})(ActionType$
|
|
2360
|
+
})(ActionType$7 || (ActionType$7 = {}));
|
|
2346
2361
|
/**
|
|
2347
2362
|
* Reducer that executes actions
|
|
2348
2363
|
* @author Gabe Abrams
|
|
2349
2364
|
* @param state current state
|
|
2350
2365
|
* @param action action to execute
|
|
2351
2366
|
*/
|
|
2352
|
-
const reducer$
|
|
2367
|
+
const reducer$8 = (state, action) => {
|
|
2353
2368
|
switch (action.type) {
|
|
2354
|
-
case ActionType$
|
|
2369
|
+
case ActionType$7.ToggleChild: {
|
|
2355
2370
|
return Object.assign(Object.assign({}, state), { childExpanded: Object.assign(Object.assign({}, state.childExpanded), { [String(action.id)]: !state.childExpanded[String(action.id)] }) });
|
|
2356
2371
|
}
|
|
2357
2372
|
default: {
|
|
@@ -2380,7 +2395,7 @@ const NestableItemList = (props) => {
|
|
|
2380
2395
|
childExpanded: initChildExpanded,
|
|
2381
2396
|
};
|
|
2382
2397
|
// Initialize state
|
|
2383
|
-
const [state, dispatch] = useReducer(reducer$
|
|
2398
|
+
const [state, dispatch] = useReducer(reducer$8, initialState);
|
|
2384
2399
|
// Destructure common state
|
|
2385
2400
|
const { childExpanded, } = state;
|
|
2386
2401
|
/*------------------------------------------------------------------------*/
|
|
@@ -2470,7 +2485,7 @@ const NestableItemList = (props) => {
|
|
|
2470
2485
|
backgroundColor: 'transparent',
|
|
2471
2486
|
}, type: "button", onClick: () => {
|
|
2472
2487
|
dispatch({
|
|
2473
|
-
type: ActionType$
|
|
2488
|
+
type: ActionType$7.ToggleChild,
|
|
2474
2489
|
id: item.id,
|
|
2475
2490
|
});
|
|
2476
2491
|
}, "aria-label": `${childExpanded[item.id] ? 'Hide' : 'Show'} items in ${item.name}` },
|
|
@@ -2754,7 +2769,7 @@ var SortType;
|
|
|
2754
2769
|
})(SortType || (SortType = {}));
|
|
2755
2770
|
/* ------------- Actions ------------ */
|
|
2756
2771
|
// Types of actions
|
|
2757
|
-
var ActionType$
|
|
2772
|
+
var ActionType$6;
|
|
2758
2773
|
(function (ActionType) {
|
|
2759
2774
|
// Toggle sort column param
|
|
2760
2775
|
ActionType["ToggleSortColumn"] = "toggle-sort-column";
|
|
@@ -2766,16 +2781,16 @@ var ActionType$7;
|
|
|
2766
2781
|
ActionType["ShowAllColumns"] = "show-all-columns";
|
|
2767
2782
|
// Hide all columns
|
|
2768
2783
|
ActionType["HideAllColumns"] = "hide-all-columns";
|
|
2769
|
-
})(ActionType$
|
|
2784
|
+
})(ActionType$6 || (ActionType$6 = {}));
|
|
2770
2785
|
/**
|
|
2771
2786
|
* Reducer that executes actions
|
|
2772
2787
|
* @author Gabe Abrams
|
|
2773
2788
|
* @param state current state
|
|
2774
2789
|
* @param action action to execute
|
|
2775
2790
|
*/
|
|
2776
|
-
const reducer$
|
|
2791
|
+
const reducer$7 = (state, action) => {
|
|
2777
2792
|
switch (action.type) {
|
|
2778
|
-
case ActionType$
|
|
2793
|
+
case ActionType$6.ToggleSortColumn: {
|
|
2779
2794
|
if (action.param !== state.sortColumnParam) {
|
|
2780
2795
|
// Different column param
|
|
2781
2796
|
return Object.assign(Object.assign({}, state), { sortColumnParam: action.param, sortType: SortType.Ascending });
|
|
@@ -2787,22 +2802,22 @@ const reducer$8 = (state, action) => {
|
|
|
2787
2802
|
// Stop sorting by column
|
|
2788
2803
|
return Object.assign(Object.assign({}, state), { sortColumnParam: undefined, sortType: SortType.Ascending });
|
|
2789
2804
|
}
|
|
2790
|
-
case ActionType$
|
|
2805
|
+
case ActionType$6.UpdateColumnVisibility: {
|
|
2791
2806
|
const { columnVisibilityMap } = state;
|
|
2792
2807
|
columnVisibilityMap[action.param] = action.visible;
|
|
2793
2808
|
return Object.assign(Object.assign({}, state), { columnVisibilityMap });
|
|
2794
2809
|
}
|
|
2795
|
-
case ActionType$
|
|
2810
|
+
case ActionType$6.ToggleColVisCusModalVisibility: {
|
|
2796
2811
|
return Object.assign(Object.assign({}, state), { columnVisibilityCustomizationModalVisible: !state.columnVisibilityCustomizationModalVisible });
|
|
2797
2812
|
}
|
|
2798
|
-
case ActionType$
|
|
2813
|
+
case ActionType$6.ShowAllColumns: {
|
|
2799
2814
|
const { columnVisibilityMap } = state;
|
|
2800
2815
|
Object.keys(columnVisibilityMap).forEach((param) => {
|
|
2801
2816
|
columnVisibilityMap[param] = true;
|
|
2802
2817
|
});
|
|
2803
2818
|
return Object.assign(Object.assign({}, state), { columnVisibilityMap });
|
|
2804
2819
|
}
|
|
2805
|
-
case ActionType$
|
|
2820
|
+
case ActionType$6.HideAllColumns: {
|
|
2806
2821
|
const { columnVisibilityMap } = state;
|
|
2807
2822
|
Object.keys(columnVisibilityMap).forEach((param) => {
|
|
2808
2823
|
columnVisibilityMap[param] = false;
|
|
@@ -2849,7 +2864,7 @@ const IntelliTable = (props) => {
|
|
|
2849
2864
|
columnVisibilityCustomizationModalVisible: false,
|
|
2850
2865
|
};
|
|
2851
2866
|
// Initialize state
|
|
2852
|
-
const [state, dispatch] = useReducer(reducer$
|
|
2867
|
+
const [state, dispatch] = useReducer(reducer$7, initialState);
|
|
2853
2868
|
// Destructure common state
|
|
2854
2869
|
const { sortColumnParam, sortType, columnVisibilityMap, columnVisibilityCustomizationModalVisible, } = state;
|
|
2855
2870
|
/*------------------------------------------------------------------------*/
|
|
@@ -2872,13 +2887,13 @@ const IntelliTable = (props) => {
|
|
|
2872
2887
|
return alert('Choose at least one column', 'To continue, you have to choose at least one column to show');
|
|
2873
2888
|
}
|
|
2874
2889
|
dispatch({
|
|
2875
|
-
type: ActionType$
|
|
2890
|
+
type: ActionType$6.ToggleColVisCusModalVisibility,
|
|
2876
2891
|
});
|
|
2877
2892
|
}, okayVariant: Variant$1.Light },
|
|
2878
2893
|
columns.map((column) => {
|
|
2879
2894
|
return (React__default.createElement(CheckboxButton, { key: column.param, id: `IntelliTable-${id}-toggle-visibility-${column.param}`, className: "mb-2", text: column.title, onChanged: (checked) => {
|
|
2880
2895
|
dispatch({
|
|
2881
|
-
type: ActionType$
|
|
2896
|
+
type: ActionType$6.UpdateColumnVisibility,
|
|
2882
2897
|
param: column.param,
|
|
2883
2898
|
visible: checked,
|
|
2884
2899
|
});
|
|
@@ -2887,12 +2902,12 @@ const IntelliTable = (props) => {
|
|
|
2887
2902
|
React__default.createElement("div", { className: "mt-3" }, "Or you can:"),
|
|
2888
2903
|
React__default.createElement("button", { type: "button", id: `IntelliTable-${id}-select-all-columns`, className: "btn btn-secondary me-2", "aria-label": `show all columns in the ${title} table`, onClick: () => {
|
|
2889
2904
|
dispatch({
|
|
2890
|
-
type: ActionType$
|
|
2905
|
+
type: ActionType$6.ShowAllColumns,
|
|
2891
2906
|
});
|
|
2892
2907
|
} }, "Select All"),
|
|
2893
2908
|
React__default.createElement("button", { type: "button", id: `IntelliTable-${id}-select-none-columns`, className: "btn btn-secondary", "aria-label": `hide all columns in the ${title} table`, onClick: () => {
|
|
2894
2909
|
dispatch({
|
|
2895
|
-
type: ActionType$
|
|
2910
|
+
type: ActionType$6.HideAllColumns,
|
|
2896
2911
|
});
|
|
2897
2912
|
} }, "Deselect All")));
|
|
2898
2913
|
}
|
|
@@ -2943,7 +2958,7 @@ const IntelliTable = (props) => {
|
|
|
2943
2958
|
React__default.createElement("div", null,
|
|
2944
2959
|
React__default.createElement("button", { type: "button", id: `IntelliTable-${id}-sort-by-${column.param}-button`, className: `btn btn-${sortingByThisColumn ? 'light' : 'secondary'} btn-sm ms-1 ps-1 pe-1 pt-0 pb-0`, "aria-label": sortButtonAriaLabel, onClick: () => {
|
|
2945
2960
|
dispatch({
|
|
2946
|
-
type: ActionType$
|
|
2961
|
+
type: ActionType$6.ToggleSortColumn,
|
|
2947
2962
|
param: column.param,
|
|
2948
2963
|
});
|
|
2949
2964
|
} },
|
|
@@ -3132,7 +3147,7 @@ const IntelliTable = (props) => {
|
|
|
3132
3147
|
React__default.createElement(CSVDownloadButton, { "aria-label": `download data as csv for ${title}`, id: `IntelliTable-${id}-download-as-csv`, filename: filename, csv: csv }),
|
|
3133
3148
|
React__default.createElement("button", { type: "button", className: "btn btn-secondary ms-2", "aria-label": `show panel for customizing which columns show in table ${title}`, id: `IntelliTable-${id}-show-column-customization-modal`, onClick: () => {
|
|
3134
3149
|
dispatch({
|
|
3135
|
-
type: ActionType$
|
|
3150
|
+
type: ActionType$6.ToggleColVisCusModalVisibility,
|
|
3136
3151
|
});
|
|
3137
3152
|
} },
|
|
3138
3153
|
"Show/Hide Cols",
|
|
@@ -3498,7 +3513,7 @@ const genHumanReadableName = (machineReadableName) => {
|
|
|
3498
3513
|
};
|
|
3499
3514
|
/* ------------- Actions ------------ */
|
|
3500
3515
|
// Types of actions
|
|
3501
|
-
var ActionType$
|
|
3516
|
+
var ActionType$5;
|
|
3502
3517
|
(function (ActionType) {
|
|
3503
3518
|
// Show the loading bar
|
|
3504
3519
|
ActionType["StartLoading"] = "start-loading";
|
|
@@ -3520,45 +3535,45 @@ var ActionType$6;
|
|
|
3520
3535
|
ActionType["UpdateActionErrorFilterState"] = "update-action-error-filter-state";
|
|
3521
3536
|
// Update the advanced filter state
|
|
3522
3537
|
ActionType["UpdateAdvancedFilterState"] = "update-advanced-filter-state";
|
|
3523
|
-
})(ActionType$
|
|
3538
|
+
})(ActionType$5 || (ActionType$5 = {}));
|
|
3524
3539
|
/**
|
|
3525
3540
|
* Reducer that executes actions
|
|
3526
3541
|
* @author Gabe Abrams
|
|
3527
3542
|
* @param state current state
|
|
3528
3543
|
* @param action action to execute
|
|
3529
3544
|
*/
|
|
3530
|
-
const reducer$
|
|
3545
|
+
const reducer$6 = (state, action) => {
|
|
3531
3546
|
switch (action.type) {
|
|
3532
|
-
case ActionType$
|
|
3547
|
+
case ActionType$5.StartLoading: {
|
|
3533
3548
|
return Object.assign(Object.assign({}, state), { loading: true });
|
|
3534
3549
|
}
|
|
3535
|
-
case ActionType$
|
|
3550
|
+
case ActionType$5.FinishLoading: {
|
|
3536
3551
|
return Object.assign(Object.assign({}, state), { loading: false, logMap: action.logMap });
|
|
3537
3552
|
}
|
|
3538
|
-
case ActionType$
|
|
3553
|
+
case ActionType$5.ToggleFilterDrawer: {
|
|
3539
3554
|
return Object.assign(Object.assign({}, state), { expandedFilterDrawer: (state.expandedFilterDrawer === action.filterDrawer
|
|
3540
3555
|
? undefined // hide
|
|
3541
3556
|
: action.filterDrawer) });
|
|
3542
3557
|
}
|
|
3543
|
-
case ActionType$
|
|
3558
|
+
case ActionType$5.HideFilterDrawer: {
|
|
3544
3559
|
return Object.assign(Object.assign({}, state), { expandedFilterDrawer: undefined });
|
|
3545
3560
|
}
|
|
3546
|
-
case ActionType$
|
|
3561
|
+
case ActionType$5.ResetFilters: {
|
|
3547
3562
|
return Object.assign(Object.assign({}, state), { dateFilterState: action.initDateFilterState, contextFilterState: action.initContextFilterState, tagFilterState: action.initTagFilterState, actionErrorFilterState: action.initActionErrorFilterState, advancedFilterState: action.initAdvancedFilterState });
|
|
3548
3563
|
}
|
|
3549
|
-
case ActionType$
|
|
3564
|
+
case ActionType$5.UpdateDateFilterState: {
|
|
3550
3565
|
return Object.assign(Object.assign({}, state), { dateFilterState: action.dateFilterState });
|
|
3551
3566
|
}
|
|
3552
|
-
case ActionType$
|
|
3567
|
+
case ActionType$5.UpdateContextFilterState: {
|
|
3553
3568
|
return Object.assign(Object.assign({}, state), { contextFilterState: action.contextFilterState });
|
|
3554
3569
|
}
|
|
3555
|
-
case ActionType$
|
|
3570
|
+
case ActionType$5.UpdateTagFilterState: {
|
|
3556
3571
|
return Object.assign(Object.assign({}, state), { tagFilterState: action.tagFilterState });
|
|
3557
3572
|
}
|
|
3558
|
-
case ActionType$
|
|
3573
|
+
case ActionType$5.UpdateActionErrorFilterState: {
|
|
3559
3574
|
return Object.assign(Object.assign({}, state), { actionErrorFilterState: action.actionErrorFilterState });
|
|
3560
3575
|
}
|
|
3561
|
-
case ActionType$
|
|
3576
|
+
case ActionType$5.UpdateAdvancedFilterState: {
|
|
3562
3577
|
return Object.assign(Object.assign({}, state), { advancedFilterState: action.advancedFilterState });
|
|
3563
3578
|
}
|
|
3564
3579
|
default: {
|
|
@@ -3687,7 +3702,7 @@ const LogReviewer = (props) => {
|
|
|
3687
3702
|
advancedFilterState: initAdvancedFilterState,
|
|
3688
3703
|
};
|
|
3689
3704
|
// Initialize state
|
|
3690
|
-
const [state, dispatch] = useReducer(reducer$
|
|
3705
|
+
const [state, dispatch] = useReducer(reducer$6, initialState);
|
|
3691
3706
|
// Destructure common state
|
|
3692
3707
|
const { loading, logMap, expandedFilterDrawer, dateFilterState, contextFilterState, tagFilterState, actionErrorFilterState, advancedFilterState, } = state;
|
|
3693
3708
|
/*------------------------------------------------------------------------*/
|
|
@@ -3737,7 +3752,7 @@ const LogReviewer = (props) => {
|
|
|
3737
3752
|
const handleDateRangeUpdated = (newDateFilterState) => __awaiter(void 0, void 0, void 0, function* () {
|
|
3738
3753
|
// Update state
|
|
3739
3754
|
dispatch({
|
|
3740
|
-
type: ActionType$
|
|
3755
|
+
type: ActionType$5.UpdateDateFilterState,
|
|
3741
3756
|
dateFilterState: newDateFilterState,
|
|
3742
3757
|
});
|
|
3743
3758
|
// Check which year/month combos we need to load
|
|
@@ -3748,7 +3763,7 @@ const LogReviewer = (props) => {
|
|
|
3748
3763
|
}
|
|
3749
3764
|
// Start loading
|
|
3750
3765
|
dispatch({
|
|
3751
|
-
type: ActionType$
|
|
3766
|
+
type: ActionType$5.StartLoading,
|
|
3752
3767
|
});
|
|
3753
3768
|
// Load required months
|
|
3754
3769
|
try {
|
|
@@ -3772,7 +3787,7 @@ const LogReviewer = (props) => {
|
|
|
3772
3787
|
}
|
|
3773
3788
|
// Finish loading
|
|
3774
3789
|
dispatch({
|
|
3775
|
-
type: ActionType$
|
|
3790
|
+
type: ActionType$5.FinishLoading,
|
|
3776
3791
|
logMap,
|
|
3777
3792
|
});
|
|
3778
3793
|
});
|
|
@@ -3811,7 +3826,7 @@ const LogReviewer = (props) => {
|
|
|
3811
3826
|
React__default.createElement("div", { className: "LogReviewer-filter-toggle-buttons alert alert-secondary p-2 m-0" },
|
|
3812
3827
|
React__default.createElement("button", { type: "button", id: "LogReviewer-toggle-date-filter-drawer", className: `btn btn-${FilterDrawer.Date === expandedFilterDrawer ? 'warning' : 'light'} me-2`, "aria-label": "toggle date filter drawer", onClick: () => {
|
|
3813
3828
|
dispatch({
|
|
3814
|
-
type: ActionType$
|
|
3829
|
+
type: ActionType$5.ToggleFilterDrawer,
|
|
3815
3830
|
filterDrawer: FilterDrawer.Date,
|
|
3816
3831
|
});
|
|
3817
3832
|
} },
|
|
@@ -3819,7 +3834,7 @@ const LogReviewer = (props) => {
|
|
|
3819
3834
|
"Date"),
|
|
3820
3835
|
React__default.createElement("button", { type: "button", id: "LogReviewer-toggle-context-filter-drawer", className: `btn btn-${FilterDrawer.Context === expandedFilterDrawer ? 'warning' : 'light'} me-2`, "aria-label": "toggle context filter drawer", onClick: () => {
|
|
3821
3836
|
dispatch({
|
|
3822
|
-
type: ActionType$
|
|
3837
|
+
type: ActionType$5.ToggleFilterDrawer,
|
|
3823
3838
|
filterDrawer: FilterDrawer.Context,
|
|
3824
3839
|
});
|
|
3825
3840
|
} },
|
|
@@ -3827,7 +3842,7 @@ const LogReviewer = (props) => {
|
|
|
3827
3842
|
"Context"),
|
|
3828
3843
|
(LogMetadata.Tag && Object.keys(LogMetadata.Tag).length > 0) && (React__default.createElement("button", { type: "button", id: "LogReviewer-toggle-tag-filter-drawer", className: `btn btn-${FilterDrawer.Tag === expandedFilterDrawer ? 'warning' : 'light'} me-2`, "aria-label": "toggle tag filter drawer", onClick: () => {
|
|
3829
3844
|
dispatch({
|
|
3830
|
-
type: ActionType$
|
|
3845
|
+
type: ActionType$5.ToggleFilterDrawer,
|
|
3831
3846
|
filterDrawer: FilterDrawer.Tag,
|
|
3832
3847
|
});
|
|
3833
3848
|
} },
|
|
@@ -3835,7 +3850,7 @@ const LogReviewer = (props) => {
|
|
|
3835
3850
|
"Tag")),
|
|
3836
3851
|
React__default.createElement("button", { type: "button", id: "LogReviewer-toggle-action-filter-drawer", className: `btn btn-${FilterDrawer.Action === expandedFilterDrawer ? 'warning' : 'light'} me-2`, "aria-label": "toggle action and error filter drawer", onClick: () => {
|
|
3837
3852
|
dispatch({
|
|
3838
|
-
type: ActionType$
|
|
3853
|
+
type: ActionType$5.ToggleFilterDrawer,
|
|
3839
3854
|
filterDrawer: FilterDrawer.Action,
|
|
3840
3855
|
});
|
|
3841
3856
|
} },
|
|
@@ -3843,7 +3858,7 @@ const LogReviewer = (props) => {
|
|
|
3843
3858
|
"Action"),
|
|
3844
3859
|
React__default.createElement("button", { type: "button", id: "LogReviewer-toggle-advanced-filter-drawer", className: `btn btn-${FilterDrawer.Advanced === expandedFilterDrawer ? 'warning' : 'light'} me-2`, "aria-label": "toggle advanced filter drawer", onClick: () => {
|
|
3845
3860
|
dispatch({
|
|
3846
|
-
type: ActionType$
|
|
3861
|
+
type: ActionType$5.ToggleFilterDrawer,
|
|
3847
3862
|
filterDrawer: FilterDrawer.Advanced,
|
|
3848
3863
|
});
|
|
3849
3864
|
} },
|
|
@@ -3851,7 +3866,7 @@ const LogReviewer = (props) => {
|
|
|
3851
3866
|
"Advanced"),
|
|
3852
3867
|
React__default.createElement("button", { type: "button", id: "LogReviewer-reset-filters-button", className: "btn btn-light", "aria-label": "reset filters", onClick: () => {
|
|
3853
3868
|
dispatch({
|
|
3854
|
-
type: ActionType$
|
|
3869
|
+
type: ActionType$5.ResetFilters,
|
|
3855
3870
|
initActionErrorFilterState,
|
|
3856
3871
|
initAdvancedFilterState,
|
|
3857
3872
|
initContextFilterState,
|
|
@@ -3973,7 +3988,7 @@ const LogReviewer = (props) => {
|
|
|
3973
3988
|
}
|
|
3974
3989
|
});
|
|
3975
3990
|
dispatch({
|
|
3976
|
-
type: ActionType$
|
|
3991
|
+
type: ActionType$5.UpdateContextFilterState,
|
|
3977
3992
|
contextFilterState,
|
|
3978
3993
|
});
|
|
3979
3994
|
} }));
|
|
@@ -3988,7 +4003,7 @@ const LogReviewer = (props) => {
|
|
|
3988
4003
|
return (React__default.createElement(CheckboxButton, { key: tag, id: `LogReviewer-tag-${tag}-checkbox`, text: description, ariaLabel: `require that logs be tagged with "${description}" or any other selected tag`, checked: tagFilterState[tag], onChanged: (checked) => {
|
|
3989
4004
|
tagFilterState[tag] = checked;
|
|
3990
4005
|
dispatch({
|
|
3991
|
-
type: ActionType$
|
|
4006
|
+
type: ActionType$5.UpdateTagFilterState,
|
|
3992
4007
|
tagFilterState,
|
|
3993
4008
|
});
|
|
3994
4009
|
} }));
|
|
@@ -4001,21 +4016,21 @@ const LogReviewer = (props) => {
|
|
|
4001
4016
|
React__default.createElement(RadioButton, { id: "LogReviewer-type-all", text: "All Logs", onSelected: () => {
|
|
4002
4017
|
actionErrorFilterState.type = undefined;
|
|
4003
4018
|
dispatch({
|
|
4004
|
-
type: ActionType$
|
|
4019
|
+
type: ActionType$5.UpdateActionErrorFilterState,
|
|
4005
4020
|
actionErrorFilterState,
|
|
4006
4021
|
});
|
|
4007
4022
|
}, ariaLabel: "show logs of all types", selected: actionErrorFilterState.type === undefined }),
|
|
4008
4023
|
React__default.createElement(RadioButton, { id: "LogReviewer-type-action-only", text: "Action Logs Only", onSelected: () => {
|
|
4009
4024
|
actionErrorFilterState.type = LogType$1.Action;
|
|
4010
4025
|
dispatch({
|
|
4011
|
-
type: ActionType$
|
|
4026
|
+
type: ActionType$5.UpdateActionErrorFilterState,
|
|
4012
4027
|
actionErrorFilterState,
|
|
4013
4028
|
});
|
|
4014
4029
|
}, ariaLabel: "only show action logs", selected: actionErrorFilterState.type === LogType$1.Action }),
|
|
4015
4030
|
React__default.createElement(RadioButton, { id: "LogReviewer-type-error-only", text: "Action Error Only", onSelected: () => {
|
|
4016
4031
|
actionErrorFilterState.type = LogType$1.Error;
|
|
4017
4032
|
dispatch({
|
|
4018
|
-
type: ActionType$
|
|
4033
|
+
type: ActionType$5.UpdateActionErrorFilterState,
|
|
4019
4034
|
actionErrorFilterState,
|
|
4020
4035
|
});
|
|
4021
4036
|
}, ariaLabel: "only show error logs", selected: actionErrorFilterState.type === LogType$1.Error, noMarginOnRight: true })),
|
|
@@ -4027,7 +4042,7 @@ const LogReviewer = (props) => {
|
|
|
4027
4042
|
return (React__default.createElement(CheckboxButton, { key: action, id: `LogReviewer-action-${action}-checkbox`, text: description, ariaLabel: `include logs with action type "${description}" in results`, noMarginOnRight: true, checked: actionErrorFilterState.action[action], onChanged: (checked) => {
|
|
4028
4043
|
actionErrorFilterState.action[action] = checked;
|
|
4029
4044
|
dispatch({
|
|
4030
|
-
type: ActionType$
|
|
4045
|
+
type: ActionType$5.UpdateActionErrorFilterState,
|
|
4031
4046
|
actionErrorFilterState,
|
|
4032
4047
|
});
|
|
4033
4048
|
} }));
|
|
@@ -4038,7 +4053,7 @@ const LogReviewer = (props) => {
|
|
|
4038
4053
|
return (React__default.createElement(CheckboxButton, { key: target, id: `LogReviewer-target-${target}-checkbox`, text: description, ariaLabel: `include logs with target "${description}" in results`, checked: actionErrorFilterState.target[target], noMarginOnRight: true, onChanged: (checked) => {
|
|
4039
4054
|
actionErrorFilterState.target[target] = checked;
|
|
4040
4055
|
dispatch({
|
|
4041
|
-
type: ActionType$
|
|
4056
|
+
type: ActionType$5.UpdateActionErrorFilterState,
|
|
4042
4057
|
actionErrorFilterState,
|
|
4043
4058
|
});
|
|
4044
4059
|
} }));
|
|
@@ -4050,7 +4065,7 @@ const LogReviewer = (props) => {
|
|
|
4050
4065
|
React__default.createElement("input", { type: "text", className: "form-control", "aria-label": "query for error message", value: actionErrorFilterState.errorMessage, placeholder: "e.g. undefined is not a function", onChange: (e) => {
|
|
4051
4066
|
actionErrorFilterState.errorMessage = e.target.value;
|
|
4052
4067
|
dispatch({
|
|
4053
|
-
type: ActionType$
|
|
4068
|
+
type: ActionType$5.UpdateActionErrorFilterState,
|
|
4054
4069
|
actionErrorFilterState,
|
|
4055
4070
|
});
|
|
4056
4071
|
} })),
|
|
@@ -4061,7 +4076,7 @@ const LogReviewer = (props) => {
|
|
|
4061
4076
|
.trim()
|
|
4062
4077
|
.toUpperCase());
|
|
4063
4078
|
dispatch({
|
|
4064
|
-
type: ActionType$
|
|
4079
|
+
type: ActionType$5.UpdateActionErrorFilterState,
|
|
4065
4080
|
actionErrorFilterState,
|
|
4066
4081
|
});
|
|
4067
4082
|
} }))))));
|
|
@@ -4075,7 +4090,7 @@ const LogReviewer = (props) => {
|
|
|
4075
4090
|
React__default.createElement("input", { type: "text", className: "form-control", "aria-label": "query for user first name", value: advancedFilterState.userFirstName, placeholder: "e.g. Divardo", onChange: (e) => {
|
|
4076
4091
|
advancedFilterState.userFirstName = e.target.value;
|
|
4077
4092
|
dispatch({
|
|
4078
|
-
type: ActionType$
|
|
4093
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4079
4094
|
advancedFilterState,
|
|
4080
4095
|
});
|
|
4081
4096
|
} })),
|
|
@@ -4084,7 +4099,7 @@ const LogReviewer = (props) => {
|
|
|
4084
4099
|
React__default.createElement("input", { type: "text", className: "form-control", "aria-label": "query for user last name", value: advancedFilterState.userLastName, placeholder: "e.g. Calicci", onChange: (e) => {
|
|
4085
4100
|
advancedFilterState.userLastName = e.target.value;
|
|
4086
4101
|
dispatch({
|
|
4087
|
-
type: ActionType$
|
|
4102
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4088
4103
|
advancedFilterState,
|
|
4089
4104
|
});
|
|
4090
4105
|
} })),
|
|
@@ -4094,7 +4109,7 @@ const LogReviewer = (props) => {
|
|
|
4094
4109
|
advancedFilterState.userEmail = ((e.target.value)
|
|
4095
4110
|
.trim());
|
|
4096
4111
|
dispatch({
|
|
4097
|
-
type: ActionType$
|
|
4112
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4098
4113
|
advancedFilterState,
|
|
4099
4114
|
});
|
|
4100
4115
|
} })),
|
|
@@ -4108,7 +4123,7 @@ const LogReviewer = (props) => {
|
|
|
4108
4123
|
.trim());
|
|
4109
4124
|
}
|
|
4110
4125
|
dispatch({
|
|
4111
|
-
type: ActionType$
|
|
4126
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4112
4127
|
advancedFilterState,
|
|
4113
4128
|
});
|
|
4114
4129
|
} })),
|
|
@@ -4116,21 +4131,21 @@ const LogReviewer = (props) => {
|
|
|
4116
4131
|
React__default.createElement(CheckboxButton, { text: "Students", onChanged: (checked) => {
|
|
4117
4132
|
advancedFilterState.includeLearners = checked;
|
|
4118
4133
|
dispatch({
|
|
4119
|
-
type: ActionType$
|
|
4134
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4120
4135
|
advancedFilterState,
|
|
4121
4136
|
});
|
|
4122
4137
|
}, checked: advancedFilterState.includeLearners, ariaLabel: "show logs from students" }),
|
|
4123
4138
|
React__default.createElement(CheckboxButton, { text: "Teaching Team Members", onChanged: (checked) => {
|
|
4124
4139
|
advancedFilterState.includeTTMs = checked;
|
|
4125
4140
|
dispatch({
|
|
4126
|
-
type: ActionType$
|
|
4141
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4127
4142
|
advancedFilterState,
|
|
4128
4143
|
});
|
|
4129
4144
|
}, checked: advancedFilterState.includeTTMs, ariaLabel: "show logs from teaching team members" }),
|
|
4130
4145
|
React__default.createElement(CheckboxButton, { text: "Admins", onChanged: (checked) => {
|
|
4131
4146
|
advancedFilterState.includeAdmins = checked;
|
|
4132
4147
|
dispatch({
|
|
4133
|
-
type: ActionType$
|
|
4148
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4134
4149
|
advancedFilterState,
|
|
4135
4150
|
});
|
|
4136
4151
|
}, checked: advancedFilterState.includeAdmins, ariaLabel: "show logs from admins" }))),
|
|
@@ -4140,7 +4155,7 @@ const LogReviewer = (props) => {
|
|
|
4140
4155
|
React__default.createElement("input", { type: "text", className: "form-control", "aria-label": "query for course name", value: advancedFilterState.courseName, placeholder: "e.g. GLC 200", onChange: (e) => {
|
|
4141
4156
|
advancedFilterState.courseName = e.target.value;
|
|
4142
4157
|
dispatch({
|
|
4143
|
-
type: ActionType$
|
|
4158
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4144
4159
|
advancedFilterState,
|
|
4145
4160
|
});
|
|
4146
4161
|
} })),
|
|
@@ -4154,7 +4169,7 @@ const LogReviewer = (props) => {
|
|
|
4154
4169
|
.trim());
|
|
4155
4170
|
}
|
|
4156
4171
|
dispatch({
|
|
4157
|
-
type: ActionType$
|
|
4172
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4158
4173
|
advancedFilterState,
|
|
4159
4174
|
});
|
|
4160
4175
|
} }))),
|
|
@@ -4163,21 +4178,21 @@ const LogReviewer = (props) => {
|
|
|
4163
4178
|
React__default.createElement(RadioButton, { text: "All Devices", ariaLabel: "show logs from all devices", selected: advancedFilterState.isMobile === undefined, onSelected: () => {
|
|
4164
4179
|
advancedFilterState.isMobile = undefined;
|
|
4165
4180
|
dispatch({
|
|
4166
|
-
type: ActionType$
|
|
4181
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4167
4182
|
advancedFilterState,
|
|
4168
4183
|
});
|
|
4169
4184
|
} }),
|
|
4170
4185
|
React__default.createElement(RadioButton, { text: "Mobile Only", ariaLabel: "show logs from mobile devices", selected: advancedFilterState.isMobile === true, onSelected: () => {
|
|
4171
4186
|
advancedFilterState.isMobile = true;
|
|
4172
4187
|
dispatch({
|
|
4173
|
-
type: ActionType$
|
|
4188
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4174
4189
|
advancedFilterState,
|
|
4175
4190
|
});
|
|
4176
4191
|
} }),
|
|
4177
4192
|
React__default.createElement(RadioButton, { text: "Desktop Only", ariaLabel: "show logs from desktop devices", selected: advancedFilterState.isMobile === false, onSelected: () => {
|
|
4178
4193
|
advancedFilterState.isMobile = false;
|
|
4179
4194
|
dispatch({
|
|
4180
|
-
type: ActionType$
|
|
4195
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4181
4196
|
advancedFilterState,
|
|
4182
4197
|
});
|
|
4183
4198
|
}, noMarginOnRight: true }))),
|
|
@@ -4186,21 +4201,21 @@ const LogReviewer = (props) => {
|
|
|
4186
4201
|
React__default.createElement(RadioButton, { text: "Both", ariaLabel: "show logs from all sources", selected: advancedFilterState.source === undefined, onSelected: () => {
|
|
4187
4202
|
advancedFilterState.source = undefined;
|
|
4188
4203
|
dispatch({
|
|
4189
|
-
type: ActionType$
|
|
4204
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4190
4205
|
advancedFilterState,
|
|
4191
4206
|
});
|
|
4192
4207
|
} }),
|
|
4193
4208
|
React__default.createElement(RadioButton, { text: "Client Only", ariaLabel: "show logs from client source", selected: advancedFilterState.source === LogSource$1.Client, onSelected: () => {
|
|
4194
4209
|
advancedFilterState.source = LogSource$1.Client;
|
|
4195
4210
|
dispatch({
|
|
4196
|
-
type: ActionType$
|
|
4211
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4197
4212
|
advancedFilterState,
|
|
4198
4213
|
});
|
|
4199
4214
|
} }),
|
|
4200
4215
|
React__default.createElement(RadioButton, { text: "Server Only", ariaLabel: "show logs from server source", selected: advancedFilterState.source === LogSource$1.Server, onSelected: () => {
|
|
4201
4216
|
advancedFilterState.source = LogSource$1.Server;
|
|
4202
4217
|
dispatch({
|
|
4203
|
-
type: ActionType$
|
|
4218
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4204
4219
|
advancedFilterState,
|
|
4205
4220
|
});
|
|
4206
4221
|
}, noMarginOnRight: true })),
|
|
@@ -4211,7 +4226,7 @@ const LogReviewer = (props) => {
|
|
|
4211
4226
|
advancedFilterState.courseName = ((e.target.value)
|
|
4212
4227
|
.trim());
|
|
4213
4228
|
dispatch({
|
|
4214
|
-
type: ActionType$
|
|
4229
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4215
4230
|
advancedFilterState,
|
|
4216
4231
|
});
|
|
4217
4232
|
} })),
|
|
@@ -4221,7 +4236,7 @@ const LogReviewer = (props) => {
|
|
|
4221
4236
|
advancedFilterState.courseName = ((e.target.value)
|
|
4222
4237
|
.trim());
|
|
4223
4238
|
dispatch({
|
|
4224
|
-
type: ActionType$
|
|
4239
|
+
type: ActionType$5.UpdateAdvancedFilterState,
|
|
4225
4240
|
advancedFilterState,
|
|
4226
4241
|
});
|
|
4227
4242
|
} })))))));
|
|
@@ -12041,11 +12056,11 @@ var CreatableSelect$1 = CreatableSelect;
|
|
|
12041
12056
|
*/
|
|
12042
12057
|
/* ------------- Actions ------------ */
|
|
12043
12058
|
// Types of actions
|
|
12044
|
-
var ActionType$
|
|
12059
|
+
var ActionType$4;
|
|
12045
12060
|
(function (ActionType) {
|
|
12046
12061
|
// Update the input value
|
|
12047
12062
|
ActionType["SetInputValue"] = "SetInputValue";
|
|
12048
|
-
})(ActionType$
|
|
12063
|
+
})(ActionType$4 || (ActionType$4 = {}));
|
|
12049
12064
|
/**
|
|
12050
12065
|
* Reducer that executes actions
|
|
12051
12066
|
* @author Yuen Ler Chow
|
|
@@ -12053,9 +12068,9 @@ var ActionType$5;
|
|
|
12053
12068
|
* @param action action to execute
|
|
12054
12069
|
* @returns updated state
|
|
12055
12070
|
*/
|
|
12056
|
-
const reducer$
|
|
12071
|
+
const reducer$5 = (state, action) => {
|
|
12057
12072
|
switch (action.type) {
|
|
12058
|
-
case ActionType$
|
|
12073
|
+
case ActionType$4.SetInputValue: {
|
|
12059
12074
|
return Object.assign(Object.assign({}, state), { inputValue: action.value });
|
|
12060
12075
|
}
|
|
12061
12076
|
default: {
|
|
@@ -12075,7 +12090,7 @@ const CreatableMultiselect = (props) => {
|
|
|
12075
12090
|
inputValue: '',
|
|
12076
12091
|
};
|
|
12077
12092
|
// Initialize state
|
|
12078
|
-
const [state, dispatch] = useReducer(reducer$
|
|
12093
|
+
const [state, dispatch] = useReducer(reducer$5, initialState);
|
|
12079
12094
|
// Destructure common state
|
|
12080
12095
|
const { inputValue } = state;
|
|
12081
12096
|
/*------------------------------------------------------------------------*/
|
|
@@ -12152,7 +12167,7 @@ const CreatableMultiselect = (props) => {
|
|
|
12152
12167
|
}
|
|
12153
12168
|
// Reset text field to empty because the values have been added
|
|
12154
12169
|
dispatch({
|
|
12155
|
-
type: ActionType$
|
|
12170
|
+
type: ActionType$4.SetInputValue,
|
|
12156
12171
|
value: '',
|
|
12157
12172
|
});
|
|
12158
12173
|
};
|
|
@@ -12191,7 +12206,7 @@ const CreatableMultiselect = (props) => {
|
|
|
12191
12206
|
else {
|
|
12192
12207
|
// simply update the input value to the new input value
|
|
12193
12208
|
dispatch({
|
|
12194
|
-
type: ActionType$
|
|
12209
|
+
type: ActionType$4.SetInputValue,
|
|
12195
12210
|
value: newValue,
|
|
12196
12211
|
});
|
|
12197
12212
|
}
|
|
@@ -12243,13 +12258,13 @@ const style$1 = `
|
|
|
12243
12258
|
`;
|
|
12244
12259
|
/* ------------- Actions ------------ */
|
|
12245
12260
|
// Types of actions
|
|
12246
|
-
var ActionType$
|
|
12261
|
+
var ActionType$3;
|
|
12247
12262
|
(function (ActionType) {
|
|
12248
12263
|
// Update the DBEntry
|
|
12249
12264
|
ActionType["UpdateDBEntry"] = "UpdateDBEntry";
|
|
12250
12265
|
// Start the save spinner
|
|
12251
12266
|
ActionType["StartSave"] = "StartSave";
|
|
12252
|
-
})(ActionType$
|
|
12267
|
+
})(ActionType$3 || (ActionType$3 = {}));
|
|
12253
12268
|
/**
|
|
12254
12269
|
* Reducer that executes actions
|
|
12255
12270
|
* @author Yuen Ler Chow
|
|
@@ -12257,12 +12272,12 @@ var ActionType$4;
|
|
|
12257
12272
|
* @param action action to execute
|
|
12258
12273
|
* @returns updated state
|
|
12259
12274
|
*/
|
|
12260
|
-
const reducer$
|
|
12275
|
+
const reducer$4 = (state, action) => {
|
|
12261
12276
|
switch (action.type) {
|
|
12262
|
-
case ActionType$
|
|
12277
|
+
case ActionType$3.UpdateDBEntry: {
|
|
12263
12278
|
return Object.assign(Object.assign({}, state), { entry: action.dbEntry });
|
|
12264
12279
|
}
|
|
12265
|
-
case ActionType$
|
|
12280
|
+
case ActionType$3.StartSave: {
|
|
12266
12281
|
return Object.assign(Object.assign({}, state), { saving: true });
|
|
12267
12282
|
}
|
|
12268
12283
|
default: {
|
|
@@ -12287,7 +12302,7 @@ const AddOrEditDBEntry = (props) => {
|
|
|
12287
12302
|
saving: false,
|
|
12288
12303
|
};
|
|
12289
12304
|
// Initialize state
|
|
12290
|
-
const [state, dispatch] = useReducer(reducer$
|
|
12305
|
+
const [state, dispatch] = useReducer(reducer$4, initialState);
|
|
12291
12306
|
// Destructure common state
|
|
12292
12307
|
const { entry, saving, } = state;
|
|
12293
12308
|
/*------------------------------------------------------------------------*/
|
|
@@ -12299,7 +12314,7 @@ const AddOrEditDBEntry = (props) => {
|
|
|
12299
12314
|
*/
|
|
12300
12315
|
const save = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
12301
12316
|
// Start the save loading indicator
|
|
12302
|
-
dispatch({ type: ActionType$
|
|
12317
|
+
dispatch({ type: ActionType$3.StartSave });
|
|
12303
12318
|
// add all default values to the entry
|
|
12304
12319
|
entryFields.forEach((field) => {
|
|
12305
12320
|
if (field.defaultValue && !entry[field.objectKey]) {
|
|
@@ -12482,7 +12497,7 @@ const AddOrEditDBEntry = (props) => {
|
|
|
12482
12497
|
return (React__default.createElement(RadioButton, { key: choice.value, text: choice.title, selected: entry[field.objectKey] === choice.value, onSelected: () => {
|
|
12483
12498
|
entry[field.objectKey] = choice.value;
|
|
12484
12499
|
dispatch({
|
|
12485
|
-
type: ActionType$
|
|
12500
|
+
type: ActionType$3.UpdateDBEntry,
|
|
12486
12501
|
dbEntry: entry,
|
|
12487
12502
|
});
|
|
12488
12503
|
}, ariaLabel: choice.title }));
|
|
@@ -12494,7 +12509,7 @@ const AddOrEditDBEntry = (props) => {
|
|
|
12494
12509
|
React__default.createElement("input", { disabled: disabled, type: "text", className: "form-control", placeholder: field.placeholder, "aria-describedby": "AddOrEditDBEntry-form-name-label", value: entry[field.objectKey] || '', onChange: (e) => {
|
|
12495
12510
|
entry[field.objectKey] = (e.target.value);
|
|
12496
12511
|
dispatch({
|
|
12497
|
-
type: ActionType$
|
|
12512
|
+
type: ActionType$3.UpdateDBEntry,
|
|
12498
12513
|
dbEntry: entry,
|
|
12499
12514
|
});
|
|
12500
12515
|
} }))));
|
|
@@ -12507,7 +12522,7 @@ const AddOrEditDBEntry = (props) => {
|
|
|
12507
12522
|
entry[field.objectKey] = (e.target.value
|
|
12508
12523
|
.replace(/[^0-9]/g, ''));
|
|
12509
12524
|
dispatch({
|
|
12510
|
-
type: ActionType$
|
|
12525
|
+
type: ActionType$3.UpdateDBEntry,
|
|
12511
12526
|
dbEntry: entry,
|
|
12512
12527
|
});
|
|
12513
12528
|
} }))));
|
|
@@ -12537,7 +12552,7 @@ const AddOrEditDBEntry = (props) => {
|
|
|
12537
12552
|
}
|
|
12538
12553
|
// Save
|
|
12539
12554
|
dispatch({
|
|
12540
|
-
type: ActionType$
|
|
12555
|
+
type: ActionType$3.UpdateDBEntry,
|
|
12541
12556
|
dbEntry: entry,
|
|
12542
12557
|
});
|
|
12543
12558
|
}, ariaLabel: choice.title }));
|
|
@@ -12552,7 +12567,7 @@ const AddOrEditDBEntry = (props) => {
|
|
|
12552
12567
|
// Update entry and save
|
|
12553
12568
|
entry[field.objectKey] = values;
|
|
12554
12569
|
dispatch({
|
|
12555
|
-
type: ActionType$
|
|
12570
|
+
type: ActionType$3.UpdateDBEntry,
|
|
12556
12571
|
dbEntry: entry,
|
|
12557
12572
|
});
|
|
12558
12573
|
} })))));
|
|
@@ -12565,7 +12580,7 @@ const AddOrEditDBEntry = (props) => {
|
|
|
12565
12580
|
React__default.createElement(CreatableMultiselect, { disabled: disabled, type: DBEntryFieldType$1.NumberArray, values: entry[field.objectKey] || [], onChange: (values) => {
|
|
12566
12581
|
entry[field.objectKey] = values;
|
|
12567
12582
|
dispatch({
|
|
12568
|
-
type: ActionType$
|
|
12583
|
+
type: ActionType$3.UpdateDBEntry,
|
|
12569
12584
|
dbEntry: entry,
|
|
12570
12585
|
});
|
|
12571
12586
|
} })))));
|
|
@@ -12639,7 +12654,7 @@ const generateEndpointPath = (collectionName, adminsOnly) => {
|
|
|
12639
12654
|
*/
|
|
12640
12655
|
/* ------------- Actions ------------ */
|
|
12641
12656
|
// Types of actions
|
|
12642
|
-
var ActionType$
|
|
12657
|
+
var ActionType$2;
|
|
12643
12658
|
(function (ActionType) {
|
|
12644
12659
|
// Show adder
|
|
12645
12660
|
ActionType["ShowAdder"] = "ShowAdder";
|
|
@@ -12653,7 +12668,7 @@ var ActionType$3;
|
|
|
12653
12668
|
ActionType["StartDelete"] = "StartDelete";
|
|
12654
12669
|
// Finish deletion process
|
|
12655
12670
|
ActionType["FinishDelete"] = "FinishDelete";
|
|
12656
|
-
})(ActionType$
|
|
12671
|
+
})(ActionType$2 || (ActionType$2 = {}));
|
|
12657
12672
|
/**
|
|
12658
12673
|
* Reducer that executes actions
|
|
12659
12674
|
* @author Yuen Ler Chow
|
|
@@ -12661,18 +12676,18 @@ var ActionType$3;
|
|
|
12661
12676
|
* @param action action to execute
|
|
12662
12677
|
* @returns updated state
|
|
12663
12678
|
*/
|
|
12664
|
-
const reducer$
|
|
12679
|
+
const reducer$3 = (state, action) => {
|
|
12665
12680
|
switch (action.type) {
|
|
12666
|
-
case ActionType$
|
|
12681
|
+
case ActionType$2.FinishLoading: {
|
|
12667
12682
|
return Object.assign(Object.assign({}, state), { loading: false, dbEntries: action.dbEntries });
|
|
12668
12683
|
}
|
|
12669
|
-
case ActionType$
|
|
12684
|
+
case ActionType$2.ShowAdder: {
|
|
12670
12685
|
return Object.assign(Object.assign({}, state), { adding: true, dbEntryToEdit: undefined });
|
|
12671
12686
|
}
|
|
12672
|
-
case ActionType$
|
|
12687
|
+
case ActionType$2.ShowEditor: {
|
|
12673
12688
|
return Object.assign(Object.assign({}, state), { adding: false, dbEntryToEdit: action.dbEntry });
|
|
12674
12689
|
}
|
|
12675
|
-
case ActionType$
|
|
12690
|
+
case ActionType$2.FinishAdd: {
|
|
12676
12691
|
// Handle cancel
|
|
12677
12692
|
const finishedEntry = action.dbEntry;
|
|
12678
12693
|
if (!finishedEntry) {
|
|
@@ -12696,10 +12711,10 @@ const reducer$4 = (state, action) => {
|
|
|
12696
12711
|
// Update the state
|
|
12697
12712
|
return Object.assign(Object.assign({}, state), { adding: false, dbEntryToEdit: undefined, dbEntries: updatedDbEntries });
|
|
12698
12713
|
}
|
|
12699
|
-
case ActionType$
|
|
12714
|
+
case ActionType$2.StartDelete: {
|
|
12700
12715
|
return Object.assign(Object.assign({}, state), { loading: true });
|
|
12701
12716
|
}
|
|
12702
|
-
case ActionType$
|
|
12717
|
+
case ActionType$2.FinishDelete: {
|
|
12703
12718
|
return Object.assign(Object.assign({}, state), { loading: false,
|
|
12704
12719
|
// Remove the deleted entry from the list
|
|
12705
12720
|
dbEntries: state.dbEntries.filter((entry) => {
|
|
@@ -12725,7 +12740,7 @@ const DBEntryManagerPanel = (props) => {
|
|
|
12725
12740
|
loading: true,
|
|
12726
12741
|
};
|
|
12727
12742
|
// Initialize state
|
|
12728
|
-
const [state, dispatch] = useReducer(reducer$
|
|
12743
|
+
const [state, dispatch] = useReducer(reducer$3, initialState);
|
|
12729
12744
|
// Destructure common state
|
|
12730
12745
|
const { adding, dbEntryToEdit, dbEntries, loading, } = state;
|
|
12731
12746
|
/*------------------------------------------------------------------------*/
|
|
@@ -12751,7 +12766,7 @@ const DBEntryManagerPanel = (props) => {
|
|
|
12751
12766
|
try {
|
|
12752
12767
|
// Start loader
|
|
12753
12768
|
dispatch({
|
|
12754
|
-
type: ActionType$
|
|
12769
|
+
type: ActionType$2.StartDelete,
|
|
12755
12770
|
});
|
|
12756
12771
|
// Perform deletion
|
|
12757
12772
|
yield visitServerEndpoint({
|
|
@@ -12760,7 +12775,7 @@ const DBEntryManagerPanel = (props) => {
|
|
|
12760
12775
|
});
|
|
12761
12776
|
// Finish loader
|
|
12762
12777
|
dispatch({
|
|
12763
|
-
type: ActionType$
|
|
12778
|
+
type: ActionType$2.FinishDelete,
|
|
12764
12779
|
dbEntry: entry,
|
|
12765
12780
|
idPropName,
|
|
12766
12781
|
});
|
|
@@ -12789,7 +12804,7 @@ const DBEntryManagerPanel = (props) => {
|
|
|
12789
12804
|
});
|
|
12790
12805
|
// Save loaded data
|
|
12791
12806
|
dispatch({
|
|
12792
|
-
type: ActionType$
|
|
12807
|
+
type: ActionType$2.FinishLoading,
|
|
12793
12808
|
dbEntries: data,
|
|
12794
12809
|
});
|
|
12795
12810
|
}
|
|
@@ -12832,7 +12847,7 @@ const DBEntryManagerPanel = (props) => {
|
|
|
12832
12847
|
React__default.createElement("span", { className: "d-none d-md-inline ms-1" }, "Remove")),
|
|
12833
12848
|
!disableEdit && (React__default.createElement("button", { type: "button", id: `DBEntryManagerPanel-edit-with-id-${entry[idPropName]}`, className: "btn btn-primary", "aria-label": `edit db entry: ${entry[titlePropName]}`, onClick: () => {
|
|
12834
12849
|
dispatch({
|
|
12835
|
-
type: ActionType$
|
|
12850
|
+
type: ActionType$2.ShowEditor,
|
|
12836
12851
|
dbEntry: entry,
|
|
12837
12852
|
});
|
|
12838
12853
|
} },
|
|
@@ -12842,7 +12857,7 @@ const DBEntryManagerPanel = (props) => {
|
|
|
12842
12857
|
React__default.createElement("div", { className: "d-grid" },
|
|
12843
12858
|
React__default.createElement("button", { type: "button", id: "DBEntryManagerPanel-add-entry", className: "btn btn-lg btn-primary", "aria-label": `add a new ${itemName} entry to the list of entries`, onClick: () => {
|
|
12844
12859
|
dispatch({
|
|
12845
|
-
type: ActionType$
|
|
12860
|
+
type: ActionType$2.ShowAdder,
|
|
12846
12861
|
});
|
|
12847
12862
|
} },
|
|
12848
12863
|
React__default.createElement(FontAwesomeIcon, { icon: faPlus, className: "me-2" }),
|
|
@@ -12854,7 +12869,7 @@ const DBEntryManagerPanel = (props) => {
|
|
|
12854
12869
|
if (!loading && (adding || dbEntryToEdit)) {
|
|
12855
12870
|
body = (React__default.createElement(AddOrEditDBEntry, { saveEndpointPath: endpoint, validateEntry: validateEntry, modifyEntry: modifyEntry, entryFields: entryFields, dbEntryToEdit: dbEntryToEdit, idPropName: idPropName, entries: dbEntries, itemName: itemName, onFinished: (entry) => {
|
|
12856
12871
|
dispatch({
|
|
12857
|
-
type: ActionType$
|
|
12872
|
+
type: ActionType$2.FinishAdd,
|
|
12858
12873
|
dbEntry: entry,
|
|
12859
12874
|
idPropName,
|
|
12860
12875
|
});
|
|
@@ -13051,25 +13066,25 @@ const getItemIds = (items) => {
|
|
|
13051
13066
|
};
|
|
13052
13067
|
/* ------------- Actions ------------ */
|
|
13053
13068
|
// Types of actions
|
|
13054
|
-
var ActionType$
|
|
13069
|
+
var ActionType$1;
|
|
13055
13070
|
(function (ActionType) {
|
|
13056
13071
|
// Hide the "jump to bottom" button
|
|
13057
13072
|
ActionType["HideJumpToBottomButton"] = "HideJumpToBottomButton";
|
|
13058
13073
|
// Show the "jump to bottom" button
|
|
13059
13074
|
ActionType["ShowJumpToBottomButton"] = "ShowJumpToBottomButton";
|
|
13060
|
-
})(ActionType$
|
|
13075
|
+
})(ActionType$1 || (ActionType$1 = {}));
|
|
13061
13076
|
/**
|
|
13062
13077
|
* Reducer that executes actions
|
|
13063
13078
|
* @author Gabe Abrams
|
|
13064
13079
|
* @param state current state
|
|
13065
13080
|
* @param action action to execute
|
|
13066
13081
|
*/
|
|
13067
|
-
const reducer$
|
|
13082
|
+
const reducer$2 = (state, action) => {
|
|
13068
13083
|
switch (action.type) {
|
|
13069
|
-
case ActionType$
|
|
13084
|
+
case ActionType$1.HideJumpToBottomButton: {
|
|
13070
13085
|
return Object.assign(Object.assign({}, state), { jumpToBottomButtonVisible: false });
|
|
13071
13086
|
}
|
|
13072
|
-
case ActionType$
|
|
13087
|
+
case ActionType$1.ShowJumpToBottomButton: {
|
|
13073
13088
|
return Object.assign(Object.assign({}, state), { jumpToBottomButtonVisible: true });
|
|
13074
13089
|
}
|
|
13075
13090
|
default: {
|
|
@@ -13093,7 +13108,7 @@ const AutoscrollToBottomContainer = (props) => {
|
|
|
13093
13108
|
jumpToBottomButtonVisible: false,
|
|
13094
13109
|
};
|
|
13095
13110
|
// Initialize state
|
|
13096
|
-
const [state, dispatch] = useReducer(reducer$
|
|
13111
|
+
const [state, dispatch] = useReducer(reducer$2, initialState);
|
|
13097
13112
|
// Destructure common state
|
|
13098
13113
|
const { jumpToBottomButtonVisible, } = state;
|
|
13099
13114
|
/* -------------- Refs -------------- */
|
|
@@ -13139,7 +13154,7 @@ const AutoscrollToBottomContainer = (props) => {
|
|
|
13139
13154
|
}
|
|
13140
13155
|
// Update state
|
|
13141
13156
|
dispatch({
|
|
13142
|
-
type: ActionType$
|
|
13157
|
+
type: ActionType$1.HideJumpToBottomButton,
|
|
13143
13158
|
});
|
|
13144
13159
|
// Scroll to bottom
|
|
13145
13160
|
container.current.scrollTop = (container.current.scrollHeight
|
|
@@ -13163,7 +13178,7 @@ const AutoscrollToBottomContainer = (props) => {
|
|
|
13163
13178
|
if (isScrolledToBottom()) {
|
|
13164
13179
|
// Hide button
|
|
13165
13180
|
dispatch({
|
|
13166
|
-
type: ActionType$
|
|
13181
|
+
type: ActionType$1.HideJumpToBottomButton,
|
|
13167
13182
|
});
|
|
13168
13183
|
}
|
|
13169
13184
|
};
|
|
@@ -13205,7 +13220,7 @@ const AutoscrollToBottomContainer = (props) => {
|
|
|
13205
13220
|
else {
|
|
13206
13221
|
// Not scrolled to bottom. Show "jump to bottom" button.
|
|
13207
13222
|
dispatch({
|
|
13208
|
-
type: ActionType$
|
|
13223
|
+
type: ActionType$1.ShowJumpToBottomButton,
|
|
13209
13224
|
});
|
|
13210
13225
|
}
|
|
13211
13226
|
}, [items]);
|
|
@@ -13275,25 +13290,25 @@ const combineClassNames = (classNames) => {
|
|
|
13275
13290
|
*/
|
|
13276
13291
|
/* ------------- Actions ------------ */
|
|
13277
13292
|
// Types of actions
|
|
13278
|
-
var ActionType
|
|
13293
|
+
var ActionType;
|
|
13279
13294
|
(function (ActionType) {
|
|
13280
13295
|
// Start hovering on an option
|
|
13281
13296
|
ActionType["StartHover"] = "StartHover";
|
|
13282
13297
|
// Stop hovering on an option
|
|
13283
13298
|
ActionType["StopHover"] = "StopHover";
|
|
13284
|
-
})(ActionType
|
|
13299
|
+
})(ActionType || (ActionType = {}));
|
|
13285
13300
|
/**
|
|
13286
13301
|
* Reducer that executes actions
|
|
13287
13302
|
* @author Gabe Abrams
|
|
13288
13303
|
* @param state current state
|
|
13289
13304
|
* @param action action to execute
|
|
13290
13305
|
*/
|
|
13291
|
-
const reducer$
|
|
13306
|
+
const reducer$1 = (state, action) => {
|
|
13292
13307
|
switch (action.type) {
|
|
13293
|
-
case ActionType
|
|
13308
|
+
case ActionType.StartHover: {
|
|
13294
13309
|
return Object.assign(Object.assign({}, state), { hoveredOptionId: action.hoveredOptionId });
|
|
13295
13310
|
}
|
|
13296
|
-
case ActionType
|
|
13311
|
+
case ActionType.StopHover: {
|
|
13297
13312
|
return Object.assign(Object.assign({}, state), { hoveredOptionId: undefined });
|
|
13298
13313
|
}
|
|
13299
13314
|
default: {
|
|
@@ -13317,7 +13332,7 @@ const MultiSwitch = (props) => {
|
|
|
13317
13332
|
hoveredOptionId: undefined,
|
|
13318
13333
|
};
|
|
13319
13334
|
// Initialize state
|
|
13320
|
-
const [state, dispatch] = useReducer(reducer$
|
|
13335
|
+
const [state, dispatch] = useReducer(reducer$1, initialState);
|
|
13321
13336
|
// Destructure common state
|
|
13322
13337
|
const { hoveredOptionId, } = state;
|
|
13323
13338
|
/*------------------------------------------------------------------------*/
|
|
@@ -13329,7 +13344,7 @@ const MultiSwitch = (props) => {
|
|
|
13329
13344
|
});
|
|
13330
13345
|
// Constants
|
|
13331
13346
|
const gutterRems = heightRem * 0.1;
|
|
13332
|
-
const itemWidthRems = heightRem *
|
|
13347
|
+
const itemWidthRems = heightRem * 1.3;
|
|
13333
13348
|
const textFontSize = heightRem / 3.5;
|
|
13334
13349
|
const iconFontSize = heightRem / 2;
|
|
13335
13350
|
const borderWidthRems = 0.05;
|
|
@@ -13449,27 +13464,27 @@ const MultiSwitch = (props) => {
|
|
|
13449
13464
|
: `click to select option "${option.label}"`), onClick: () => {
|
|
13450
13465
|
// Remove hover
|
|
13451
13466
|
dispatch({
|
|
13452
|
-
type: ActionType
|
|
13467
|
+
type: ActionType.StopHover,
|
|
13453
13468
|
});
|
|
13454
13469
|
// Notify parent
|
|
13455
13470
|
onChange(option.id);
|
|
13456
13471
|
}, onMouseEnter: () => {
|
|
13457
13472
|
dispatch({
|
|
13458
|
-
type: ActionType
|
|
13473
|
+
type: ActionType.StartHover,
|
|
13459
13474
|
hoveredOptionId: option.id,
|
|
13460
13475
|
});
|
|
13461
13476
|
}, onMouseLeave: () => {
|
|
13462
13477
|
dispatch({
|
|
13463
|
-
type: ActionType
|
|
13478
|
+
type: ActionType.StopHover,
|
|
13464
13479
|
});
|
|
13465
13480
|
}, onFocus: () => {
|
|
13466
13481
|
dispatch({
|
|
13467
|
-
type: ActionType
|
|
13482
|
+
type: ActionType.StartHover,
|
|
13468
13483
|
hoveredOptionId: option.id,
|
|
13469
13484
|
});
|
|
13470
13485
|
}, onBlur: () => {
|
|
13471
13486
|
dispatch({
|
|
13472
|
-
type: ActionType
|
|
13487
|
+
type: ActionType.StopHover,
|
|
13473
13488
|
});
|
|
13474
13489
|
}, style: {
|
|
13475
13490
|
pointerEvents: ((option.id === selectedOptionId)
|
|
@@ -13488,147 +13503,6 @@ const MultiSwitch = (props) => {
|
|
|
13488
13503
|
React__default.createElement("div", { className: "MultiSwitch-highlight-container" }, highlight)));
|
|
13489
13504
|
};
|
|
13490
13505
|
|
|
13491
|
-
// Types of dropdown items
|
|
13492
|
-
var DropdownItemType;
|
|
13493
|
-
(function (DropdownItemType) {
|
|
13494
|
-
// Dropdown header
|
|
13495
|
-
DropdownItemType["Header"] = "Header";
|
|
13496
|
-
// Dropdown divider
|
|
13497
|
-
DropdownItemType["Divider"] = "Divider";
|
|
13498
|
-
// Dropdown item
|
|
13499
|
-
DropdownItemType["Item"] = "Item";
|
|
13500
|
-
})(DropdownItemType || (DropdownItemType = {}));
|
|
13501
|
-
var DropdownItemType$1 = DropdownItemType;
|
|
13502
|
-
|
|
13503
|
-
/**
|
|
13504
|
-
* A simple dropdown menu
|
|
13505
|
-
* @author Alessandra De Lucas
|
|
13506
|
-
* @author Yuen Ler Chow
|
|
13507
|
-
* @author Gabe Abrams
|
|
13508
|
-
*/
|
|
13509
|
-
/* ------------- Actions ------------ */
|
|
13510
|
-
// Types of actions
|
|
13511
|
-
var ActionType;
|
|
13512
|
-
(function (ActionType) {
|
|
13513
|
-
// Toggle opening the dropdown menu
|
|
13514
|
-
ActionType["ToggleDropdown"] = "ToggleDropdown";
|
|
13515
|
-
// Close the dropdown menu
|
|
13516
|
-
ActionType["CloseDropdown"] = "CloseDropdown";
|
|
13517
|
-
})(ActionType || (ActionType = {}));
|
|
13518
|
-
/**
|
|
13519
|
-
* Reducer that executes actions
|
|
13520
|
-
* @author Alessandra De Lucas
|
|
13521
|
-
* @author Yuen Ler Chow
|
|
13522
|
-
* @param state current state
|
|
13523
|
-
* @param action action to execute
|
|
13524
|
-
*/
|
|
13525
|
-
const reducer$1 = (state, action) => {
|
|
13526
|
-
switch (action.type) {
|
|
13527
|
-
case ActionType.ToggleDropdown: {
|
|
13528
|
-
return Object.assign(Object.assign({}, state), { isDropdownOpen: !state.isDropdownOpen });
|
|
13529
|
-
}
|
|
13530
|
-
case ActionType.CloseDropdown: {
|
|
13531
|
-
return Object.assign(Object.assign({}, state), { isDropdownOpen: false });
|
|
13532
|
-
}
|
|
13533
|
-
default: {
|
|
13534
|
-
return state;
|
|
13535
|
-
}
|
|
13536
|
-
}
|
|
13537
|
-
};
|
|
13538
|
-
/*------------------------------------------------------------------------*/
|
|
13539
|
-
/* ------------------------------ Component ----------------------------- */
|
|
13540
|
-
/*------------------------------------------------------------------------*/
|
|
13541
|
-
const Dropdown = (props) => {
|
|
13542
|
-
/*------------------------------------------------------------------------*/
|
|
13543
|
-
/* -------------------------------- Setup ------------------------------- */
|
|
13544
|
-
/*------------------------------------------------------------------------*/
|
|
13545
|
-
/* -------------- Props ------------- */
|
|
13546
|
-
// Destructure all props
|
|
13547
|
-
const { dropdownButton, items, } = props;
|
|
13548
|
-
/* -------------- State ------------- */
|
|
13549
|
-
// Initial state
|
|
13550
|
-
const initialState = {
|
|
13551
|
-
isDropdownOpen: false,
|
|
13552
|
-
};
|
|
13553
|
-
// Initialize state
|
|
13554
|
-
const [state, dispatch] = useReducer(reducer$1, initialState);
|
|
13555
|
-
// Destructure common state
|
|
13556
|
-
const { isDropdownOpen, } = state;
|
|
13557
|
-
/* -------------- Refs -------------- */
|
|
13558
|
-
// Initialize refs
|
|
13559
|
-
const dropdownRef = useRef(null);
|
|
13560
|
-
/*------------------------------------------------------------------------*/
|
|
13561
|
-
/* ------------------------- Component Functions ------------------------ */
|
|
13562
|
-
/*------------------------------------------------------------------------*/
|
|
13563
|
-
/**
|
|
13564
|
-
* Handle clicking outside of the dropdown menu to close it
|
|
13565
|
-
* @author Yuen Ler Chow
|
|
13566
|
-
* @param event the mouse event
|
|
13567
|
-
*/
|
|
13568
|
-
const handleClickOutside = (event) => {
|
|
13569
|
-
if (
|
|
13570
|
-
// Dropdown has been rendered
|
|
13571
|
-
dropdownRef.current
|
|
13572
|
-
// Click occurred outside the dropdown
|
|
13573
|
-
&& !dropdownRef.current.contains(event.target)) {
|
|
13574
|
-
dispatch({ type: ActionType.CloseDropdown });
|
|
13575
|
-
}
|
|
13576
|
-
};
|
|
13577
|
-
/*------------------------------------------------------------------------*/
|
|
13578
|
-
/* ------------------------- Lifecycle Functions ------------------------ */
|
|
13579
|
-
/*------------------------------------------------------------------------*/
|
|
13580
|
-
/**
|
|
13581
|
-
* Mount
|
|
13582
|
-
* @author Yuen Ler Chow
|
|
13583
|
-
*/
|
|
13584
|
-
useEffect(() => {
|
|
13585
|
-
// Add event listener to close dropdown when clicking outside
|
|
13586
|
-
document.addEventListener('mousedown', handleClickOutside);
|
|
13587
|
-
// Cleanup
|
|
13588
|
-
return () => {
|
|
13589
|
-
document.removeEventListener('mousedown', handleClickOutside);
|
|
13590
|
-
};
|
|
13591
|
-
}, []);
|
|
13592
|
-
/*----------------------------------------*/
|
|
13593
|
-
/* --------------- Main UI -------------- */
|
|
13594
|
-
/*----------------------------------------*/
|
|
13595
|
-
return (React__default.createElement("div", { className: "dropdown", ref: dropdownRef, "data-bs-theme": isDarkModeOn() ? 'dark' : undefined },
|
|
13596
|
-
React__default.createElement("button", { className: combineClassNames([
|
|
13597
|
-
'btn dropdown-toggle border',
|
|
13598
|
-
isDropdownOpen && 'show',
|
|
13599
|
-
`btn-${dropdownButton.variant}`,
|
|
13600
|
-
dropdownButton.variant === Variant$1.Light && 'text-dark',
|
|
13601
|
-
]), type: "button", id: dropdownButton.id, "aria-expanded": isDropdownOpen, "aria-label": dropdownButton.ariaLabel, onClick: () => {
|
|
13602
|
-
dispatch({
|
|
13603
|
-
type: ActionType.ToggleDropdown,
|
|
13604
|
-
});
|
|
13605
|
-
} }, dropdownButton.content),
|
|
13606
|
-
React__default.createElement("ul", { className: combineClassNames([
|
|
13607
|
-
'dropdown-menu',
|
|
13608
|
-
isDarkModeOn() && 'dropdown-menu-dark',
|
|
13609
|
-
isDropdownOpen && 'show',
|
|
13610
|
-
]) }, Object.values(items).map((item) => {
|
|
13611
|
-
if (item.type === DropdownItemType$1.Header) {
|
|
13612
|
-
return (
|
|
13613
|
-
// TODO: Implement header
|
|
13614
|
-
React__default.createElement("span", null));
|
|
13615
|
-
}
|
|
13616
|
-
if (item.type === DropdownItemType$1.Divider) {
|
|
13617
|
-
return (
|
|
13618
|
-
// TODO: Implement divider
|
|
13619
|
-
React__default.createElement("span", null));
|
|
13620
|
-
}
|
|
13621
|
-
return (React__default.createElement("li", { key: item.id },
|
|
13622
|
-
React__default.createElement("button", { type: "button", "aria-label": item.ariaLabel, className: "dropdown-item", onClick: (e) => {
|
|
13623
|
-
e.preventDefault();
|
|
13624
|
-
dispatch({
|
|
13625
|
-
type: ActionType.CloseDropdown,
|
|
13626
|
-
});
|
|
13627
|
-
item.onClick();
|
|
13628
|
-
} }, item.content)));
|
|
13629
|
-
}))));
|
|
13630
|
-
};
|
|
13631
|
-
|
|
13632
13506
|
/**
|
|
13633
13507
|
* One minute in ms
|
|
13634
13508
|
* @author Gabe Abrams
|
|
@@ -15954,5 +15828,5 @@ var DayOfWeek;
|
|
|
15954
15828
|
})(DayOfWeek || (DayOfWeek = {}));
|
|
15955
15829
|
var DayOfWeek$1 = DayOfWeek;
|
|
15956
15830
|
|
|
15957
|
-
export { AppWrapper, AutoscrollToBottomContainer, ButtonInputGroup, CSVDownloadButton, CheckboxButton, CopiableBox, DAY_IN_MS, DBEntryFieldType$1 as DBEntryFieldType, DBEntryManagerPanel, DayOfWeek$1 as DayOfWeek, Drawer,
|
|
15831
|
+
export { AppWrapper, AutoscrollToBottomContainer, ButtonInputGroup, CSVDownloadButton, CheckboxButton, CopiableBox, DAY_IN_MS, DBEntryFieldType$1 as DBEntryFieldType, DBEntryManagerPanel, DayOfWeek$1 as DayOfWeek, Drawer, DynamicWord, ErrorBox, ErrorWithCode, HOUR_IN_MS, IntelliTable, ItemPicker, LoadingSpinner, LogAction$1 as LogAction, LogBuiltInMetadata, LogReviewer, LogSource$1 as LogSource, LogType$1 as LogType, MINUTE_IN_MS, Modal, ModalButtonType$1 as ModalButtonType, ModalSize$1 as ModalSize, ModalType$1 as ModalType, MultiSwitch, ParamType$1 as ParamType, PopFailureMark, PopPendingMark, PopSuccessMark, RadioButton, ReactKitErrorCode$1 as ReactKitErrorCode, SimpleDateChooser, TabBox, ToggleSwitch, Tooltip, Variant$1 as Variant, abbreviate, addDBEditorEndpoints, addFatalErrorHandler, alert, avg, canReviewLogs, capitalize, ceilToNumDecimals, combineClassNames, compareArraysByProp, confirm, everyAsync, extractProp, filterAsync, floorToNumDecimals, forEachAsync, forceNumIntoBounds, genCSV, genCommaList, genRouteHandler, getHumanReadableDate, getLocalTimeInfo, getMonthName, getOrdinal, getPartOfDay, getTimeInfoInET, handleError, handleSuccess, idify, initClient, initLogCollection, initServer, isMobileOrTablet, leaveToURL, logClientEvent, makeLinksClickable, mapAsync, onlyKeepLetters, padDecimalZeros, padZerosLeft, parallelLimit, prefixWithAOrAn, roundToNumDecimals, setClientEventMetadataPopulator, showFatalError, shuffleArray, someAsync, startMinWait, stringsToHumanReadableList, stubServerEndpoint, sum, useForceRender, validateEmail, validatePhoneNumber, validateString, visitServerEndpoint, waitMs };
|
|
15958
15832
|
//# sourceMappingURL=index.js.map
|