@local-civics/mgmt-ui 0.1.191 → 0.1.192
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/index.d.ts +117 -52
- package/dist/index.js +552 -346
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +609 -404
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useState, useMemo } from 'react';
|
|
3
|
-
import { createStyles, Group, Avatar, Text, Box, Badge as Badge$1, ThemeIcon, Collapse, Navbar as Navbar$1, Center, Image, Code, Burger, ScrollArea, Modal, Loader, Container, Button, Title, UnstyledButton, Card, SimpleGrid, Tabs as Tabs$1, Stack as Stack$
|
|
3
|
+
import { createStyles, Group, Avatar, Text, Box, Badge as Badge$1, ThemeIcon, Collapse, Navbar as Navbar$1, Center, Image, Code, Burger, ScrollArea, Modal, Loader, Container, Button, Title, UnstyledButton, Card, SimpleGrid, Tabs as Tabs$1, Stack as Stack$5, Grid, ActionIcon, LoadingOverlay, Select, Table as Table$l, Autocomplete, Drawer, Divider, TextInput, Tooltip, Paper, Overlay, Anchor, Menu, Checkbox, createEmotionCache, MantineProvider, AppShell } from '@mantine/core';
|
|
4
4
|
import { IconChevronRight, IconChevronLeft, IconVideo, IconSwitchHorizontal, IconLogout, IconHome2, IconGauge, IconCategory2, IconRoute, IconAlbum, IconLambda, IconClipboard, IconBuilding, IconBatteryEco, IconBooks, IconBackpack, IconClipboardCopy, IconTableExport, IconArrowLeft, IconPlaylistAdd, IconCheck, IconTrash, IconChevronUp, IconChevronDown, IconSelector, IconDownload, IconX, IconCloudUpload, IconInfoCircle, IconColorSwatch, IconPointer, IconScribble, IconSchool, IconPodium, IconBriefcase, IconPresentation, IconNews, IconTools, IconBrandInstagram, IconBrandLinkedin, IconBrandFacebook } from '@tabler/icons';
|
|
5
5
|
import { Link } from 'react-router-dom';
|
|
6
6
|
import { showNotification, NotificationsProvider } from '@mantine/notifications';
|
|
@@ -14,35 +14,35 @@ import AvatarInit from 'avatar-initials';
|
|
|
14
14
|
import { Chart } from 'react-charts';
|
|
15
15
|
import { useUncontrolled } from '@mantine/hooks';
|
|
16
16
|
|
|
17
|
-
var __defProp$
|
|
18
|
-
var __getOwnPropSymbols$
|
|
19
|
-
var __hasOwnProp$
|
|
20
|
-
var __propIsEnum$
|
|
21
|
-
var __defNormalProp$
|
|
22
|
-
var __spreadValues$
|
|
17
|
+
var __defProp$d = Object.defineProperty;
|
|
18
|
+
var __getOwnPropSymbols$d = Object.getOwnPropertySymbols;
|
|
19
|
+
var __hasOwnProp$d = Object.prototype.hasOwnProperty;
|
|
20
|
+
var __propIsEnum$d = Object.prototype.propertyIsEnumerable;
|
|
21
|
+
var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
22
|
+
var __spreadValues$d = (a, b) => {
|
|
23
23
|
for (var prop in b || (b = {}))
|
|
24
|
-
if (__hasOwnProp$
|
|
25
|
-
__defNormalProp$
|
|
26
|
-
if (__getOwnPropSymbols$
|
|
27
|
-
for (var prop of __getOwnPropSymbols$
|
|
28
|
-
if (__propIsEnum$
|
|
29
|
-
__defNormalProp$
|
|
24
|
+
if (__hasOwnProp$d.call(b, prop))
|
|
25
|
+
__defNormalProp$d(a, prop, b[prop]);
|
|
26
|
+
if (__getOwnPropSymbols$d)
|
|
27
|
+
for (var prop of __getOwnPropSymbols$d(b)) {
|
|
28
|
+
if (__propIsEnum$d.call(b, prop))
|
|
29
|
+
__defNormalProp$d(a, prop, b[prop]);
|
|
30
30
|
}
|
|
31
31
|
return a;
|
|
32
32
|
};
|
|
33
33
|
var __objRest$2 = (source, exclude) => {
|
|
34
34
|
var target = {};
|
|
35
35
|
for (var prop in source)
|
|
36
|
-
if (__hasOwnProp$
|
|
36
|
+
if (__hasOwnProp$d.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
37
37
|
target[prop] = source[prop];
|
|
38
|
-
if (source != null && __getOwnPropSymbols$
|
|
39
|
-
for (var prop of __getOwnPropSymbols$
|
|
40
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum$
|
|
38
|
+
if (source != null && __getOwnPropSymbols$d)
|
|
39
|
+
for (var prop of __getOwnPropSymbols$d(source)) {
|
|
40
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum$d.call(source, prop))
|
|
41
41
|
target[prop] = source[prop];
|
|
42
42
|
}
|
|
43
43
|
return target;
|
|
44
44
|
};
|
|
45
|
-
const useStyles$
|
|
45
|
+
const useStyles$y = createStyles((theme) => ({
|
|
46
46
|
user: {
|
|
47
47
|
display: "block",
|
|
48
48
|
width: "100%",
|
|
@@ -53,8 +53,8 @@ const useStyles$w = createStyles((theme) => ({
|
|
|
53
53
|
}));
|
|
54
54
|
function UserButton(_a) {
|
|
55
55
|
var _b = _a, { image, name, email, icon } = _b, others = __objRest$2(_b, ["image", "name", "email", "icon"]);
|
|
56
|
-
const { classes } = useStyles$
|
|
57
|
-
return /* @__PURE__ */ React.createElement(Group, __spreadValues$
|
|
56
|
+
const { classes } = useStyles$y();
|
|
57
|
+
return /* @__PURE__ */ React.createElement(Group, __spreadValues$d({ className: classes.user }, others), /* @__PURE__ */ React.createElement(Avatar, { src: image, radius: "xl" }), /* @__PURE__ */ React.createElement("div", { style: { flex: 1 } }, /* @__PURE__ */ React.createElement(Text, { size: "sm", weight: 500 }, name), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", size: "xs" }, email)));
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
const compact = (num) => {
|
|
@@ -64,7 +64,7 @@ const compact = (num) => {
|
|
|
64
64
|
}).format(num || 0);
|
|
65
65
|
};
|
|
66
66
|
|
|
67
|
-
const useStyles$
|
|
67
|
+
const useStyles$x = createStyles((theme, _params, getRef) => {
|
|
68
68
|
const icon = getRef("icon");
|
|
69
69
|
return {
|
|
70
70
|
control: {
|
|
@@ -117,7 +117,7 @@ const useStyles$v = createStyles((theme, _params, getRef) => {
|
|
|
117
117
|
};
|
|
118
118
|
});
|
|
119
119
|
function LinksGroup({ icon: Icon, href, label, initiallyOpened, links, active, notifications }) {
|
|
120
|
-
const { classes, theme, cx } = useStyles$
|
|
120
|
+
const { classes, theme, cx } = useStyles$x();
|
|
121
121
|
const hasLinks = Array.isArray(links) && links.length > 0;
|
|
122
122
|
const hasActiveLinks = Array.isArray(links) && links.map((l) => !!active && active === `${label}/${l.label}`).reduce((a, b) => a || b, false);
|
|
123
123
|
const [opened, setOpened] = useState(initiallyOpened || hasActiveLinks || false);
|
|
@@ -162,26 +162,26 @@ function LinksGroup({ icon: Icon, href, label, initiallyOpened, links, active, n
|
|
|
162
162
|
), hasLinks ? /* @__PURE__ */ React.createElement(Collapse, { in: opened }, items) : null);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
var __defProp$
|
|
166
|
-
var __defProps$
|
|
167
|
-
var __getOwnPropDescs$
|
|
168
|
-
var __getOwnPropSymbols$
|
|
169
|
-
var __hasOwnProp$
|
|
170
|
-
var __propIsEnum$
|
|
171
|
-
var __defNormalProp$
|
|
172
|
-
var __spreadValues$
|
|
165
|
+
var __defProp$c = Object.defineProperty;
|
|
166
|
+
var __defProps$9 = Object.defineProperties;
|
|
167
|
+
var __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;
|
|
168
|
+
var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
|
|
169
|
+
var __hasOwnProp$c = Object.prototype.hasOwnProperty;
|
|
170
|
+
var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
|
|
171
|
+
var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
172
|
+
var __spreadValues$c = (a, b) => {
|
|
173
173
|
for (var prop in b || (b = {}))
|
|
174
|
-
if (__hasOwnProp$
|
|
175
|
-
__defNormalProp$
|
|
176
|
-
if (__getOwnPropSymbols$
|
|
177
|
-
for (var prop of __getOwnPropSymbols$
|
|
178
|
-
if (__propIsEnum$
|
|
179
|
-
__defNormalProp$
|
|
174
|
+
if (__hasOwnProp$c.call(b, prop))
|
|
175
|
+
__defNormalProp$c(a, prop, b[prop]);
|
|
176
|
+
if (__getOwnPropSymbols$c)
|
|
177
|
+
for (var prop of __getOwnPropSymbols$c(b)) {
|
|
178
|
+
if (__propIsEnum$c.call(b, prop))
|
|
179
|
+
__defNormalProp$c(a, prop, b[prop]);
|
|
180
180
|
}
|
|
181
181
|
return a;
|
|
182
182
|
};
|
|
183
|
-
var __spreadProps$
|
|
184
|
-
const useStyles$
|
|
183
|
+
var __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));
|
|
184
|
+
const useStyles$w = createStyles((theme, _params, getRef) => {
|
|
185
185
|
const icon = getRef("icon");
|
|
186
186
|
return {
|
|
187
187
|
navbar: {
|
|
@@ -212,7 +212,7 @@ const useStyles$u = createStyles((theme, _params, getRef) => {
|
|
|
212
212
|
color: theme.colorScheme === "dark" ? theme.white : theme.black,
|
|
213
213
|
borderBottom: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[4] : theme.colors.gray[3]}`
|
|
214
214
|
},
|
|
215
|
-
link: __spreadProps$
|
|
215
|
+
link: __spreadProps$9(__spreadValues$c({}, theme.fn.focusStyles()), {
|
|
216
216
|
display: "flex",
|
|
217
217
|
alignItems: "center",
|
|
218
218
|
textDecoration: "none",
|
|
@@ -282,7 +282,7 @@ const TRIAL_PAGES = [
|
|
|
282
282
|
"Badges"
|
|
283
283
|
];
|
|
284
284
|
function Navbar(props) {
|
|
285
|
-
const { classes, cx } = useStyles$
|
|
285
|
+
const { classes, cx } = useStyles$w();
|
|
286
286
|
const [burgerOpen, setBurgerOpen] = React.useState(false);
|
|
287
287
|
const toggle = () => setBurgerOpen(!burgerOpen);
|
|
288
288
|
const links = data.map((item) => {
|
|
@@ -295,12 +295,12 @@ function Navbar(props) {
|
|
|
295
295
|
}
|
|
296
296
|
return /* @__PURE__ */ React.createElement(
|
|
297
297
|
LinksGroup,
|
|
298
|
-
__spreadProps$
|
|
298
|
+
__spreadProps$9(__spreadValues$c(__spreadValues$c({
|
|
299
299
|
key: item.label,
|
|
300
300
|
active: props.active
|
|
301
301
|
}, item), context), {
|
|
302
302
|
links: (item.links || []).map((link) => {
|
|
303
|
-
return __spreadValues$
|
|
303
|
+
return __spreadValues$c(__spreadValues$c({}, link), props.links[`${item.label}/${link.label}`] || { notifications: 0, href: "" });
|
|
304
304
|
})
|
|
305
305
|
})
|
|
306
306
|
);
|
|
@@ -325,7 +325,7 @@ function Navbar(props) {
|
|
|
325
325
|
} }, /* @__PURE__ */ React.createElement(IconLogout, { className: classes.linkIcon, stroke: 1.5 }), /* @__PURE__ */ React.createElement("span", null, "Logout"))))));
|
|
326
326
|
}
|
|
327
327
|
|
|
328
|
-
const useStyles$
|
|
328
|
+
const useStyles$v = createStyles((theme) => ({
|
|
329
329
|
inner: {
|
|
330
330
|
paddingTop: theme.spacing.xl,
|
|
331
331
|
paddingBottom: theme.spacing.xl * 4
|
|
@@ -361,7 +361,7 @@ const useStyles$t = createStyles((theme) => ({
|
|
|
361
361
|
}
|
|
362
362
|
}));
|
|
363
363
|
const GettingStarted = (props) => {
|
|
364
|
-
const { classes } = useStyles$
|
|
364
|
+
const { classes } = useStyles$v();
|
|
365
365
|
return /* @__PURE__ */ React.createElement(
|
|
366
366
|
Modal,
|
|
367
367
|
{
|
|
@@ -375,7 +375,7 @@ const GettingStarted = (props) => {
|
|
|
375
375
|
);
|
|
376
376
|
};
|
|
377
377
|
|
|
378
|
-
const useStyles$
|
|
378
|
+
const useStyles$u = createStyles((theme) => ({
|
|
379
379
|
title: {
|
|
380
380
|
fontSize: 34,
|
|
381
381
|
fontWeight: 900,
|
|
@@ -416,7 +416,7 @@ const useStyles$s = createStyles((theme) => ({
|
|
|
416
416
|
}
|
|
417
417
|
}));
|
|
418
418
|
const SwitchAccount = (props) => {
|
|
419
|
-
const { classes, theme } = useStyles$
|
|
419
|
+
const { classes, theme } = useStyles$u();
|
|
420
420
|
const options = props.accounts.map((a) => {
|
|
421
421
|
return /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: () => props.onClick && props.onClick(a.accountId), key: a.accountId, p: theme.spacing.md }, /* @__PURE__ */ React.createElement(Card, { withBorder: true, shadow: "md", radius: "md", className: classes.card, p: "xl" }, a.isAdmin && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(IconBatteryEco, { size: 50, stroke: 2, color: theme.fn.primaryColor() })), a.isGroupAdmin && !a.isAdmin && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(IconBooks, { size: 50, stroke: 2, color: theme.fn.primaryColor() })), !a.isAdmin && !a.isGroupAdmin && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(IconBackpack, { size: 50, stroke: 2, color: theme.fn.primaryColor() })), /* @__PURE__ */ React.createElement(Text, { size: "lg", weight: 500, className: classes.cardTitle, mt: "md" }, a.name), /* @__PURE__ */ React.createElement(Text, { size: "sm", color: "dimmed", mt: "sm" }, a.isAdmin ? "Admin" : a.isGroupAdmin ? "Educator" : "Student")));
|
|
422
422
|
});
|
|
@@ -433,7 +433,7 @@ const SwitchAccount = (props) => {
|
|
|
433
433
|
);
|
|
434
434
|
};
|
|
435
435
|
|
|
436
|
-
const useStyles$
|
|
436
|
+
const useStyles$t = createStyles((theme) => ({
|
|
437
437
|
root: {
|
|
438
438
|
display: "flex",
|
|
439
439
|
backgroundImage: `linear-gradient(-60deg, ${theme.colors[theme.primaryColor][4]} 0%, ${theme.colors[theme.primaryColor][7]} 100%)`,
|
|
@@ -477,7 +477,7 @@ const useStyles$r = createStyles((theme) => ({
|
|
|
477
477
|
}
|
|
478
478
|
}));
|
|
479
479
|
const StatsGroup = ({ data, footer }) => {
|
|
480
|
-
const { classes } = useStyles$
|
|
480
|
+
const { classes } = useStyles$t();
|
|
481
481
|
const stats = data.map((stat) => {
|
|
482
482
|
const value = (() => {
|
|
483
483
|
if (stat.unit === "%") {
|
|
@@ -497,7 +497,7 @@ const Tabs = (props) => {
|
|
|
497
497
|
return /* @__PURE__ */ React.createElement(Tabs$1, { value: props.value, onTabChange: props.onChange }, /* @__PURE__ */ React.createElement(Tabs$1.List, null, tabs));
|
|
498
498
|
};
|
|
499
499
|
|
|
500
|
-
const useStyles$
|
|
500
|
+
const useStyles$s = createStyles((theme) => ({
|
|
501
501
|
button: {
|
|
502
502
|
borderTopRightRadius: 0,
|
|
503
503
|
borderBottomRightRadius: 0,
|
|
@@ -511,10 +511,10 @@ const useStyles$q = createStyles((theme) => ({
|
|
|
511
511
|
borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
|
|
512
512
|
}
|
|
513
513
|
}));
|
|
514
|
-
const SplitButton$
|
|
515
|
-
const { classes, theme } = useStyles$
|
|
514
|
+
const SplitButton$5 = (props) => {
|
|
515
|
+
const { classes, theme } = useStyles$s();
|
|
516
516
|
theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
517
|
-
return /* @__PURE__ */ React.createElement(Stack$
|
|
517
|
+
return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
|
|
518
518
|
Button,
|
|
519
519
|
{
|
|
520
520
|
component: Link,
|
|
@@ -540,7 +540,7 @@ const SplitButton$4 = (props) => {
|
|
|
540
540
|
));
|
|
541
541
|
};
|
|
542
542
|
|
|
543
|
-
const useStyles$
|
|
543
|
+
const useStyles$r = createStyles((theme) => ({
|
|
544
544
|
wrapper: {
|
|
545
545
|
display: "flex",
|
|
546
546
|
alignItems: "center",
|
|
@@ -591,13 +591,13 @@ const useStyles$p = createStyles((theme) => ({
|
|
|
591
591
|
}
|
|
592
592
|
}));
|
|
593
593
|
const PlaceholderBanner = (props) => {
|
|
594
|
-
const { classes } = useStyles$
|
|
594
|
+
const { classes } = useStyles$r();
|
|
595
595
|
const title = props.title || "Nothing to display";
|
|
596
596
|
const description = props.description || "We don't have anything to show you here just yet. Add data, check back later, or adjust your search.";
|
|
597
597
|
return /* @__PURE__ */ React.createElement("div", { className: classes.wrapper }, /* @__PURE__ */ React.createElement("div", { className: classes.body }, /* @__PURE__ */ React.createElement(Title, { className: classes.title }, props.loading ? "Loading..." : title), /* @__PURE__ */ React.createElement(Text, { size: "sm", color: "dimmed" }, props.loading ? "Hold on, we're loading your data." : description)), /* @__PURE__ */ React.createElement(Image, { src: `https://cdn.localcivics.io/illustrations/${props.icon}.svg`, className: classes.image }));
|
|
598
598
|
};
|
|
599
599
|
|
|
600
|
-
function Stack$
|
|
600
|
+
function Stack$4(props) {
|
|
601
601
|
if (props.items.length === 0) {
|
|
602
602
|
return null;
|
|
603
603
|
}
|
|
@@ -645,28 +645,28 @@ function useSortableData(items, config = { key: "", direction: null }) {
|
|
|
645
645
|
return { items: sortedItems, requestSort, sortConfig };
|
|
646
646
|
}
|
|
647
647
|
|
|
648
|
-
var __defProp$
|
|
649
|
-
var __defProps$
|
|
650
|
-
var __getOwnPropDescs$
|
|
651
|
-
var __getOwnPropSymbols$
|
|
652
|
-
var __hasOwnProp$
|
|
653
|
-
var __propIsEnum$
|
|
654
|
-
var __defNormalProp$
|
|
655
|
-
var __spreadValues$
|
|
648
|
+
var __defProp$b = Object.defineProperty;
|
|
649
|
+
var __defProps$8 = Object.defineProperties;
|
|
650
|
+
var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;
|
|
651
|
+
var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
|
|
652
|
+
var __hasOwnProp$b = Object.prototype.hasOwnProperty;
|
|
653
|
+
var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
|
|
654
|
+
var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
655
|
+
var __spreadValues$b = (a, b) => {
|
|
656
656
|
for (var prop in b || (b = {}))
|
|
657
|
-
if (__hasOwnProp$
|
|
658
|
-
__defNormalProp$
|
|
659
|
-
if (__getOwnPropSymbols$
|
|
660
|
-
for (var prop of __getOwnPropSymbols$
|
|
661
|
-
if (__propIsEnum$
|
|
662
|
-
__defNormalProp$
|
|
657
|
+
if (__hasOwnProp$b.call(b, prop))
|
|
658
|
+
__defNormalProp$b(a, prop, b[prop]);
|
|
659
|
+
if (__getOwnPropSymbols$b)
|
|
660
|
+
for (var prop of __getOwnPropSymbols$b(b)) {
|
|
661
|
+
if (__propIsEnum$b.call(b, prop))
|
|
662
|
+
__defNormalProp$b(a, prop, b[prop]);
|
|
663
663
|
}
|
|
664
664
|
return a;
|
|
665
665
|
};
|
|
666
|
-
var __spreadProps$
|
|
667
|
-
function Table$
|
|
666
|
+
var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
|
|
667
|
+
function Table$k(props) {
|
|
668
668
|
const preparedItems = React.useMemo(() => {
|
|
669
|
-
return props.items.map((item) => __spreadProps$
|
|
669
|
+
return props.items.map((item) => __spreadProps$8(__spreadValues$b({}, item), {
|
|
670
670
|
status: item.isComplete ? 1 : 0
|
|
671
671
|
}));
|
|
672
672
|
}, [props.items]);
|
|
@@ -712,13 +712,13 @@ function Table$j(props) {
|
|
|
712
712
|
render: (row) => /* @__PURE__ */ React.createElement(React.Fragment, null, !!row.isComplete && /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled" }, "Complete"), !row.isComplete && /* @__PURE__ */ React.createElement(Badge$1, { color: "red", variant: "filled" }, "Incomplete"))
|
|
713
713
|
}],
|
|
714
714
|
rowExpansion: {
|
|
715
|
-
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$
|
|
715
|
+
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$4, { items: record.lessons })
|
|
716
716
|
}
|
|
717
717
|
}
|
|
718
718
|
));
|
|
719
719
|
}
|
|
720
720
|
|
|
721
|
-
function Table$
|
|
721
|
+
function Table$j(props) {
|
|
722
722
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
723
723
|
if (props.items.length === 0) {
|
|
724
724
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -763,7 +763,7 @@ function Table$i(props) {
|
|
|
763
763
|
));
|
|
764
764
|
}
|
|
765
765
|
|
|
766
|
-
const useStyles$
|
|
766
|
+
const useStyles$q = createStyles((theme) => ({
|
|
767
767
|
title: {
|
|
768
768
|
fontSize: 34,
|
|
769
769
|
fontWeight: 900,
|
|
@@ -776,12 +776,12 @@ const useStyles$o = createStyles((theme) => ({
|
|
|
776
776
|
}
|
|
777
777
|
}));
|
|
778
778
|
const Badge = (props) => {
|
|
779
|
-
const { classes } = useStyles$
|
|
779
|
+
const { classes } = useStyles$q();
|
|
780
780
|
const [tab, setTab] = useState("lessons");
|
|
781
781
|
const numberOfStudents = props.students.length;
|
|
782
782
|
const numberOfBadges = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
|
|
783
783
|
numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length / numberOfStudents : 0;
|
|
784
|
-
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
784
|
+
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
|
|
785
785
|
Badge$1,
|
|
786
786
|
{
|
|
787
787
|
variant: "filled",
|
|
@@ -789,14 +789,14 @@ const Badge = (props) => {
|
|
|
789
789
|
size: "lg"
|
|
790
790
|
},
|
|
791
791
|
"Back"
|
|
792
|
-
)), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$
|
|
793
|
-
SplitButton$
|
|
792
|
+
)), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Badge"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), !props.trial && /* @__PURE__ */ React.createElement(Stack$5, { ml: "auto" }, /* @__PURE__ */ React.createElement(
|
|
793
|
+
SplitButton$5,
|
|
794
794
|
{
|
|
795
795
|
href: props.href,
|
|
796
796
|
onCopyLinkClick: props.onCopyLinkClick,
|
|
797
797
|
onExportDataClick: props.onExportDataClick
|
|
798
798
|
}
|
|
799
|
-
))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$
|
|
799
|
+
))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
|
|
800
800
|
{
|
|
801
801
|
title: props.trial ? "LESSONS SUBMITTED" : "BADGE COMPLETION",
|
|
802
802
|
value: props.trial ? props.lessonsCompleted || 0 : numberOfBadges,
|
|
@@ -817,7 +817,7 @@ const Badge = (props) => {
|
|
|
817
817
|
return { value: g.classId, label: g.name };
|
|
818
818
|
})
|
|
819
819
|
}
|
|
820
|
-
), /* @__PURE__ */ React.createElement(Stack$
|
|
820
|
+
), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, !props.trial && /* @__PURE__ */ React.createElement(
|
|
821
821
|
Tabs,
|
|
822
822
|
{
|
|
823
823
|
value: tab,
|
|
@@ -828,13 +828,13 @@ const Badge = (props) => {
|
|
|
828
828
|
onChange: setTab
|
|
829
829
|
}
|
|
830
830
|
), (!!props.trial || tab === "lessons") && /* @__PURE__ */ React.createElement(
|
|
831
|
-
Table$
|
|
831
|
+
Table$j,
|
|
832
832
|
{
|
|
833
833
|
loading: props.loading,
|
|
834
834
|
items: props.lessons
|
|
835
835
|
}
|
|
836
836
|
), !props.trial && tab === "students" && /* @__PURE__ */ React.createElement(
|
|
837
|
-
Table$
|
|
837
|
+
Table$k,
|
|
838
838
|
{
|
|
839
839
|
loading: props.loading,
|
|
840
840
|
items: props.students
|
|
@@ -842,7 +842,7 @@ const Badge = (props) => {
|
|
|
842
842
|
)))))));
|
|
843
843
|
};
|
|
844
844
|
|
|
845
|
-
function Table$
|
|
845
|
+
function Table$i(props) {
|
|
846
846
|
if (props.items.length === 0) {
|
|
847
847
|
return /* @__PURE__ */ React.createElement(
|
|
848
848
|
PlaceholderBanner,
|
|
@@ -871,10 +871,10 @@ function Table$h(props) {
|
|
|
871
871
|
},
|
|
872
872
|
/* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Text, { size: "sm", weight: 500 }, row.name), /* @__PURE__ */ React.createElement(Text, { size: "xs", color: "dimmed" }, row.description)))
|
|
873
873
|
))));
|
|
874
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$
|
|
874
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { horizontalSpacing: 0, verticalSpacing: 0, sx: { minWidth: 700 } }, /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
875
875
|
}
|
|
876
876
|
|
|
877
|
-
const useStyles$
|
|
877
|
+
const useStyles$p = createStyles((theme) => ({
|
|
878
878
|
title: {
|
|
879
879
|
fontSize: 34,
|
|
880
880
|
fontWeight: 900,
|
|
@@ -887,8 +887,8 @@ const useStyles$n = createStyles((theme) => ({
|
|
|
887
887
|
}
|
|
888
888
|
}));
|
|
889
889
|
const Badges = (props) => {
|
|
890
|
-
const { classes } = useStyles$
|
|
891
|
-
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
890
|
+
const { classes } = useStyles$p();
|
|
891
|
+
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled", size: "lg" }, "Badges"), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "Badges and micro-credentials"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Key milestones that reflect skill development, micro-credentials, or academic progress"))), /* @__PURE__ */ React.createElement(
|
|
892
892
|
Autocomplete,
|
|
893
893
|
{
|
|
894
894
|
placeholder: "Search for a badge that fits your needs",
|
|
@@ -896,7 +896,7 @@ const Badges = (props) => {
|
|
|
896
896
|
onChange: props.onAutocompleteChange
|
|
897
897
|
}
|
|
898
898
|
), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(
|
|
899
|
-
Table$
|
|
899
|
+
Table$i,
|
|
900
900
|
{
|
|
901
901
|
loading: props.loading,
|
|
902
902
|
items: props.badges
|
|
@@ -904,7 +904,7 @@ const Badges = (props) => {
|
|
|
904
904
|
))));
|
|
905
905
|
};
|
|
906
906
|
|
|
907
|
-
function Table$
|
|
907
|
+
function Table$h(props) {
|
|
908
908
|
if (props.items.length === 0) {
|
|
909
909
|
return /* @__PURE__ */ React.createElement(
|
|
910
910
|
PlaceholderBanner,
|
|
@@ -917,7 +917,7 @@ function Table$g(props) {
|
|
|
917
917
|
);
|
|
918
918
|
}
|
|
919
919
|
const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.studentName }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: () => props.onViewProfile(row) }, row.studentName)), /* @__PURE__ */ React.createElement("td", null, row.className)));
|
|
920
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$
|
|
920
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Student Name"), /* @__PURE__ */ React.createElement("th", null, "Class Name"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
921
921
|
}
|
|
922
922
|
|
|
923
923
|
const units = [
|
|
@@ -944,7 +944,7 @@ function relativeTimeFromElapsed(elapsed) {
|
|
|
944
944
|
return "";
|
|
945
945
|
}
|
|
946
946
|
|
|
947
|
-
function Table$
|
|
947
|
+
function Table$g(props) {
|
|
948
948
|
if (props.items.length === 0) {
|
|
949
949
|
return /* @__PURE__ */ React.createElement(
|
|
950
950
|
PlaceholderBanner,
|
|
@@ -957,10 +957,10 @@ function Table$f(props) {
|
|
|
957
957
|
);
|
|
958
958
|
}
|
|
959
959
|
const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.studentName + row.lessonName }, /* @__PURE__ */ React.createElement("td", null, row.studentName), /* @__PURE__ */ React.createElement("td", null, row.lessonName), /* @__PURE__ */ React.createElement("td", null, row.reflection), /* @__PURE__ */ React.createElement("td", null, relativeTimeFromDates(new Date(row.updatedAt)))));
|
|
960
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$
|
|
960
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Student Name"), /* @__PURE__ */ React.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React.createElement("th", null, "Reflection"), /* @__PURE__ */ React.createElement("th", null, "Updated At"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
961
961
|
}
|
|
962
962
|
|
|
963
|
-
function Table$
|
|
963
|
+
function Table$f(props) {
|
|
964
964
|
if (props.items.length === 0) {
|
|
965
965
|
return /* @__PURE__ */ React.createElement(
|
|
966
966
|
PlaceholderBanner,
|
|
@@ -973,10 +973,10 @@ function Table$e(props) {
|
|
|
973
973
|
);
|
|
974
974
|
}
|
|
975
975
|
const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.studentName }, /* @__PURE__ */ React.createElement("td", null, row.studentName), /* @__PURE__ */ React.createElement("td", null, row.impactStatement)));
|
|
976
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$
|
|
976
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Student Name"), /* @__PURE__ */ React.createElement("th", null, "Impact Statement"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
977
977
|
}
|
|
978
978
|
|
|
979
|
-
function Table$
|
|
979
|
+
function Table$e(props) {
|
|
980
980
|
if (props.items.length === 0) {
|
|
981
981
|
return /* @__PURE__ */ React.createElement(
|
|
982
982
|
PlaceholderBanner,
|
|
@@ -989,10 +989,10 @@ function Table$d(props) {
|
|
|
989
989
|
);
|
|
990
990
|
}
|
|
991
991
|
const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.badgeId }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: () => props.onClick && props.onClick(row) }, row.name)), /* @__PURE__ */ React.createElement("td", null, row.description), /* @__PURE__ */ React.createElement("td", null, Math.round((row.percentageCompletion + Number.EPSILON) * 100), "%")));
|
|
992
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$
|
|
992
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Badge Name"), /* @__PURE__ */ React.createElement("th", null, "Description"), /* @__PURE__ */ React.createElement("th", null, "Completion"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
993
993
|
}
|
|
994
994
|
|
|
995
|
-
function Table$
|
|
995
|
+
function Table$d(props) {
|
|
996
996
|
if (props.items.length === 0) {
|
|
997
997
|
return /* @__PURE__ */ React.createElement(
|
|
998
998
|
PlaceholderBanner,
|
|
@@ -1005,12 +1005,12 @@ function Table$c(props) {
|
|
|
1005
1005
|
);
|
|
1006
1006
|
}
|
|
1007
1007
|
const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.lessonId }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: () => props.onClick && props.onClick(row) }, row.name)), /* @__PURE__ */ React.createElement("td", null, row.description), /* @__PURE__ */ React.createElement("td", null, Math.round((row.percentageCompletion + Number.EPSILON) * 100), "%")));
|
|
1008
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$
|
|
1008
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React.createElement("th", null, "Description"), /* @__PURE__ */ React.createElement("th", null, "Completion"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
1009
1009
|
}
|
|
1010
1010
|
|
|
1011
1011
|
const Dashboard = (props) => {
|
|
1012
1012
|
const [tab, setTab] = useState("students");
|
|
1013
|
-
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
1013
|
+
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { size: "h3" }, "Dashboard"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", size: "sm", mt: "md" }, "Track your students\u2019 pathway progress")), /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
|
|
1014
1014
|
{
|
|
1015
1015
|
title: "# OF STUDENTS",
|
|
1016
1016
|
value: props.students.length
|
|
@@ -1043,7 +1043,7 @@ const Dashboard = (props) => {
|
|
|
1043
1043
|
return { value: g.classId, label: g.name };
|
|
1044
1044
|
})
|
|
1045
1045
|
}
|
|
1046
|
-
), /* @__PURE__ */ React.createElement(Stack$
|
|
1046
|
+
), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
|
|
1047
1047
|
Tabs,
|
|
1048
1048
|
{
|
|
1049
1049
|
value: tab,
|
|
@@ -1057,33 +1057,33 @@ const Dashboard = (props) => {
|
|
|
1057
1057
|
onChange: setTab
|
|
1058
1058
|
}
|
|
1059
1059
|
), tab === "impact" && /* @__PURE__ */ React.createElement(
|
|
1060
|
-
Table$
|
|
1060
|
+
Table$f,
|
|
1061
1061
|
{
|
|
1062
1062
|
loading: props.loading,
|
|
1063
1063
|
items: props.impacts
|
|
1064
1064
|
}
|
|
1065
1065
|
), tab === "reflections" && /* @__PURE__ */ React.createElement(
|
|
1066
|
-
Table$
|
|
1066
|
+
Table$g,
|
|
1067
1067
|
{
|
|
1068
1068
|
loading: props.loading,
|
|
1069
1069
|
items: props.reflections
|
|
1070
1070
|
}
|
|
1071
1071
|
), tab === "badges" && /* @__PURE__ */ React.createElement(
|
|
1072
|
-
Table$
|
|
1072
|
+
Table$e,
|
|
1073
1073
|
{
|
|
1074
1074
|
loading: props.loading,
|
|
1075
1075
|
items: props.badges,
|
|
1076
1076
|
onClick: props.onBadgeClick
|
|
1077
1077
|
}
|
|
1078
1078
|
), tab === "lessons" && /* @__PURE__ */ React.createElement(
|
|
1079
|
-
Table$
|
|
1079
|
+
Table$d,
|
|
1080
1080
|
{
|
|
1081
1081
|
loading: props.loading,
|
|
1082
1082
|
items: props.lessons,
|
|
1083
1083
|
onClick: props.onLessonClick
|
|
1084
1084
|
}
|
|
1085
1085
|
), tab === "students" && /* @__PURE__ */ React.createElement(
|
|
1086
|
-
Table$
|
|
1086
|
+
Table$h,
|
|
1087
1087
|
{
|
|
1088
1088
|
loading: props.loading,
|
|
1089
1089
|
items: props.students,
|
|
@@ -1092,8 +1092,8 @@ const Dashboard = (props) => {
|
|
|
1092
1092
|
)))))));
|
|
1093
1093
|
};
|
|
1094
1094
|
|
|
1095
|
-
const SplitButton$
|
|
1096
|
-
return /* @__PURE__ */ React.createElement(Stack$
|
|
1095
|
+
const SplitButton$4 = (props) => {
|
|
1096
|
+
return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
|
|
1097
1097
|
Button,
|
|
1098
1098
|
{
|
|
1099
1099
|
leftIcon: /* @__PURE__ */ React.createElement(IconPlaylistAdd, { size: 14 }),
|
|
@@ -1117,7 +1117,7 @@ const SplitButton$3 = (props) => {
|
|
|
1117
1117
|
));
|
|
1118
1118
|
};
|
|
1119
1119
|
|
|
1120
|
-
const useStyles$
|
|
1120
|
+
const useStyles$o = createStyles((theme) => ({
|
|
1121
1121
|
th: { padding: "0 !important" },
|
|
1122
1122
|
control: {
|
|
1123
1123
|
width: "100%",
|
|
@@ -1128,11 +1128,11 @@ const useStyles$m = createStyles((theme) => ({
|
|
|
1128
1128
|
}
|
|
1129
1129
|
}));
|
|
1130
1130
|
function Th$2({ children, reversed, sorted, onSort }) {
|
|
1131
|
-
const { classes } = useStyles$
|
|
1131
|
+
const { classes } = useStyles$o();
|
|
1132
1132
|
const Icon = sorted ? reversed ? IconChevronUp : IconChevronDown : IconSelector;
|
|
1133
1133
|
return /* @__PURE__ */ React.createElement("th", { className: classes.th }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: onSort, className: classes.control }, /* @__PURE__ */ React.createElement(Group, { position: "apart", noWrap: true, spacing: "xs" }, /* @__PURE__ */ React.createElement(Text, { weight: 500, size: "sm", sx: { whiteSpace: "nowrap" } }, children), /* @__PURE__ */ React.createElement(Center, null, /* @__PURE__ */ React.createElement(Icon, { size: 14, stroke: 1.5 })))));
|
|
1134
1134
|
}
|
|
1135
|
-
function Table$
|
|
1135
|
+
function Table$c(props) {
|
|
1136
1136
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
1137
1137
|
if (props.items.length === 0) {
|
|
1138
1138
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -1162,7 +1162,7 @@ function Table$b(props) {
|
|
|
1162
1162
|
data: [{ value: "student", label: "Student" }, { value: "educator", label: "Educator" }]
|
|
1163
1163
|
}
|
|
1164
1164
|
))), /* @__PURE__ */ React.createElement("td", null, row.badgesEarned), /* @__PURE__ */ React.createElement("td", null, row.lessonsCompleted), /* @__PURE__ */ React.createElement("td", null, row.hasAccount && /* @__PURE__ */ React.createElement(IconCheck, { color: "green" })), /* @__PURE__ */ React.createElement("td", null, row.lastActivity ? relativeTimeFromDates(row.lastActivity) : ""), /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Group, { noWrap: true, spacing: 0, position: "right" }, !row.readonly && !!props.onDelete && /* @__PURE__ */ React.createElement(ActionIcon, { color: "red" }, /* @__PURE__ */ React.createElement(IconTrash, { onClick: () => openDeleteModal(row), size: 16, stroke: 1.5 }))))));
|
|
1165
|
-
return /* @__PURE__ */ React.createElement(ScrollArea, null, /* @__PURE__ */ React.createElement(Table$
|
|
1165
|
+
return /* @__PURE__ */ React.createElement(ScrollArea, null, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: 20, sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement(
|
|
1166
1166
|
Th$2,
|
|
1167
1167
|
{
|
|
1168
1168
|
sorted: sortConfig.key === "givenName",
|
|
@@ -1213,26 +1213,26 @@ function Table$b(props) {
|
|
|
1213
1213
|
), /* @__PURE__ */ React.createElement("th", null), " ")), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
1214
1214
|
}
|
|
1215
1215
|
|
|
1216
|
-
var __defProp$
|
|
1217
|
-
var __defProps$
|
|
1218
|
-
var __getOwnPropDescs$
|
|
1219
|
-
var __getOwnPropSymbols$
|
|
1220
|
-
var __hasOwnProp$
|
|
1221
|
-
var __propIsEnum$
|
|
1222
|
-
var __defNormalProp$
|
|
1223
|
-
var __spreadValues$
|
|
1216
|
+
var __defProp$a = Object.defineProperty;
|
|
1217
|
+
var __defProps$7 = Object.defineProperties;
|
|
1218
|
+
var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
|
|
1219
|
+
var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
|
|
1220
|
+
var __hasOwnProp$a = Object.prototype.hasOwnProperty;
|
|
1221
|
+
var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
|
|
1222
|
+
var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1223
|
+
var __spreadValues$a = (a, b) => {
|
|
1224
1224
|
for (var prop in b || (b = {}))
|
|
1225
|
-
if (__hasOwnProp$
|
|
1226
|
-
__defNormalProp$
|
|
1227
|
-
if (__getOwnPropSymbols$
|
|
1228
|
-
for (var prop of __getOwnPropSymbols$
|
|
1229
|
-
if (__propIsEnum$
|
|
1230
|
-
__defNormalProp$
|
|
1225
|
+
if (__hasOwnProp$a.call(b, prop))
|
|
1226
|
+
__defNormalProp$a(a, prop, b[prop]);
|
|
1227
|
+
if (__getOwnPropSymbols$a)
|
|
1228
|
+
for (var prop of __getOwnPropSymbols$a(b)) {
|
|
1229
|
+
if (__propIsEnum$a.call(b, prop))
|
|
1230
|
+
__defNormalProp$a(a, prop, b[prop]);
|
|
1231
1231
|
}
|
|
1232
1232
|
return a;
|
|
1233
1233
|
};
|
|
1234
|
-
var __spreadProps$
|
|
1235
|
-
const useStyles$
|
|
1234
|
+
var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
|
|
1235
|
+
const useStyles$n = createStyles((theme) => ({
|
|
1236
1236
|
title: {
|
|
1237
1237
|
fontSize: 34,
|
|
1238
1238
|
fontWeight: 900,
|
|
@@ -1265,7 +1265,7 @@ const useStyles$l = createStyles((theme) => ({
|
|
|
1265
1265
|
}
|
|
1266
1266
|
}));
|
|
1267
1267
|
const Class = (props) => {
|
|
1268
|
-
const { classes } = useStyles$
|
|
1268
|
+
const { classes } = useStyles$n();
|
|
1269
1269
|
const form = useForm({
|
|
1270
1270
|
initialValues: {
|
|
1271
1271
|
classId: "",
|
|
@@ -1297,32 +1297,32 @@ const Class = (props) => {
|
|
|
1297
1297
|
padding: "xl",
|
|
1298
1298
|
size: "xl"
|
|
1299
1299
|
},
|
|
1300
|
-
/* @__PURE__ */ React.createElement(Stack$
|
|
1300
|
+
/* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(DropzoneButton$1, __spreadProps$7(__spreadValues$a({}, props), { close: () => setOpened(false) })), /* @__PURE__ */ React.createElement(Divider, { label: "or", labelPosition: "center", my: "md", variant: "dashed" }), /* @__PURE__ */ React.createElement("form", { onSubmit: form.onSubmit(() => {
|
|
1301
1301
|
const values = form.values;
|
|
1302
1302
|
form.reset();
|
|
1303
1303
|
setOpened(false);
|
|
1304
1304
|
props.onCreateMembers && props.onCreateMembers([values]);
|
|
1305
|
-
}) }, /* @__PURE__ */ React.createElement(Stack$
|
|
1305
|
+
}) }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
|
|
1306
1306
|
TextInput,
|
|
1307
|
-
__spreadValues$
|
|
1307
|
+
__spreadValues$a({
|
|
1308
1308
|
withAsterisk: true,
|
|
1309
1309
|
label: "Email",
|
|
1310
1310
|
placeholder: "Email"
|
|
1311
1311
|
}, form.getInputProps("email"))
|
|
1312
1312
|
), /* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
|
|
1313
1313
|
TextInput,
|
|
1314
|
-
__spreadValues$
|
|
1314
|
+
__spreadValues$a({
|
|
1315
1315
|
label: "Given name",
|
|
1316
1316
|
placeholder: "Given name"
|
|
1317
1317
|
}, form.getInputProps("givenName"))
|
|
1318
1318
|
), /* @__PURE__ */ React.createElement(
|
|
1319
1319
|
TextInput,
|
|
1320
|
-
__spreadValues$
|
|
1320
|
+
__spreadValues$a({
|
|
1321
1321
|
label: "Family name",
|
|
1322
1322
|
placeholder: "Family name"
|
|
1323
1323
|
}, form.getInputProps("familyName"))
|
|
1324
1324
|
)), /* @__PURE__ */ React.createElement(Button, { type: "submit", fullWidth: true, mt: "md" }, "Submit"))))
|
|
1325
|
-
), /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
1325
|
+
), /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
|
|
1326
1326
|
Badge$1,
|
|
1327
1327
|
{
|
|
1328
1328
|
variant: "filled",
|
|
@@ -1331,13 +1331,13 @@ const Class = (props) => {
|
|
|
1331
1331
|
},
|
|
1332
1332
|
"Back"
|
|
1333
1333
|
)), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Class"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), /* @__PURE__ */ React.createElement(Grid.Col, { sm: "content" }, !props.loading && /* @__PURE__ */ React.createElement(
|
|
1334
|
-
SplitButton$
|
|
1334
|
+
SplitButton$4,
|
|
1335
1335
|
{
|
|
1336
1336
|
onAddMembersClick: () => setOpened(true),
|
|
1337
1337
|
onCopyClassLinkClick: props.onCopyLinkClick,
|
|
1338
1338
|
onExportDataClick: props.onExportDataClick
|
|
1339
1339
|
}
|
|
1340
|
-
))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$
|
|
1340
|
+
))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
|
|
1341
1341
|
{
|
|
1342
1342
|
title: "# OF STUDENTS",
|
|
1343
1343
|
value: props.members.filter((a) => !a.isAdmin).length
|
|
@@ -1356,7 +1356,7 @@ const Class = (props) => {
|
|
|
1356
1356
|
value: props.numberOfLessonsCompleted
|
|
1357
1357
|
}
|
|
1358
1358
|
] }), /* @__PURE__ */ React.createElement(
|
|
1359
|
-
Table$
|
|
1359
|
+
Table$c,
|
|
1360
1360
|
{
|
|
1361
1361
|
loading: props.loading,
|
|
1362
1362
|
items: props.members,
|
|
@@ -1366,7 +1366,7 @@ const Class = (props) => {
|
|
|
1366
1366
|
))))));
|
|
1367
1367
|
};
|
|
1368
1368
|
const DropzoneButton$1 = (props) => {
|
|
1369
|
-
const { classes, theme } = useStyles$
|
|
1369
|
+
const { classes, theme } = useStyles$n();
|
|
1370
1370
|
const openRef = React.useRef(null);
|
|
1371
1371
|
const [loading, setLoading] = React.useState(false);
|
|
1372
1372
|
const onDrop = React.useCallback((acceptedFiles) => {
|
|
@@ -1412,7 +1412,7 @@ const DropzoneButton$1 = (props) => {
|
|
|
1412
1412
|
} }, "Select file"));
|
|
1413
1413
|
};
|
|
1414
1414
|
|
|
1415
|
-
const useStyles$
|
|
1415
|
+
const useStyles$m = createStyles((theme) => ({
|
|
1416
1416
|
th: { padding: "0 !important" },
|
|
1417
1417
|
control: {
|
|
1418
1418
|
width: "100%",
|
|
@@ -1423,11 +1423,11 @@ const useStyles$k = createStyles((theme) => ({
|
|
|
1423
1423
|
}
|
|
1424
1424
|
}));
|
|
1425
1425
|
function Th$1({ children, reversed, sorted, onSort }) {
|
|
1426
|
-
const { classes } = useStyles$
|
|
1426
|
+
const { classes } = useStyles$m();
|
|
1427
1427
|
const Icon = sorted ? reversed ? IconChevronUp : IconChevronDown : IconSelector;
|
|
1428
1428
|
return /* @__PURE__ */ React.createElement("th", { className: classes.th }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: onSort, className: classes.control }, /* @__PURE__ */ React.createElement(Group, { position: "apart", noWrap: true, spacing: "xs" }, /* @__PURE__ */ React.createElement(Text, { weight: 500, size: "sm", sx: { whiteSpace: "nowrap" } }, children), /* @__PURE__ */ React.createElement(Center, null, /* @__PURE__ */ React.createElement(Icon, { size: 14, stroke: 1.5 })))));
|
|
1429
1429
|
}
|
|
1430
|
-
function Table$
|
|
1430
|
+
function Table$b(props) {
|
|
1431
1431
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
1432
1432
|
if (props.items.length === 0) {
|
|
1433
1433
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -1449,7 +1449,7 @@ function Table$a(props) {
|
|
|
1449
1449
|
onConfirm: () => props.onDeleteClass(group)
|
|
1450
1450
|
});
|
|
1451
1451
|
const rows = sortedItems.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.classId }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(UnstyledButton, { component: Link, to: row.href }, /* @__PURE__ */ React.createElement(Text, { size: 14 }, row.name))), /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Text, { size: 14 }, row.description)), /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Text, { size: 14 }, row.numberOfStudents || 0)), /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Group, { noWrap: true, spacing: 0, position: "right" }, /* @__PURE__ */ React.createElement(ActionIcon, { color: "red" }, /* @__PURE__ */ React.createElement(IconTrash, { onClick: () => openDeleteModal(row), size: 16, stroke: 1.5 }))))));
|
|
1452
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$
|
|
1452
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: 20, sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement(
|
|
1453
1453
|
Th$1,
|
|
1454
1454
|
{
|
|
1455
1455
|
sorted: sortConfig.key === "name",
|
|
@@ -1468,23 +1468,23 @@ function Table$a(props) {
|
|
|
1468
1468
|
), /* @__PURE__ */ React.createElement("th", null))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
1469
1469
|
}
|
|
1470
1470
|
|
|
1471
|
-
var __defProp$
|
|
1472
|
-
var __getOwnPropSymbols$
|
|
1473
|
-
var __hasOwnProp$
|
|
1474
|
-
var __propIsEnum$
|
|
1475
|
-
var __defNormalProp$
|
|
1476
|
-
var __spreadValues$
|
|
1471
|
+
var __defProp$9 = Object.defineProperty;
|
|
1472
|
+
var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
|
|
1473
|
+
var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
|
|
1474
|
+
var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
|
|
1475
|
+
var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1476
|
+
var __spreadValues$9 = (a, b) => {
|
|
1477
1477
|
for (var prop in b || (b = {}))
|
|
1478
|
-
if (__hasOwnProp$
|
|
1479
|
-
__defNormalProp$
|
|
1480
|
-
if (__getOwnPropSymbols$
|
|
1481
|
-
for (var prop of __getOwnPropSymbols$
|
|
1482
|
-
if (__propIsEnum$
|
|
1483
|
-
__defNormalProp$
|
|
1478
|
+
if (__hasOwnProp$9.call(b, prop))
|
|
1479
|
+
__defNormalProp$9(a, prop, b[prop]);
|
|
1480
|
+
if (__getOwnPropSymbols$9)
|
|
1481
|
+
for (var prop of __getOwnPropSymbols$9(b)) {
|
|
1482
|
+
if (__propIsEnum$9.call(b, prop))
|
|
1483
|
+
__defNormalProp$9(a, prop, b[prop]);
|
|
1484
1484
|
}
|
|
1485
1485
|
return a;
|
|
1486
1486
|
};
|
|
1487
|
-
const useStyles$
|
|
1487
|
+
const useStyles$l = createStyles((theme) => ({
|
|
1488
1488
|
title: {
|
|
1489
1489
|
fontSize: 34,
|
|
1490
1490
|
fontWeight: 900,
|
|
@@ -1497,7 +1497,7 @@ const useStyles$j = createStyles((theme) => ({
|
|
|
1497
1497
|
}
|
|
1498
1498
|
}));
|
|
1499
1499
|
const Classes = (props) => {
|
|
1500
|
-
const { classes } = useStyles$
|
|
1500
|
+
const { classes } = useStyles$l();
|
|
1501
1501
|
const form = useForm({
|
|
1502
1502
|
initialValues: {
|
|
1503
1503
|
classId: "",
|
|
@@ -1525,28 +1525,28 @@ const Classes = (props) => {
|
|
|
1525
1525
|
form.reset();
|
|
1526
1526
|
setOpened(false);
|
|
1527
1527
|
props.onCreateClass && props.onCreateClass(values);
|
|
1528
|
-
}) }, /* @__PURE__ */ React.createElement(Stack$
|
|
1528
|
+
}) }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
|
|
1529
1529
|
TextInput,
|
|
1530
|
-
__spreadValues$
|
|
1530
|
+
__spreadValues$9({
|
|
1531
1531
|
withAsterisk: true,
|
|
1532
1532
|
label: "Name",
|
|
1533
1533
|
placeholder: "Class name"
|
|
1534
1534
|
}, form.getInputProps("name"))
|
|
1535
1535
|
), /* @__PURE__ */ React.createElement(
|
|
1536
1536
|
TextInput,
|
|
1537
|
-
__spreadValues$
|
|
1537
|
+
__spreadValues$9({
|
|
1538
1538
|
label: "Description",
|
|
1539
1539
|
placeholder: "A class for my first period English students"
|
|
1540
1540
|
}, form.getInputProps("description"))
|
|
1541
1541
|
)), /* @__PURE__ */ React.createElement(Button, { type: "submit", fullWidth: true, mt: "md" }, "Submit"))
|
|
1542
|
-
), /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
1542
|
+
), /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled", size: "lg" }, "Classes"), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "Organize people into classes"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Create classes, cohorts, or custom subgroups")), /* @__PURE__ */ React.createElement(Grid.Col, { sm: "content" }, !props.loading && /* @__PURE__ */ React.createElement(
|
|
1543
1543
|
Button,
|
|
1544
1544
|
{
|
|
1545
1545
|
onClick: () => setOpened(true),
|
|
1546
1546
|
leftIcon: /* @__PURE__ */ React.createElement(IconPlaylistAdd, { size: 14 })
|
|
1547
1547
|
},
|
|
1548
1548
|
"Create class"
|
|
1549
|
-
))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$
|
|
1549
|
+
))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
|
|
1550
1550
|
{
|
|
1551
1551
|
title: "# OF CLASSES",
|
|
1552
1552
|
value: props.classes.length
|
|
@@ -1559,7 +1559,7 @@ const Classes = (props) => {
|
|
|
1559
1559
|
onChange: props.onAutocompleteChange
|
|
1560
1560
|
}
|
|
1561
1561
|
), /* @__PURE__ */ React.createElement(
|
|
1562
|
-
Table$
|
|
1562
|
+
Table$b,
|
|
1563
1563
|
{
|
|
1564
1564
|
loading: props.loading,
|
|
1565
1565
|
items: props.classes,
|
|
@@ -1568,7 +1568,7 @@ const Classes = (props) => {
|
|
|
1568
1568
|
))))));
|
|
1569
1569
|
};
|
|
1570
1570
|
|
|
1571
|
-
const useStyles$
|
|
1571
|
+
const useStyles$k = createStyles((theme) => ({
|
|
1572
1572
|
title: {
|
|
1573
1573
|
fontSize: 34,
|
|
1574
1574
|
fontWeight: 900,
|
|
@@ -1582,11 +1582,11 @@ const useStyles$i = createStyles((theme) => ({
|
|
|
1582
1582
|
}
|
|
1583
1583
|
}));
|
|
1584
1584
|
const UserInfo = (props) => {
|
|
1585
|
-
const { classes } = useStyles$
|
|
1585
|
+
const { classes } = useStyles$k();
|
|
1586
1586
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Title, { className: classes.title }, props.name), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "xs" }, props.impactStatement));
|
|
1587
1587
|
};
|
|
1588
1588
|
|
|
1589
|
-
function Table$
|
|
1589
|
+
function Table$a(props) {
|
|
1590
1590
|
if (props.items.length === 0) {
|
|
1591
1591
|
return /* @__PURE__ */ React.createElement(
|
|
1592
1592
|
PlaceholderBanner,
|
|
@@ -1622,7 +1622,7 @@ function Table$9(props) {
|
|
|
1622
1622
|
));
|
|
1623
1623
|
}
|
|
1624
1624
|
|
|
1625
|
-
function Table$
|
|
1625
|
+
function Table$9(props) {
|
|
1626
1626
|
if (props.items.length === 0) {
|
|
1627
1627
|
return /* @__PURE__ */ React.createElement(
|
|
1628
1628
|
PlaceholderBanner,
|
|
@@ -1635,10 +1635,10 @@ function Table$8(props) {
|
|
|
1635
1635
|
);
|
|
1636
1636
|
}
|
|
1637
1637
|
const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.questionName }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Text, { component: Link, to: row.href }, row.lessonName)), /* @__PURE__ */ React.createElement("td", null, row.questionName), /* @__PURE__ */ React.createElement("td", null, row.answer.join(","))));
|
|
1638
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$
|
|
1638
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React.createElement("th", null, "Question"), /* @__PURE__ */ React.createElement("th", null, "Answer"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
1639
1639
|
}
|
|
1640
1640
|
|
|
1641
|
-
function Table$
|
|
1641
|
+
function Table$8(props) {
|
|
1642
1642
|
if (props.items.length === 0) {
|
|
1643
1643
|
return /* @__PURE__ */ React.createElement(
|
|
1644
1644
|
PlaceholderBanner,
|
|
@@ -1651,14 +1651,14 @@ function Table$7(props) {
|
|
|
1651
1651
|
);
|
|
1652
1652
|
}
|
|
1653
1653
|
const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.lessonName }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Text, { component: Link, to: row.href }, row.lessonName)), /* @__PURE__ */ React.createElement("td", null, row.reflection), /* @__PURE__ */ React.createElement("td", null, row.rating.toLocaleString())));
|
|
1654
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$
|
|
1654
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React.createElement("th", null, "Reflection"), /* @__PURE__ */ React.createElement("th", null, "Rating"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
1655
1655
|
}
|
|
1656
1656
|
|
|
1657
1657
|
const Student = (props) => {
|
|
1658
1658
|
const [tab, setTab] = useState("badges");
|
|
1659
1659
|
const numberOfBadgesCompleted = props.badges.length > 0 ? props.badges.filter((b) => b.isComplete).length : 0;
|
|
1660
1660
|
const TEMPORARY_numberOfLessonsCompleted = props.lessons.filter((l) => l.isComplete).length;
|
|
1661
|
-
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
1661
|
+
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, { gutter: "md" }, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
|
|
1662
1662
|
Badge$1,
|
|
1663
1663
|
{
|
|
1664
1664
|
variant: "filled",
|
|
@@ -1673,7 +1673,7 @@ const Student = (props) => {
|
|
|
1673
1673
|
name: props.name,
|
|
1674
1674
|
impactStatement: props.impactStatement
|
|
1675
1675
|
}
|
|
1676
|
-
))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$
|
|
1676
|
+
))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "lg" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
|
|
1677
1677
|
{
|
|
1678
1678
|
title: "PROBLEMS SOLVED",
|
|
1679
1679
|
value: props.numberOfProblemsSolved
|
|
@@ -1688,7 +1688,7 @@ const Student = (props) => {
|
|
|
1688
1688
|
value: numberOfBadgesCompleted,
|
|
1689
1689
|
unit: ""
|
|
1690
1690
|
}
|
|
1691
|
-
] }), /* @__PURE__ */ React.createElement(Stack$
|
|
1691
|
+
] }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
|
|
1692
1692
|
Tabs,
|
|
1693
1693
|
{
|
|
1694
1694
|
value: tab,
|
|
@@ -1700,19 +1700,19 @@ const Student = (props) => {
|
|
|
1700
1700
|
onChange: setTab
|
|
1701
1701
|
}
|
|
1702
1702
|
), tab === "badges" && /* @__PURE__ */ React.createElement(
|
|
1703
|
-
Table$
|
|
1703
|
+
Table$a,
|
|
1704
1704
|
{
|
|
1705
1705
|
loading: props.loading,
|
|
1706
1706
|
items: props.badges
|
|
1707
1707
|
}
|
|
1708
1708
|
), tab === "answers" && /* @__PURE__ */ React.createElement(
|
|
1709
|
-
Table$
|
|
1709
|
+
Table$9,
|
|
1710
1710
|
{
|
|
1711
1711
|
loading: props.loading,
|
|
1712
1712
|
items: props.answers
|
|
1713
1713
|
}
|
|
1714
1714
|
), tab === "reflections" && /* @__PURE__ */ React.createElement(
|
|
1715
|
-
Table$
|
|
1715
|
+
Table$8,
|
|
1716
1716
|
{
|
|
1717
1717
|
loading: props.loading,
|
|
1718
1718
|
items: props.reflections
|
|
@@ -1720,7 +1720,7 @@ const Student = (props) => {
|
|
|
1720
1720
|
))))));
|
|
1721
1721
|
};
|
|
1722
1722
|
|
|
1723
|
-
const useStyles$
|
|
1723
|
+
const useStyles$j = createStyles((theme, props) => {
|
|
1724
1724
|
const from = props.from || "blue";
|
|
1725
1725
|
const to = props.to || "green";
|
|
1726
1726
|
return {
|
|
@@ -1748,7 +1748,7 @@ const useStyles$h = createStyles((theme, props) => {
|
|
|
1748
1748
|
};
|
|
1749
1749
|
});
|
|
1750
1750
|
function CardGradient(props) {
|
|
1751
|
-
const { classes } = useStyles$
|
|
1751
|
+
const { classes } = useStyles$j(props);
|
|
1752
1752
|
const from = props.from || "blue";
|
|
1753
1753
|
const to = props.to || "green";
|
|
1754
1754
|
const icon = props.icon || /* @__PURE__ */ React.createElement(IconColorSwatch, { size: 28, stroke: 1.5 });
|
|
@@ -1764,35 +1764,35 @@ function CardGradient(props) {
|
|
|
1764
1764
|
), /* @__PURE__ */ React.createElement(Text, { size: "xl", weight: 500, mt: "md" }, props.title), /* @__PURE__ */ React.createElement(Text, { size: "sm", mt: "sm", color: "dimmed" }, props.description));
|
|
1765
1765
|
}
|
|
1766
1766
|
|
|
1767
|
-
var __defProp$
|
|
1768
|
-
var __getOwnPropSymbols$
|
|
1769
|
-
var __hasOwnProp$
|
|
1770
|
-
var __propIsEnum$
|
|
1771
|
-
var __defNormalProp$
|
|
1772
|
-
var __spreadValues$
|
|
1767
|
+
var __defProp$8 = Object.defineProperty;
|
|
1768
|
+
var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
|
|
1769
|
+
var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
|
|
1770
|
+
var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
|
|
1771
|
+
var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1772
|
+
var __spreadValues$8 = (a, b) => {
|
|
1773
1773
|
for (var prop in b || (b = {}))
|
|
1774
|
-
if (__hasOwnProp$
|
|
1775
|
-
__defNormalProp$
|
|
1776
|
-
if (__getOwnPropSymbols$
|
|
1777
|
-
for (var prop of __getOwnPropSymbols$
|
|
1778
|
-
if (__propIsEnum$
|
|
1779
|
-
__defNormalProp$
|
|
1774
|
+
if (__hasOwnProp$8.call(b, prop))
|
|
1775
|
+
__defNormalProp$8(a, prop, b[prop]);
|
|
1776
|
+
if (__getOwnPropSymbols$8)
|
|
1777
|
+
for (var prop of __getOwnPropSymbols$8(b)) {
|
|
1778
|
+
if (__propIsEnum$8.call(b, prop))
|
|
1779
|
+
__defNormalProp$8(a, prop, b[prop]);
|
|
1780
1780
|
}
|
|
1781
1781
|
return a;
|
|
1782
1782
|
};
|
|
1783
1783
|
var __objRest$1 = (source, exclude) => {
|
|
1784
1784
|
var target = {};
|
|
1785
1785
|
for (var prop in source)
|
|
1786
|
-
if (__hasOwnProp$
|
|
1786
|
+
if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
1787
1787
|
target[prop] = source[prop];
|
|
1788
|
-
if (source != null && __getOwnPropSymbols$
|
|
1789
|
-
for (var prop of __getOwnPropSymbols$
|
|
1790
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum$
|
|
1788
|
+
if (source != null && __getOwnPropSymbols$8)
|
|
1789
|
+
for (var prop of __getOwnPropSymbols$8(source)) {
|
|
1790
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop))
|
|
1791
1791
|
target[prop] = source[prop];
|
|
1792
1792
|
}
|
|
1793
1793
|
return target;
|
|
1794
1794
|
};
|
|
1795
|
-
const useStyles$
|
|
1795
|
+
const useStyles$i = createStyles((theme) => ({
|
|
1796
1796
|
card: {
|
|
1797
1797
|
height: 240,
|
|
1798
1798
|
backgroundSize: "cover",
|
|
@@ -1837,7 +1837,7 @@ const TenantBanner = (_a) => {
|
|
|
1837
1837
|
"className",
|
|
1838
1838
|
"code"
|
|
1839
1839
|
]);
|
|
1840
|
-
const { classes, cx, theme } = useStyles$
|
|
1840
|
+
const { classes, cx, theme } = useStyles$i();
|
|
1841
1841
|
const handleCopy = async () => {
|
|
1842
1842
|
if (!code)
|
|
1843
1843
|
return;
|
|
@@ -1854,9 +1854,9 @@ const TenantBanner = (_a) => {
|
|
|
1854
1854
|
};
|
|
1855
1855
|
return /* @__PURE__ */ React.createElement(
|
|
1856
1856
|
Card,
|
|
1857
|
-
__spreadValues$
|
|
1857
|
+
__spreadValues$8({
|
|
1858
1858
|
radius: "md",
|
|
1859
|
-
style: __spreadValues$
|
|
1859
|
+
style: __spreadValues$8({ backgroundImage: `url(${image})` }, style),
|
|
1860
1860
|
className: cx(classes.card, className)
|
|
1861
1861
|
}, others),
|
|
1862
1862
|
/* @__PURE__ */ React.createElement(
|
|
@@ -1885,7 +1885,7 @@ const TenantBanner = (_a) => {
|
|
|
1885
1885
|
};
|
|
1886
1886
|
|
|
1887
1887
|
const Home = (props) => {
|
|
1888
|
-
return /* @__PURE__ */ React.createElement(Container, { size: "lg" }, /* @__PURE__ */ React.createElement(Stack$
|
|
1888
|
+
return /* @__PURE__ */ React.createElement(Container, { size: "lg" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "lg" }, /* @__PURE__ */ React.createElement(Grid, { gutter: "md" }, /* @__PURE__ */ React.createElement(Grid.Col, { md: 6 }, /* @__PURE__ */ React.createElement(
|
|
1889
1889
|
UserInfo,
|
|
1890
1890
|
{
|
|
1891
1891
|
variant: "compact",
|
|
@@ -1945,7 +1945,7 @@ const Home = (props) => {
|
|
|
1945
1945
|
)))));
|
|
1946
1946
|
};
|
|
1947
1947
|
|
|
1948
|
-
function Table$
|
|
1948
|
+
function Table$7(props) {
|
|
1949
1949
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
1950
1950
|
if (props.items.length === 0) {
|
|
1951
1951
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -1977,7 +1977,7 @@ function Table$6(props) {
|
|
|
1977
1977
|
));
|
|
1978
1978
|
}
|
|
1979
1979
|
|
|
1980
|
-
const useStyles$
|
|
1980
|
+
const useStyles$h = createStyles((theme) => ({
|
|
1981
1981
|
button: {
|
|
1982
1982
|
borderTopRightRadius: 0,
|
|
1983
1983
|
borderBottomRightRadius: 0,
|
|
@@ -1991,10 +1991,10 @@ const useStyles$f = createStyles((theme) => ({
|
|
|
1991
1991
|
borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
|
|
1992
1992
|
}
|
|
1993
1993
|
}));
|
|
1994
|
-
const SplitButton$
|
|
1995
|
-
const { classes, theme } = useStyles$
|
|
1994
|
+
const SplitButton$3 = (props) => {
|
|
1995
|
+
const { classes, theme } = useStyles$h();
|
|
1996
1996
|
theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
1997
|
-
return /* @__PURE__ */ React.createElement(Stack$
|
|
1997
|
+
return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
|
|
1998
1998
|
Button,
|
|
1999
1999
|
{
|
|
2000
2000
|
component: Link,
|
|
@@ -2021,36 +2021,36 @@ const SplitButton$2 = (props) => {
|
|
|
2021
2021
|
));
|
|
2022
2022
|
};
|
|
2023
2023
|
|
|
2024
|
-
function Stack$
|
|
2024
|
+
function Stack$3(props) {
|
|
2025
2025
|
if (props.items.length === 0) {
|
|
2026
2026
|
return null;
|
|
2027
2027
|
}
|
|
2028
|
-
const rows = props.items.map((row) => /* @__PURE__ */ React.createElement(Stack$
|
|
2029
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(UnstyledButton, { component: Link, to: props.href }, /* @__PURE__ */ React.createElement(Stack$
|
|
2028
|
+
const rows = props.items.map((row) => /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0, key: row.questionName }, /* @__PURE__ */ React.createElement(Title, { color: "dark.4", size: "lg" }, row.questionName), /* @__PURE__ */ React.createElement(Text, null, row.answer.join(",") || "No answer.")));
|
|
2029
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(UnstyledButton, { component: Link, to: props.href }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 24, sx: { padding: 20, minWidth: 700 } }, rows)));
|
|
2030
2030
|
}
|
|
2031
2031
|
|
|
2032
|
-
var __defProp$
|
|
2033
|
-
var __defProps$
|
|
2034
|
-
var __getOwnPropDescs$
|
|
2035
|
-
var __getOwnPropSymbols$
|
|
2036
|
-
var __hasOwnProp$
|
|
2037
|
-
var __propIsEnum$
|
|
2038
|
-
var __defNormalProp$
|
|
2039
|
-
var __spreadValues$
|
|
2032
|
+
var __defProp$7 = Object.defineProperty;
|
|
2033
|
+
var __defProps$6 = Object.defineProperties;
|
|
2034
|
+
var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
|
|
2035
|
+
var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
|
|
2036
|
+
var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
|
|
2037
|
+
var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
|
|
2038
|
+
var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2039
|
+
var __spreadValues$7 = (a, b) => {
|
|
2040
2040
|
for (var prop in b || (b = {}))
|
|
2041
|
-
if (__hasOwnProp$
|
|
2042
|
-
__defNormalProp$
|
|
2043
|
-
if (__getOwnPropSymbols$
|
|
2044
|
-
for (var prop of __getOwnPropSymbols$
|
|
2045
|
-
if (__propIsEnum$
|
|
2046
|
-
__defNormalProp$
|
|
2041
|
+
if (__hasOwnProp$7.call(b, prop))
|
|
2042
|
+
__defNormalProp$7(a, prop, b[prop]);
|
|
2043
|
+
if (__getOwnPropSymbols$7)
|
|
2044
|
+
for (var prop of __getOwnPropSymbols$7(b)) {
|
|
2045
|
+
if (__propIsEnum$7.call(b, prop))
|
|
2046
|
+
__defNormalProp$7(a, prop, b[prop]);
|
|
2047
2047
|
}
|
|
2048
2048
|
return a;
|
|
2049
2049
|
};
|
|
2050
|
-
var __spreadProps$
|
|
2051
|
-
function Table$
|
|
2050
|
+
var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
|
|
2051
|
+
function Table$6(props) {
|
|
2052
2052
|
const preparedItems = React.useMemo(() => {
|
|
2053
|
-
return props.items.map((item) => __spreadProps$
|
|
2053
|
+
return props.items.map((item) => __spreadProps$6(__spreadValues$7({}, item), {
|
|
2054
2054
|
status: item.isComplete ? 2 : item.isStarted ? 1 : 0
|
|
2055
2055
|
}));
|
|
2056
2056
|
}, [props.items]);
|
|
@@ -2096,13 +2096,13 @@ function Table$5(props) {
|
|
|
2096
2096
|
render: (row) => /* @__PURE__ */ React.createElement(React.Fragment, null, !!row.isComplete && /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled" }, "Complete"), !row.isComplete && !row.isStarted && /* @__PURE__ */ React.createElement(Badge$1, { color: "red", variant: "filled" }, "Not started"), !row.isComplete && !!row.isStarted && /* @__PURE__ */ React.createElement(Badge$1, { color: "violet", variant: "filled" }, "In progress"))
|
|
2097
2097
|
}],
|
|
2098
2098
|
rowExpansion: {
|
|
2099
|
-
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$
|
|
2099
|
+
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$3, { href: record.href, items: record.answers })
|
|
2100
2100
|
}
|
|
2101
2101
|
}
|
|
2102
2102
|
));
|
|
2103
2103
|
}
|
|
2104
2104
|
|
|
2105
|
-
function Stack$
|
|
2105
|
+
function Stack$2(props) {
|
|
2106
2106
|
const primaryAxis = React.useMemo(
|
|
2107
2107
|
() => ({
|
|
2108
2108
|
position: "left",
|
|
@@ -2142,7 +2142,7 @@ function Stack$1(props) {
|
|
|
2142
2142
|
labelMap[r] = labelMap[r] ? labelMap[r] + 1 : 1;
|
|
2143
2143
|
}
|
|
2144
2144
|
}));
|
|
2145
|
-
return /* @__PURE__ */ React.createElement(Card, { key: row.question, withBorder: true, p: "xl", radius: "md" }, /* @__PURE__ */ React.createElement(Stack$
|
|
2145
|
+
return /* @__PURE__ */ React.createElement(Card, { key: row.question, withBorder: true, p: "xl", radius: "md" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 4 }, /* @__PURE__ */ React.createElement(Title, { size: "lg" }, row.question), /* @__PURE__ */ React.createElement(Text, { size: "sm" }, row.answers.length, " answers"), /* @__PURE__ */ React.createElement("div", { style: { background: "white", height: "300px", width: "100%", position: "relative" } }, /* @__PURE__ */ React.createElement(
|
|
2146
2146
|
Chart,
|
|
2147
2147
|
{
|
|
2148
2148
|
options: {
|
|
@@ -2161,16 +2161,16 @@ function Stack$1(props) {
|
|
|
2161
2161
|
}
|
|
2162
2162
|
))));
|
|
2163
2163
|
}
|
|
2164
|
-
return /* @__PURE__ */ React.createElement(Card, { key: row.question, withBorder: true, p: "xl", radius: "md" }, /* @__PURE__ */ React.createElement(Stack$
|
|
2164
|
+
return /* @__PURE__ */ React.createElement(Card, { key: row.question, withBorder: true, p: "xl", radius: "md" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 4 }, /* @__PURE__ */ React.createElement(Title, { size: "lg" }, row.question), /* @__PURE__ */ React.createElement(Text, { size: "sm" }, row.answers.length, " answers"), /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 4 }, row.answers.map((a) => {
|
|
2165
2165
|
const answerText = a.join("\n");
|
|
2166
2166
|
return /* @__PURE__ */ React.createElement(Card, { key: answerText, p: 5, radius: 0, bg: "gray.0" }, /* @__PURE__ */ React.createElement(Text, null, answerText));
|
|
2167
2167
|
})))));
|
|
2168
2168
|
});
|
|
2169
|
-
return /* @__PURE__ */ React.createElement(Stack$
|
|
2169
|
+
return /* @__PURE__ */ React.createElement(Stack$5, { py: 4, spacing: 10, sx: { minWidth: 700 } }, rows);
|
|
2170
2170
|
}
|
|
2171
2171
|
const truncateWithEllipses = (text, max) => text.substr(0, max - 1) + (text.length > max ? "…" : "");
|
|
2172
2172
|
|
|
2173
|
-
const useStyles$
|
|
2173
|
+
const useStyles$g = createStyles((theme) => ({
|
|
2174
2174
|
title: {
|
|
2175
2175
|
fontSize: 34,
|
|
2176
2176
|
fontWeight: 900,
|
|
@@ -2183,7 +2183,7 @@ const useStyles$e = createStyles((theme) => ({
|
|
|
2183
2183
|
}
|
|
2184
2184
|
}));
|
|
2185
2185
|
const Lesson = (props) => {
|
|
2186
|
-
const { classes } = useStyles$
|
|
2186
|
+
const { classes } = useStyles$g();
|
|
2187
2187
|
const [tab, setTab] = useState("question");
|
|
2188
2188
|
const numberOfStudents = props.students.length;
|
|
2189
2189
|
const numberOfLessons = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
|
|
@@ -2225,7 +2225,7 @@ const Lesson = (props) => {
|
|
|
2225
2225
|
{ label: "By student", value: "students" },
|
|
2226
2226
|
{ label: "By reflection", value: "reflections" }
|
|
2227
2227
|
];
|
|
2228
|
-
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
2228
|
+
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
|
|
2229
2229
|
Badge$1,
|
|
2230
2230
|
{
|
|
2231
2231
|
variant: "filled",
|
|
@@ -2233,15 +2233,15 @@ const Lesson = (props) => {
|
|
|
2233
2233
|
size: "lg"
|
|
2234
2234
|
},
|
|
2235
2235
|
"Back"
|
|
2236
|
-
)), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$
|
|
2237
|
-
SplitButton$
|
|
2236
|
+
)), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Lesson"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), /* @__PURE__ */ React.createElement(Stack$5, { ml: "auto" }, /* @__PURE__ */ React.createElement(
|
|
2237
|
+
SplitButton$3,
|
|
2238
2238
|
{
|
|
2239
2239
|
href: props.href,
|
|
2240
2240
|
noExport: props.trial,
|
|
2241
2241
|
onCopyLinkClick: props.onCopyLinkClick,
|
|
2242
2242
|
onExportDataClick: props.onExportDataClick
|
|
2243
2243
|
}
|
|
2244
|
-
))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$
|
|
2244
|
+
))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
|
|
2245
2245
|
StatsGroup,
|
|
2246
2246
|
{
|
|
2247
2247
|
data: [
|
|
@@ -2267,7 +2267,7 @@ const Lesson = (props) => {
|
|
|
2267
2267
|
return { value: g.classId, label: g.name };
|
|
2268
2268
|
})
|
|
2269
2269
|
}
|
|
2270
|
-
), /* @__PURE__ */ React.createElement(Stack$
|
|
2270
|
+
), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
|
|
2271
2271
|
Tabs,
|
|
2272
2272
|
{
|
|
2273
2273
|
value: tab,
|
|
@@ -2275,19 +2275,19 @@ const Lesson = (props) => {
|
|
|
2275
2275
|
onChange: setTab
|
|
2276
2276
|
}
|
|
2277
2277
|
), tab === "question" && /* @__PURE__ */ React.createElement(
|
|
2278
|
-
Stack$
|
|
2278
|
+
Stack$2,
|
|
2279
2279
|
{
|
|
2280
2280
|
loading: props.loading,
|
|
2281
2281
|
items: props.questions
|
|
2282
2282
|
}
|
|
2283
2283
|
), tab === "reflections" && /* @__PURE__ */ React.createElement(
|
|
2284
|
-
Table$
|
|
2284
|
+
Table$7,
|
|
2285
2285
|
{
|
|
2286
2286
|
loading: props.loading,
|
|
2287
2287
|
items: props.reflections
|
|
2288
2288
|
}
|
|
2289
2289
|
), tab === "students" && /* @__PURE__ */ React.createElement(
|
|
2290
|
-
Table$
|
|
2290
|
+
Table$6,
|
|
2291
2291
|
{
|
|
2292
2292
|
loading: props.loading,
|
|
2293
2293
|
items: props.students
|
|
@@ -2295,7 +2295,7 @@ const Lesson = (props) => {
|
|
|
2295
2295
|
)))))));
|
|
2296
2296
|
};
|
|
2297
2297
|
|
|
2298
|
-
function Table$
|
|
2298
|
+
function Table$5(props) {
|
|
2299
2299
|
if (props.items.length === 0) {
|
|
2300
2300
|
return /* @__PURE__ */ React.createElement(
|
|
2301
2301
|
PlaceholderBanner,
|
|
@@ -2324,10 +2324,10 @@ function Table$4(props) {
|
|
|
2324
2324
|
},
|
|
2325
2325
|
/* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Text, { size: "sm", weight: 500 }, row.name), /* @__PURE__ */ React.createElement(Text, { size: "xs", color: "dimmed" }, row.description)))
|
|
2326
2326
|
))));
|
|
2327
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$
|
|
2327
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { horizontalSpacing: 0, verticalSpacing: 0, sx: { minWidth: 700 } }, /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
2328
2328
|
}
|
|
2329
2329
|
|
|
2330
|
-
const useStyles$
|
|
2330
|
+
const useStyles$f = createStyles((theme) => ({
|
|
2331
2331
|
title: {
|
|
2332
2332
|
fontSize: 34,
|
|
2333
2333
|
fontWeight: 900,
|
|
@@ -2340,8 +2340,8 @@ const useStyles$d = createStyles((theme) => ({
|
|
|
2340
2340
|
}
|
|
2341
2341
|
}));
|
|
2342
2342
|
const Lessons = (props) => {
|
|
2343
|
-
const { classes } = useStyles$
|
|
2344
|
-
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
2343
|
+
const { classes } = useStyles$f();
|
|
2344
|
+
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled", size: "lg" }, "Lessons"), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "Lessons"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Bite-sized activities and learning experiences accelerating students achievement"))), /* @__PURE__ */ React.createElement(
|
|
2345
2345
|
Autocomplete,
|
|
2346
2346
|
{
|
|
2347
2347
|
placeholder: "Search for a lesson that fits your needs",
|
|
@@ -2349,7 +2349,7 @@ const Lessons = (props) => {
|
|
|
2349
2349
|
onChange: props.onAutocompleteChange
|
|
2350
2350
|
}
|
|
2351
2351
|
), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(
|
|
2352
|
-
Table$
|
|
2352
|
+
Table$5,
|
|
2353
2353
|
{
|
|
2354
2354
|
loading: props.loading,
|
|
2355
2355
|
items: props.lessons
|
|
@@ -2357,7 +2357,7 @@ const Lessons = (props) => {
|
|
|
2357
2357
|
))));
|
|
2358
2358
|
};
|
|
2359
2359
|
|
|
2360
|
-
const useStyles$
|
|
2360
|
+
const useStyles$e = createStyles((theme) => ({
|
|
2361
2361
|
title: {
|
|
2362
2362
|
fontSize: 22,
|
|
2363
2363
|
fontWeight: 900,
|
|
@@ -2376,7 +2376,7 @@ const useStyles$c = createStyles((theme) => ({
|
|
|
2376
2376
|
}
|
|
2377
2377
|
}));
|
|
2378
2378
|
function AccessCode(props) {
|
|
2379
|
-
const { classes } = useStyles$
|
|
2379
|
+
const { classes } = useStyles$e();
|
|
2380
2380
|
return /* @__PURE__ */ React.createElement(Container, { mx: "0", px: "0", size: 460, my: 30 }, /* @__PURE__ */ React.createElement(Title, { className: classes.title }, "Access code"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", size: "sm" }, "Grant access to join your organization"), /* @__PURE__ */ React.createElement(Paper, { withBorder: true, shadow: "md", p: 30, radius: "md", mt: "xl" }, /* @__PURE__ */ React.createElement(TextInput, { value: props.value, readOnly: true }), /* @__PURE__ */ React.createElement(Group, { position: "apart", mt: "lg", className: classes.controls }, /* @__PURE__ */ React.createElement(
|
|
2381
2381
|
Anchor,
|
|
2382
2382
|
{
|
|
@@ -2404,7 +2404,7 @@ const monthNames = [
|
|
|
2404
2404
|
"November",
|
|
2405
2405
|
"December"
|
|
2406
2406
|
];
|
|
2407
|
-
const useStyles$
|
|
2407
|
+
const useStyles$d = createStyles((theme) => ({
|
|
2408
2408
|
title: {
|
|
2409
2409
|
fontSize: 34,
|
|
2410
2410
|
fontWeight: 900,
|
|
@@ -2434,8 +2434,8 @@ const useStyles$b = createStyles((theme) => ({
|
|
|
2434
2434
|
}
|
|
2435
2435
|
}));
|
|
2436
2436
|
const Organization = (props) => {
|
|
2437
|
-
const { classes } = useStyles$
|
|
2438
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
2437
|
+
const { classes } = useStyles$d();
|
|
2438
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
|
|
2439
2439
|
Badge$1,
|
|
2440
2440
|
{
|
|
2441
2441
|
variant: "filled",
|
|
@@ -2443,7 +2443,7 @@ const Organization = (props) => {
|
|
|
2443
2443
|
size: "lg"
|
|
2444
2444
|
},
|
|
2445
2445
|
"Back"
|
|
2446
|
-
)), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Overview"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description"))), /* @__PURE__ */ React.createElement(AccessCode, { value: props.accessCode, onCopyCode: props.onCopyAccessCode, peopleLink: props.peopleLink }), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$
|
|
2446
|
+
)), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Overview"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description"))), /* @__PURE__ */ React.createElement(AccessCode, { value: props.accessCode, onCopyCode: props.onCopyAccessCode, peopleLink: props.peopleLink }), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
|
|
2447
2447
|
{
|
|
2448
2448
|
title: "# OF STUDENTS",
|
|
2449
2449
|
value: props.numberOfStudents || 0
|
|
@@ -2460,7 +2460,7 @@ const Organization = (props) => {
|
|
|
2460
2460
|
] }))))));
|
|
2461
2461
|
};
|
|
2462
2462
|
|
|
2463
|
-
const useStyles$
|
|
2463
|
+
const useStyles$c = createStyles((theme) => ({
|
|
2464
2464
|
button: {
|
|
2465
2465
|
borderTopRightRadius: 0,
|
|
2466
2466
|
borderBottomRightRadius: 0,
|
|
@@ -2474,8 +2474,8 @@ const useStyles$a = createStyles((theme) => ({
|
|
|
2474
2474
|
borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
|
|
2475
2475
|
}
|
|
2476
2476
|
}));
|
|
2477
|
-
const SplitButton$
|
|
2478
|
-
const { classes, theme } = useStyles$
|
|
2477
|
+
const SplitButton$2 = (props) => {
|
|
2478
|
+
const { classes, theme } = useStyles$c();
|
|
2479
2479
|
const menuIconColor = theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
2480
2480
|
const hasMenu = !!props.withOrganizationLink;
|
|
2481
2481
|
return /* @__PURE__ */ React.createElement(Group, { noWrap: true, spacing: 0 }, /* @__PURE__ */ React.createElement(
|
|
@@ -2505,7 +2505,7 @@ const SplitButton$1 = (props) => {
|
|
|
2505
2505
|
))));
|
|
2506
2506
|
};
|
|
2507
2507
|
|
|
2508
|
-
function Table$
|
|
2508
|
+
function Table$4(props) {
|
|
2509
2509
|
if (props.items.length === 0) {
|
|
2510
2510
|
return /* @__PURE__ */ React.createElement(
|
|
2511
2511
|
PlaceholderBanner,
|
|
@@ -2534,29 +2534,29 @@ function Table$3(props) {
|
|
|
2534
2534
|
data: [{ value: "student", label: "Student" }, { value: "educator", label: "Educator" }, { value: "admin", label: "Admin" }]
|
|
2535
2535
|
}
|
|
2536
2536
|
))), /* @__PURE__ */ React.createElement("td", null, row.hasAccount && /* @__PURE__ */ React.createElement(IconCheck, { color: "green" })), /* @__PURE__ */ React.createElement("td", null, row.numberOfClasses), /* @__PURE__ */ React.createElement("td", null, row.lastActivity ? relativeTimeFromDates(row.lastActivity) : ""), /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Group, { noWrap: true, spacing: 0, position: "right" }, !row.readonly && !!props.onDelete && /* @__PURE__ */ React.createElement(ActionIcon, { color: "red" }, /* @__PURE__ */ React.createElement(IconTrash, { onClick: () => openDeleteModal(row), size: 16, stroke: 1.5 }))))));
|
|
2537
|
-
return /* @__PURE__ */ React.createElement(ScrollArea, null, /* @__PURE__ */ React.createElement(Table$
|
|
2537
|
+
return /* @__PURE__ */ React.createElement(ScrollArea, null, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: 20, sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Name"), /* @__PURE__ */ React.createElement("th", null, "Role"), /* @__PURE__ */ React.createElement("th", null, "Account Created?"), /* @__PURE__ */ React.createElement("th", null, "# of Classes"), /* @__PURE__ */ React.createElement("th", null, "Last Active"), /* @__PURE__ */ React.createElement("th", null))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
2538
2538
|
}
|
|
2539
2539
|
|
|
2540
|
-
var __defProp$
|
|
2541
|
-
var __defProps$
|
|
2542
|
-
var __getOwnPropDescs$
|
|
2543
|
-
var __getOwnPropSymbols$
|
|
2544
|
-
var __hasOwnProp$
|
|
2545
|
-
var __propIsEnum$
|
|
2546
|
-
var __defNormalProp$
|
|
2547
|
-
var __spreadValues$
|
|
2540
|
+
var __defProp$6 = Object.defineProperty;
|
|
2541
|
+
var __defProps$5 = Object.defineProperties;
|
|
2542
|
+
var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
|
|
2543
|
+
var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
|
|
2544
|
+
var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
|
|
2545
|
+
var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
|
|
2546
|
+
var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2547
|
+
var __spreadValues$6 = (a, b) => {
|
|
2548
2548
|
for (var prop in b || (b = {}))
|
|
2549
|
-
if (__hasOwnProp$
|
|
2550
|
-
__defNormalProp$
|
|
2551
|
-
if (__getOwnPropSymbols$
|
|
2552
|
-
for (var prop of __getOwnPropSymbols$
|
|
2553
|
-
if (__propIsEnum$
|
|
2554
|
-
__defNormalProp$
|
|
2549
|
+
if (__hasOwnProp$6.call(b, prop))
|
|
2550
|
+
__defNormalProp$6(a, prop, b[prop]);
|
|
2551
|
+
if (__getOwnPropSymbols$6)
|
|
2552
|
+
for (var prop of __getOwnPropSymbols$6(b)) {
|
|
2553
|
+
if (__propIsEnum$6.call(b, prop))
|
|
2554
|
+
__defNormalProp$6(a, prop, b[prop]);
|
|
2555
2555
|
}
|
|
2556
2556
|
return a;
|
|
2557
2557
|
};
|
|
2558
|
-
var __spreadProps$
|
|
2559
|
-
const useStyles$
|
|
2558
|
+
var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
|
|
2559
|
+
const useStyles$b = createStyles((theme) => ({
|
|
2560
2560
|
title: {
|
|
2561
2561
|
fontSize: 34,
|
|
2562
2562
|
fontWeight: 900,
|
|
@@ -2586,7 +2586,7 @@ const useStyles$9 = createStyles((theme) => ({
|
|
|
2586
2586
|
}
|
|
2587
2587
|
}));
|
|
2588
2588
|
const People = (props) => {
|
|
2589
|
-
const { classes } = useStyles$
|
|
2589
|
+
const { classes } = useStyles$b();
|
|
2590
2590
|
const form = useForm({
|
|
2591
2591
|
initialValues: {
|
|
2592
2592
|
userId: "",
|
|
@@ -2617,32 +2617,32 @@ const People = (props) => {
|
|
|
2617
2617
|
padding: "xl",
|
|
2618
2618
|
size: "xl"
|
|
2619
2619
|
},
|
|
2620
|
-
/* @__PURE__ */ React.createElement(Stack$
|
|
2620
|
+
/* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(DropzoneButton, __spreadProps$5(__spreadValues$6({}, props), { close: () => setOpened(false) })), /* @__PURE__ */ React.createElement(Divider, { label: "or", labelPosition: "center", my: "md", variant: "dashed" }), /* @__PURE__ */ React.createElement("form", { onSubmit: form.onSubmit(() => {
|
|
2621
2621
|
const values = form.values;
|
|
2622
2622
|
form.reset();
|
|
2623
2623
|
setOpened(false);
|
|
2624
2624
|
props.onCreateUsers && props.onCreateUsers([values]);
|
|
2625
|
-
}) }, /* @__PURE__ */ React.createElement(Stack$
|
|
2625
|
+
}) }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
|
|
2626
2626
|
TextInput,
|
|
2627
|
-
__spreadValues$
|
|
2627
|
+
__spreadValues$6({
|
|
2628
2628
|
withAsterisk: true,
|
|
2629
2629
|
label: "Email",
|
|
2630
2630
|
placeholder: "Email"
|
|
2631
2631
|
}, form.getInputProps("email"))
|
|
2632
2632
|
), /* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
|
|
2633
2633
|
TextInput,
|
|
2634
|
-
__spreadValues$
|
|
2634
|
+
__spreadValues$6({
|
|
2635
2635
|
label: "Given name",
|
|
2636
2636
|
placeholder: "Given name"
|
|
2637
2637
|
}, form.getInputProps("givenName"))
|
|
2638
2638
|
), /* @__PURE__ */ React.createElement(
|
|
2639
2639
|
TextInput,
|
|
2640
|
-
__spreadValues$
|
|
2640
|
+
__spreadValues$6({
|
|
2641
2641
|
label: "Family name",
|
|
2642
2642
|
placeholder: "Family name"
|
|
2643
2643
|
}, form.getInputProps("familyName"))
|
|
2644
2644
|
)), /* @__PURE__ */ React.createElement(Button, { type: "submit", fullWidth: true, mt: "md" }, "Submit"))))
|
|
2645
|
-
), /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
2645
|
+
), /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
|
|
2646
2646
|
Badge$1,
|
|
2647
2647
|
{
|
|
2648
2648
|
variant: "filled",
|
|
@@ -2651,13 +2651,13 @@ const People = (props) => {
|
|
|
2651
2651
|
},
|
|
2652
2652
|
"Back"
|
|
2653
2653
|
)), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "People"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Manage members of your organization")), /* @__PURE__ */ React.createElement(Grid.Col, { sm: "content" }, !props.loading && /* @__PURE__ */ React.createElement(
|
|
2654
|
-
SplitButton$
|
|
2654
|
+
SplitButton$2,
|
|
2655
2655
|
{
|
|
2656
2656
|
withOrganizationLink: props.withOrganizationLink,
|
|
2657
2657
|
onAddUsersClick: () => setOpened(true),
|
|
2658
2658
|
onCopyOrganizationLinkClick: props.onCopyLinkClick
|
|
2659
2659
|
}
|
|
2660
|
-
))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$
|
|
2660
|
+
))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
|
|
2661
2661
|
{
|
|
2662
2662
|
title: "# OF PEOPLE",
|
|
2663
2663
|
value: props.users.length
|
|
@@ -2680,7 +2680,7 @@ const People = (props) => {
|
|
|
2680
2680
|
onChange: props.onAutocompleteChange
|
|
2681
2681
|
}
|
|
2682
2682
|
), /* @__PURE__ */ React.createElement(
|
|
2683
|
-
Table$
|
|
2683
|
+
Table$4,
|
|
2684
2684
|
{
|
|
2685
2685
|
loading: props.loading,
|
|
2686
2686
|
items: props.users,
|
|
@@ -2690,7 +2690,7 @@ const People = (props) => {
|
|
|
2690
2690
|
))))));
|
|
2691
2691
|
};
|
|
2692
2692
|
const DropzoneButton = (props) => {
|
|
2693
|
-
const { classes, theme } = useStyles$
|
|
2693
|
+
const { classes, theme } = useStyles$b();
|
|
2694
2694
|
const openRef = React.useRef(null);
|
|
2695
2695
|
const [loading, setLoading] = React.useState(false);
|
|
2696
2696
|
const onDrop = React.useCallback((acceptedFiles) => {
|
|
@@ -2736,7 +2736,7 @@ const DropzoneButton = (props) => {
|
|
|
2736
2736
|
} }, "Select file"));
|
|
2737
2737
|
};
|
|
2738
2738
|
|
|
2739
|
-
const useStyles$
|
|
2739
|
+
const useStyles$a = createStyles((theme) => ({
|
|
2740
2740
|
form: {
|
|
2741
2741
|
backgroundColor: theme.white,
|
|
2742
2742
|
padding: theme.spacing.xl,
|
|
@@ -2799,7 +2799,7 @@ const useStyles$8 = createStyles((theme) => ({
|
|
|
2799
2799
|
}
|
|
2800
2800
|
}));
|
|
2801
2801
|
const StartAnonymousLesson = (props) => {
|
|
2802
|
-
const { classes } = useStyles$
|
|
2802
|
+
const { classes } = useStyles$a();
|
|
2803
2803
|
const [name, setName] = React.useState("");
|
|
2804
2804
|
return /* @__PURE__ */ React.createElement("div", { className: classes.wrapper }, /* @__PURE__ */ React.createElement(Container, null, /* @__PURE__ */ React.createElement(SimpleGrid, { maw: 960, cols: 2, spacing: 15, breakpoints: [{ maxWidth: "sm", cols: 1 }] }, /* @__PURE__ */ React.createElement("div", { className: classes.content }, /* @__PURE__ */ React.createElement(Badge$1, { color: "violet" }, "Community"), /* @__PURE__ */ React.createElement(Title, { className: classes.title }, props.title), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", mt: "md" }, props.description), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", mt: "md" }, "You are now part of ", `${props.educatorName}'s`, " Class")), /* @__PURE__ */ React.createElement("div", { className: classes.form }, /* @__PURE__ */ React.createElement(
|
|
2805
2805
|
TextInput,
|
|
@@ -2823,24 +2823,24 @@ const StartAnonymousLesson = (props) => {
|
|
|
2823
2823
|
))))));
|
|
2824
2824
|
};
|
|
2825
2825
|
|
|
2826
|
-
var __defProp$
|
|
2827
|
-
var __getOwnPropSymbols$
|
|
2828
|
-
var __hasOwnProp$
|
|
2829
|
-
var __propIsEnum$
|
|
2830
|
-
var __defNormalProp$
|
|
2831
|
-
var __spreadValues$
|
|
2826
|
+
var __defProp$5 = Object.defineProperty;
|
|
2827
|
+
var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
|
|
2828
|
+
var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
|
|
2829
|
+
var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
|
|
2830
|
+
var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2831
|
+
var __spreadValues$5 = (a, b) => {
|
|
2832
2832
|
for (var prop in b || (b = {}))
|
|
2833
|
-
if (__hasOwnProp$
|
|
2834
|
-
__defNormalProp$
|
|
2835
|
-
if (__getOwnPropSymbols$
|
|
2836
|
-
for (var prop of __getOwnPropSymbols$
|
|
2837
|
-
if (__propIsEnum$
|
|
2838
|
-
__defNormalProp$
|
|
2833
|
+
if (__hasOwnProp$5.call(b, prop))
|
|
2834
|
+
__defNormalProp$5(a, prop, b[prop]);
|
|
2835
|
+
if (__getOwnPropSymbols$5)
|
|
2836
|
+
for (var prop of __getOwnPropSymbols$5(b)) {
|
|
2837
|
+
if (__propIsEnum$5.call(b, prop))
|
|
2838
|
+
__defNormalProp$5(a, prop, b[prop]);
|
|
2839
2839
|
}
|
|
2840
2840
|
return a;
|
|
2841
2841
|
};
|
|
2842
2842
|
const BadgeGrid = (props) => {
|
|
2843
|
-
const badges = props.badges.map((b) => /* @__PURE__ */ React.createElement(TaskCard, __spreadValues$
|
|
2843
|
+
const badges = props.badges.map((b) => /* @__PURE__ */ React.createElement(TaskCard, __spreadValues$5({ key: b.title }, b)));
|
|
2844
2844
|
return /* @__PURE__ */ React.createElement(SimpleGrid, { cols: 4, breakpoints: [{ maxWidth: "sm", cols: 1 }, { maxWidth: "md", cols: 3 }] }, badges);
|
|
2845
2845
|
};
|
|
2846
2846
|
function TaskCard(props) {
|
|
@@ -2856,7 +2856,7 @@ function TaskCard(props) {
|
|
|
2856
2856
|
));
|
|
2857
2857
|
}
|
|
2858
2858
|
|
|
2859
|
-
const useStyles$
|
|
2859
|
+
const useStyles$9 = createStyles((theme) => ({
|
|
2860
2860
|
action: {
|
|
2861
2861
|
backgroundColor: "inherit",
|
|
2862
2862
|
":hover": {
|
|
@@ -2875,7 +2875,7 @@ const useStyles$7 = createStyles((theme) => ({
|
|
|
2875
2875
|
}
|
|
2876
2876
|
}));
|
|
2877
2877
|
const TrialHome = (props) => {
|
|
2878
|
-
const { classes } = useStyles$
|
|
2878
|
+
const { classes } = useStyles$9();
|
|
2879
2879
|
return /* @__PURE__ */ React.createElement(Container, { size: "lg" }, /* @__PURE__ */ React.createElement(Badge$1, null, props.daysRemaining, " day", props.daysRemaining !== 1 ? "s" : "", " left"), /* @__PURE__ */ React.createElement(
|
|
2880
2880
|
Button,
|
|
2881
2881
|
{
|
|
@@ -2887,7 +2887,7 @@ const TrialHome = (props) => {
|
|
|
2887
2887
|
target: "_blank"
|
|
2888
2888
|
},
|
|
2889
2889
|
"UPGRADE NOW"
|
|
2890
|
-
), /* @__PURE__ */ React.createElement(Stack$
|
|
2890
|
+
), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
|
|
2891
2891
|
UserInfo,
|
|
2892
2892
|
{
|
|
2893
2893
|
variant: "compact",
|
|
@@ -2904,38 +2904,38 @@ const TrialHome = (props) => {
|
|
|
2904
2904
|
)), /* @__PURE__ */ React.createElement(Title, { maw: 500, mb: 20, mt: 20, className: classes.title }, "Based on the tags you selected, check out these lessons to get started with your students!"), /* @__PURE__ */ React.createElement(BadgeGrid, { onAssign: props.onAssign, badges: props.badges })));
|
|
2905
2905
|
};
|
|
2906
2906
|
|
|
2907
|
-
var __defProp$
|
|
2908
|
-
var __defProps$
|
|
2909
|
-
var __getOwnPropDescs$
|
|
2910
|
-
var __getOwnPropSymbols$
|
|
2911
|
-
var __hasOwnProp$
|
|
2912
|
-
var __propIsEnum$
|
|
2913
|
-
var __defNormalProp$
|
|
2914
|
-
var __spreadValues$
|
|
2907
|
+
var __defProp$4 = Object.defineProperty;
|
|
2908
|
+
var __defProps$4 = Object.defineProperties;
|
|
2909
|
+
var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
|
|
2910
|
+
var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
|
|
2911
|
+
var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
|
|
2912
|
+
var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
|
|
2913
|
+
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2914
|
+
var __spreadValues$4 = (a, b) => {
|
|
2915
2915
|
for (var prop in b || (b = {}))
|
|
2916
|
-
if (__hasOwnProp$
|
|
2917
|
-
__defNormalProp$
|
|
2918
|
-
if (__getOwnPropSymbols$
|
|
2919
|
-
for (var prop of __getOwnPropSymbols$
|
|
2920
|
-
if (__propIsEnum$
|
|
2921
|
-
__defNormalProp$
|
|
2916
|
+
if (__hasOwnProp$4.call(b, prop))
|
|
2917
|
+
__defNormalProp$4(a, prop, b[prop]);
|
|
2918
|
+
if (__getOwnPropSymbols$4)
|
|
2919
|
+
for (var prop of __getOwnPropSymbols$4(b)) {
|
|
2920
|
+
if (__propIsEnum$4.call(b, prop))
|
|
2921
|
+
__defNormalProp$4(a, prop, b[prop]);
|
|
2922
2922
|
}
|
|
2923
2923
|
return a;
|
|
2924
2924
|
};
|
|
2925
|
-
var __spreadProps$
|
|
2925
|
+
var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
|
|
2926
2926
|
var __objRest = (source, exclude) => {
|
|
2927
2927
|
var target = {};
|
|
2928
2928
|
for (var prop in source)
|
|
2929
|
-
if (__hasOwnProp$
|
|
2929
|
+
if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
2930
2930
|
target[prop] = source[prop];
|
|
2931
|
-
if (source != null && __getOwnPropSymbols$
|
|
2932
|
-
for (var prop of __getOwnPropSymbols$
|
|
2933
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum$
|
|
2931
|
+
if (source != null && __getOwnPropSymbols$4)
|
|
2932
|
+
for (var prop of __getOwnPropSymbols$4(source)) {
|
|
2933
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))
|
|
2934
2934
|
target[prop] = source[prop];
|
|
2935
2935
|
}
|
|
2936
2936
|
return target;
|
|
2937
2937
|
};
|
|
2938
|
-
const useStyles$
|
|
2938
|
+
const useStyles$8 = createStyles((theme, { checked }) => ({
|
|
2939
2939
|
button: {
|
|
2940
2940
|
display: "flex",
|
|
2941
2941
|
alignItems: "center",
|
|
@@ -2977,10 +2977,10 @@ function ImageCheckbox(_a) {
|
|
|
2977
2977
|
finalValue: false,
|
|
2978
2978
|
onChange
|
|
2979
2979
|
});
|
|
2980
|
-
const { classes, cx } = useStyles$
|
|
2980
|
+
const { classes, cx } = useStyles$8({ checked: value });
|
|
2981
2981
|
return /* @__PURE__ */ React.createElement(
|
|
2982
2982
|
UnstyledButton,
|
|
2983
|
-
__spreadProps$
|
|
2983
|
+
__spreadProps$4(__spreadValues$4({}, others), {
|
|
2984
2984
|
onClick: () => handleChange(!value),
|
|
2985
2985
|
className: cx(classes.button, className)
|
|
2986
2986
|
}),
|
|
@@ -3001,7 +3001,7 @@ function ImageCheckbox(_a) {
|
|
|
3001
3001
|
function SelectGrid(props) {
|
|
3002
3002
|
const items = props.items.map((item) => /* @__PURE__ */ React.createElement(
|
|
3003
3003
|
ImageCheckbox,
|
|
3004
|
-
__spreadProps$
|
|
3004
|
+
__spreadProps$4(__spreadValues$4({}, item), {
|
|
3005
3005
|
key: item.title,
|
|
3006
3006
|
onChange: (checked) => props.onChange(item.title, checked)
|
|
3007
3007
|
})
|
|
@@ -3019,26 +3019,26 @@ function SelectGrid(props) {
|
|
|
3019
3019
|
);
|
|
3020
3020
|
}
|
|
3021
3021
|
|
|
3022
|
-
var __defProp$
|
|
3023
|
-
var __defProps$
|
|
3024
|
-
var __getOwnPropDescs$
|
|
3025
|
-
var __getOwnPropSymbols$
|
|
3026
|
-
var __hasOwnProp$
|
|
3027
|
-
var __propIsEnum$
|
|
3028
|
-
var __defNormalProp$
|
|
3029
|
-
var __spreadValues$
|
|
3022
|
+
var __defProp$3 = Object.defineProperty;
|
|
3023
|
+
var __defProps$3 = Object.defineProperties;
|
|
3024
|
+
var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
|
|
3025
|
+
var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
|
|
3026
|
+
var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
|
|
3027
|
+
var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
|
|
3028
|
+
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3029
|
+
var __spreadValues$3 = (a, b) => {
|
|
3030
3030
|
for (var prop in b || (b = {}))
|
|
3031
|
-
if (__hasOwnProp$
|
|
3032
|
-
__defNormalProp$
|
|
3033
|
-
if (__getOwnPropSymbols$
|
|
3034
|
-
for (var prop of __getOwnPropSymbols$
|
|
3035
|
-
if (__propIsEnum$
|
|
3036
|
-
__defNormalProp$
|
|
3031
|
+
if (__hasOwnProp$3.call(b, prop))
|
|
3032
|
+
__defNormalProp$3(a, prop, b[prop]);
|
|
3033
|
+
if (__getOwnPropSymbols$3)
|
|
3034
|
+
for (var prop of __getOwnPropSymbols$3(b)) {
|
|
3035
|
+
if (__propIsEnum$3.call(b, prop))
|
|
3036
|
+
__defNormalProp$3(a, prop, b[prop]);
|
|
3037
3037
|
}
|
|
3038
3038
|
return a;
|
|
3039
3039
|
};
|
|
3040
|
-
var __spreadProps$
|
|
3041
|
-
const useStyles$
|
|
3040
|
+
var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
|
|
3041
|
+
const useStyles$7 = createStyles((theme) => ({
|
|
3042
3042
|
wrapper: {
|
|
3043
3043
|
minHeight: "100%",
|
|
3044
3044
|
boxSizing: "border-box",
|
|
@@ -3101,7 +3101,7 @@ const OPTIONS = [
|
|
|
3101
3101
|
{ description: "project-based learning", title: "Project-Based Learning", icon: IconTools }
|
|
3102
3102
|
];
|
|
3103
3103
|
const TrialRegistration = (props) => {
|
|
3104
|
-
const { classes } = useStyles$
|
|
3104
|
+
const { classes } = useStyles$7();
|
|
3105
3105
|
const [firstName, setFirstName] = React.useState("");
|
|
3106
3106
|
const [lastName, setLastName] = React.useState("");
|
|
3107
3107
|
const [organization, setOrganization] = React.useState({ organizationId: "", displayName: "" });
|
|
@@ -3147,7 +3147,7 @@ const TrialRegistration = (props) => {
|
|
|
3147
3147
|
label: "School/Organization Name",
|
|
3148
3148
|
placeholder: "What's the name of your school?",
|
|
3149
3149
|
data: props.organizations.map((o) => {
|
|
3150
|
-
return __spreadProps$
|
|
3150
|
+
return __spreadProps$3(__spreadValues$3({}, o), { value: o.displayName });
|
|
3151
3151
|
}),
|
|
3152
3152
|
onItemSubmit: (item) => setOrganization({ organizationId: item.organizationId, displayName: item.displayName }),
|
|
3153
3153
|
onChange: (next) => {
|
|
@@ -3159,7 +3159,7 @@ const TrialRegistration = (props) => {
|
|
|
3159
3159
|
SelectGrid,
|
|
3160
3160
|
{
|
|
3161
3161
|
items: OPTIONS,
|
|
3162
|
-
onChange: (e, checked) => setInterests(__spreadProps$
|
|
3162
|
+
onChange: (e, checked) => setInterests(__spreadProps$3(__spreadValues$3({}, interests), { [e]: checked }))
|
|
3163
3163
|
}
|
|
3164
3164
|
), /* @__PURE__ */ React.createElement(Group, { position: "right", mt: "md" }, /* @__PURE__ */ React.createElement(
|
|
3165
3165
|
Button,
|
|
@@ -3197,26 +3197,26 @@ const AdminProvider = (props) => {
|
|
|
3197
3197
|
);
|
|
3198
3198
|
};
|
|
3199
3199
|
|
|
3200
|
-
var __defProp$
|
|
3201
|
-
var __defProps$
|
|
3202
|
-
var __getOwnPropDescs$
|
|
3203
|
-
var __getOwnPropSymbols$
|
|
3204
|
-
var __hasOwnProp$
|
|
3205
|
-
var __propIsEnum$
|
|
3206
|
-
var __defNormalProp$
|
|
3207
|
-
var __spreadValues$
|
|
3200
|
+
var __defProp$2 = Object.defineProperty;
|
|
3201
|
+
var __defProps$2 = Object.defineProperties;
|
|
3202
|
+
var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
|
|
3203
|
+
var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
|
|
3204
|
+
var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
|
|
3205
|
+
var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
|
|
3206
|
+
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3207
|
+
var __spreadValues$2 = (a, b) => {
|
|
3208
3208
|
for (var prop in b || (b = {}))
|
|
3209
|
-
if (__hasOwnProp$
|
|
3210
|
-
__defNormalProp$
|
|
3211
|
-
if (__getOwnPropSymbols$
|
|
3212
|
-
for (var prop of __getOwnPropSymbols$
|
|
3213
|
-
if (__propIsEnum$
|
|
3214
|
-
__defNormalProp$
|
|
3209
|
+
if (__hasOwnProp$2.call(b, prop))
|
|
3210
|
+
__defNormalProp$2(a, prop, b[prop]);
|
|
3211
|
+
if (__getOwnPropSymbols$2)
|
|
3212
|
+
for (var prop of __getOwnPropSymbols$2(b)) {
|
|
3213
|
+
if (__propIsEnum$2.call(b, prop))
|
|
3214
|
+
__defNormalProp$2(a, prop, b[prop]);
|
|
3215
3215
|
}
|
|
3216
3216
|
return a;
|
|
3217
3217
|
};
|
|
3218
|
-
var __spreadProps$
|
|
3219
|
-
const useStyles$
|
|
3218
|
+
var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
|
|
3219
|
+
const useStyles$6 = createStyles((theme, props) => ({
|
|
3220
3220
|
footer: {
|
|
3221
3221
|
paddingTop: theme.spacing.md,
|
|
3222
3222
|
paddingBottom: theme.spacing.md,
|
|
@@ -3303,7 +3303,7 @@ const useStyles$4 = createStyles((theme, props) => ({
|
|
|
3303
3303
|
}
|
|
3304
3304
|
}));
|
|
3305
3305
|
const App = (props) => {
|
|
3306
|
-
const { classes } = useStyles$
|
|
3306
|
+
const { classes } = useStyles$6(props);
|
|
3307
3307
|
const account = useAccount(props.account, props.accounts, props.onAccountChange);
|
|
3308
3308
|
return /* @__PURE__ */ React.createElement(
|
|
3309
3309
|
AppShell,
|
|
@@ -3311,7 +3311,7 @@ const App = (props) => {
|
|
|
3311
3311
|
padding: "xs",
|
|
3312
3312
|
navbar: props.navbar && /* @__PURE__ */ React.createElement(
|
|
3313
3313
|
Navbar,
|
|
3314
|
-
__spreadProps$
|
|
3314
|
+
__spreadProps$2(__spreadValues$2({}, props.navbar.props), {
|
|
3315
3315
|
onSwitchAccounts: account.accounts && account.accounts.length > 1 ? () => account.setChangeModalOpen(true) : void 0
|
|
3316
3316
|
})
|
|
3317
3317
|
),
|
|
@@ -3398,7 +3398,7 @@ const useAccount = (account, accounts, onAccountChange) => {
|
|
|
3398
3398
|
};
|
|
3399
3399
|
};
|
|
3400
3400
|
|
|
3401
|
-
function Table$
|
|
3401
|
+
function Table$3(props) {
|
|
3402
3402
|
if (props.items.length === 0) {
|
|
3403
3403
|
return /* @__PURE__ */ React.createElement(
|
|
3404
3404
|
PlaceholderBanner,
|
|
@@ -3427,10 +3427,10 @@ function Table$2(props) {
|
|
|
3427
3427
|
},
|
|
3428
3428
|
/* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Text, { size: "sm", weight: 500 }, row.name), /* @__PURE__ */ React.createElement(Text, { size: "xs", color: "dimmed" }, row.description)))
|
|
3429
3429
|
))));
|
|
3430
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$
|
|
3430
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { horizontalSpacing: 0, verticalSpacing: 0, sx: { minWidth: 700 } }, /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
3431
3431
|
}
|
|
3432
3432
|
|
|
3433
|
-
const useStyles$
|
|
3433
|
+
const useStyles$5 = createStyles((theme) => ({
|
|
3434
3434
|
title: {
|
|
3435
3435
|
fontSize: 34,
|
|
3436
3436
|
fontWeight: 900,
|
|
@@ -3443,9 +3443,9 @@ const useStyles$3 = createStyles((theme) => ({
|
|
|
3443
3443
|
}
|
|
3444
3444
|
}));
|
|
3445
3445
|
const Pathways = (props) => {
|
|
3446
|
-
const { classes } = useStyles$
|
|
3447
|
-
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
3448
|
-
Table$
|
|
3446
|
+
const { classes } = useStyles$5();
|
|
3447
|
+
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled", size: "lg" }, "Pathways"), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "Pathways"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Explore all your unique pathway requirements in one clear space"))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(
|
|
3448
|
+
Table$3,
|
|
3449
3449
|
{
|
|
3450
3450
|
loading: props.loading,
|
|
3451
3451
|
items: props.pathways
|
|
@@ -3453,7 +3453,7 @@ const Pathways = (props) => {
|
|
|
3453
3453
|
))));
|
|
3454
3454
|
};
|
|
3455
3455
|
|
|
3456
|
-
const useStyles$
|
|
3456
|
+
const useStyles$4 = createStyles((theme) => ({
|
|
3457
3457
|
button: {
|
|
3458
3458
|
borderTopRightRadius: 0,
|
|
3459
3459
|
borderBottomRightRadius: 0,
|
|
@@ -3467,10 +3467,10 @@ const useStyles$2 = createStyles((theme) => ({
|
|
|
3467
3467
|
borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
|
|
3468
3468
|
}
|
|
3469
3469
|
}));
|
|
3470
|
-
const SplitButton = (props) => {
|
|
3471
|
-
const { classes, theme } = useStyles$
|
|
3470
|
+
const SplitButton$1 = (props) => {
|
|
3471
|
+
const { classes, theme } = useStyles$4();
|
|
3472
3472
|
theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
3473
|
-
return /* @__PURE__ */ React.createElement(Stack$
|
|
3473
|
+
return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
|
|
3474
3474
|
Button,
|
|
3475
3475
|
{
|
|
3476
3476
|
component: Link,
|
|
@@ -3496,7 +3496,7 @@ const SplitButton = (props) => {
|
|
|
3496
3496
|
));
|
|
3497
3497
|
};
|
|
3498
3498
|
|
|
3499
|
-
function Stack(props) {
|
|
3499
|
+
function Stack$1(props) {
|
|
3500
3500
|
if (props.items.length === 0) {
|
|
3501
3501
|
return null;
|
|
3502
3502
|
}
|
|
@@ -3504,29 +3504,29 @@ function Stack(props) {
|
|
|
3504
3504
|
return /* @__PURE__ */ React.createElement(Grid, { grow: true, gutter: "lg", sx: { padding: 20, minWidth: 700 } }, rows);
|
|
3505
3505
|
}
|
|
3506
3506
|
|
|
3507
|
-
var __defProp = Object.defineProperty;
|
|
3508
|
-
var __defProps = Object.defineProperties;
|
|
3509
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
3510
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3511
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
3512
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
3513
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3514
|
-
var __spreadValues = (a, b) => {
|
|
3507
|
+
var __defProp$1 = Object.defineProperty;
|
|
3508
|
+
var __defProps$1 = Object.defineProperties;
|
|
3509
|
+
var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
|
|
3510
|
+
var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
|
|
3511
|
+
var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
|
|
3512
|
+
var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
|
|
3513
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3514
|
+
var __spreadValues$1 = (a, b) => {
|
|
3515
3515
|
for (var prop in b || (b = {}))
|
|
3516
|
-
if (__hasOwnProp.call(b, prop))
|
|
3517
|
-
__defNormalProp(a, prop, b[prop]);
|
|
3518
|
-
if (__getOwnPropSymbols)
|
|
3519
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
3520
|
-
if (__propIsEnum.call(b, prop))
|
|
3521
|
-
__defNormalProp(a, prop, b[prop]);
|
|
3516
|
+
if (__hasOwnProp$1.call(b, prop))
|
|
3517
|
+
__defNormalProp$1(a, prop, b[prop]);
|
|
3518
|
+
if (__getOwnPropSymbols$1)
|
|
3519
|
+
for (var prop of __getOwnPropSymbols$1(b)) {
|
|
3520
|
+
if (__propIsEnum$1.call(b, prop))
|
|
3521
|
+
__defNormalProp$1(a, prop, b[prop]);
|
|
3522
3522
|
}
|
|
3523
3523
|
return a;
|
|
3524
3524
|
};
|
|
3525
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
3526
|
-
function Table$
|
|
3525
|
+
var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
|
|
3526
|
+
function Table$2(props) {
|
|
3527
3527
|
const preparedItems = React.useMemo(() => {
|
|
3528
3528
|
return props.items.map((item) => {
|
|
3529
|
-
const flatItem = __spreadProps(__spreadValues({}, item), {
|
|
3529
|
+
const flatItem = __spreadProps$1(__spreadValues$1({}, item), {
|
|
3530
3530
|
status: item.isComplete ? 1 : 0
|
|
3531
3531
|
});
|
|
3532
3532
|
if (item.categoryPoints) {
|
|
@@ -3594,13 +3594,13 @@ function Table$1(props) {
|
|
|
3594
3594
|
}))
|
|
3595
3595
|
],
|
|
3596
3596
|
rowExpansion: {
|
|
3597
|
-
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack, { items: record.badges })
|
|
3597
|
+
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$1, { items: record.badges })
|
|
3598
3598
|
}
|
|
3599
3599
|
}
|
|
3600
3600
|
));
|
|
3601
3601
|
}
|
|
3602
3602
|
|
|
3603
|
-
const useStyles$
|
|
3603
|
+
const useStyles$3 = createStyles((theme) => ({
|
|
3604
3604
|
th: { padding: "0 !important" },
|
|
3605
3605
|
control: {
|
|
3606
3606
|
width: "100%",
|
|
@@ -3611,11 +3611,11 @@ const useStyles$1 = createStyles((theme) => ({
|
|
|
3611
3611
|
}
|
|
3612
3612
|
}));
|
|
3613
3613
|
function Th({ children, reversed, sorted, onSort }) {
|
|
3614
|
-
const { classes } = useStyles$
|
|
3614
|
+
const { classes } = useStyles$3();
|
|
3615
3615
|
const Icon = sorted ? reversed ? IconChevronUp : IconChevronDown : IconSelector;
|
|
3616
3616
|
return /* @__PURE__ */ React.createElement("th", { className: classes.th }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: onSort, className: classes.control }, /* @__PURE__ */ React.createElement(Group, { position: "apart", noWrap: true, spacing: "xs" }, /* @__PURE__ */ React.createElement(Text, { weight: 500, size: "sm", sx: { whiteSpace: "nowrap" } }, children), /* @__PURE__ */ React.createElement(Center, null, /* @__PURE__ */ React.createElement(Icon, { size: 14, stroke: 1.5 })))));
|
|
3617
3617
|
}
|
|
3618
|
-
function Table(props) {
|
|
3618
|
+
function Table$1(props) {
|
|
3619
3619
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
3620
3620
|
if (props.items.length === 0) {
|
|
3621
3621
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -3632,7 +3632,7 @@ function Table(props) {
|
|
|
3632
3632
|
const percentageCompletion = Math.round((row.percentageCompletion + Number.EPSILON) * 100);
|
|
3633
3633
|
return /* @__PURE__ */ React.createElement("tr", { key: row.badgeId }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Text, { component: Link, to: row.href }, row.badgeName)), /* @__PURE__ */ React.createElement("td", null, percentageCompletion, "%"));
|
|
3634
3634
|
});
|
|
3635
|
-
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$
|
|
3635
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement(
|
|
3636
3636
|
Th,
|
|
3637
3637
|
{
|
|
3638
3638
|
sorted: sortConfig.key === "badgeName",
|
|
@@ -3651,7 +3651,7 @@ function Table(props) {
|
|
|
3651
3651
|
))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
3652
3652
|
}
|
|
3653
3653
|
|
|
3654
|
-
const useStyles = createStyles((theme) => ({
|
|
3654
|
+
const useStyles$2 = createStyles((theme) => ({
|
|
3655
3655
|
title: {
|
|
3656
3656
|
fontSize: 34,
|
|
3657
3657
|
fontWeight: 900,
|
|
@@ -3664,12 +3664,12 @@ const useStyles = createStyles((theme) => ({
|
|
|
3664
3664
|
}
|
|
3665
3665
|
}));
|
|
3666
3666
|
const Pathway = (props) => {
|
|
3667
|
-
const { classes } = useStyles();
|
|
3667
|
+
const { classes } = useStyles$2();
|
|
3668
3668
|
const [tab, setTab] = useState("badges");
|
|
3669
3669
|
const numberOfStudents = props.students.length;
|
|
3670
3670
|
numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length / numberOfStudents : 0;
|
|
3671
3671
|
const numberOfBadgesEarned = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
|
|
3672
|
-
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
3672
|
+
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
|
|
3673
3673
|
Badge$1,
|
|
3674
3674
|
{
|
|
3675
3675
|
variant: "filled",
|
|
@@ -3677,14 +3677,14 @@ const Pathway = (props) => {
|
|
|
3677
3677
|
size: "lg"
|
|
3678
3678
|
},
|
|
3679
3679
|
"Back"
|
|
3680
|
-
)), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$
|
|
3681
|
-
SplitButton,
|
|
3680
|
+
)), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.title || "Pathway"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), !props.trial && /* @__PURE__ */ React.createElement(Stack$5, { ml: "auto" }, /* @__PURE__ */ React.createElement(
|
|
3681
|
+
SplitButton$1,
|
|
3682
3682
|
{
|
|
3683
3683
|
href: props.href,
|
|
3684
3684
|
onCopyLinkClick: props.onCopyLinkClick,
|
|
3685
3685
|
onExportDataClick: props.onExportDataClick
|
|
3686
3686
|
}
|
|
3687
|
-
))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$
|
|
3687
|
+
))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
|
|
3688
3688
|
{
|
|
3689
3689
|
title: props.trial ? "BADGES SUBMITTED" : "PATHWAY COMPLETION",
|
|
3690
3690
|
value: props.trial ? 0 : numberOfBadgesEarned,
|
|
@@ -3705,7 +3705,7 @@ const Pathway = (props) => {
|
|
|
3705
3705
|
return { value: g.classId, label: g.name };
|
|
3706
3706
|
})
|
|
3707
3707
|
}
|
|
3708
|
-
), /* @__PURE__ */ React.createElement(Stack$
|
|
3708
|
+
), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, !props.trial && /* @__PURE__ */ React.createElement(
|
|
3709
3709
|
Tabs,
|
|
3710
3710
|
{
|
|
3711
3711
|
value: tab,
|
|
@@ -3716,13 +3716,13 @@ const Pathway = (props) => {
|
|
|
3716
3716
|
onChange: setTab
|
|
3717
3717
|
}
|
|
3718
3718
|
), (!!props.trial || tab === "badges") && /* @__PURE__ */ React.createElement(
|
|
3719
|
-
Table,
|
|
3719
|
+
Table$1,
|
|
3720
3720
|
{
|
|
3721
3721
|
loading: props.loading,
|
|
3722
3722
|
items: props.badges
|
|
3723
3723
|
}
|
|
3724
3724
|
), !props.trial && tab === "students" && /* @__PURE__ */ React.createElement(
|
|
3725
|
-
Table$
|
|
3725
|
+
Table$2,
|
|
3726
3726
|
{
|
|
3727
3727
|
loading: props.loading,
|
|
3728
3728
|
items: props.students,
|
|
@@ -3731,5 +3731,210 @@ const Pathway = (props) => {
|
|
|
3731
3731
|
)))))));
|
|
3732
3732
|
};
|
|
3733
3733
|
|
|
3734
|
-
|
|
3734
|
+
const useStyles$1 = createStyles((theme) => ({
|
|
3735
|
+
button: {
|
|
3736
|
+
borderTopRightRadius: 0,
|
|
3737
|
+
borderBottomRightRadius: 0,
|
|
3738
|
+
marginLeft: 0,
|
|
3739
|
+
marginRight: 0
|
|
3740
|
+
},
|
|
3741
|
+
menuControl: {
|
|
3742
|
+
borderTopLeftRadius: 0,
|
|
3743
|
+
borderBottomLeftRadius: 0,
|
|
3744
|
+
border: 0,
|
|
3745
|
+
borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
|
|
3746
|
+
}
|
|
3747
|
+
}));
|
|
3748
|
+
const SplitButton = (props) => {
|
|
3749
|
+
const { classes, theme } = useStyles$1();
|
|
3750
|
+
theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
3751
|
+
return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
|
|
3752
|
+
Button,
|
|
3753
|
+
{
|
|
3754
|
+
component: Link,
|
|
3755
|
+
to: props.href,
|
|
3756
|
+
className: classes.button,
|
|
3757
|
+
variant: "gradient"
|
|
3758
|
+
},
|
|
3759
|
+
"Preview"
|
|
3760
|
+
), /* @__PURE__ */ React.createElement(
|
|
3761
|
+
Button,
|
|
3762
|
+
{
|
|
3763
|
+
leftIcon: /* @__PURE__ */ React.createElement(IconClipboardCopy, { size: 14 }),
|
|
3764
|
+
onClick: props.onCopyLinkClick
|
|
3765
|
+
},
|
|
3766
|
+
"Copy link"
|
|
3767
|
+
), /* @__PURE__ */ React.createElement(
|
|
3768
|
+
Button,
|
|
3769
|
+
{
|
|
3770
|
+
leftIcon: /* @__PURE__ */ React.createElement(IconTableExport, { size: 14 }),
|
|
3771
|
+
onClick: props.onExportDataClick
|
|
3772
|
+
},
|
|
3773
|
+
"Export data (.csv)"
|
|
3774
|
+
));
|
|
3775
|
+
};
|
|
3776
|
+
|
|
3777
|
+
function Stack(props) {
|
|
3778
|
+
if (!props.items.length)
|
|
3779
|
+
return null;
|
|
3780
|
+
return /* @__PURE__ */ React.createElement(Grid, { gutter: "md", sx: { padding: 20, minWidth: 700 } }, /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, { color: "dark.4", weight: "bold", size: "md" }, "By link")), /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, { color: "dark.4", weight: "bold", size: "md" }, "By badge")), /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, { color: "dark.4", weight: "bold", size: "md" }, "By Lesson")), /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, { color: "dark.4", weight: "bold", size: "md" }, "By Question")), props.items.map((row, i) => /* @__PURE__ */ React.createElement(React.Fragment, { key: i }, /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement("a", { href: row.link, target: "_blank", rel: "noopener noreferrer" }, "View File")), /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, null, row.badgeName)), /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, null, row.lessonName)), /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, null, row.question)))));
|
|
3781
|
+
}
|
|
3782
|
+
|
|
3783
|
+
var __defProp = Object.defineProperty;
|
|
3784
|
+
var __defProps = Object.defineProperties;
|
|
3785
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
3786
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3787
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
3788
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
3789
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3790
|
+
var __spreadValues = (a, b) => {
|
|
3791
|
+
for (var prop in b || (b = {}))
|
|
3792
|
+
if (__hasOwnProp.call(b, prop))
|
|
3793
|
+
__defNormalProp(a, prop, b[prop]);
|
|
3794
|
+
if (__getOwnPropSymbols)
|
|
3795
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
3796
|
+
if (__propIsEnum.call(b, prop))
|
|
3797
|
+
__defNormalProp(a, prop, b[prop]);
|
|
3798
|
+
}
|
|
3799
|
+
return a;
|
|
3800
|
+
};
|
|
3801
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
3802
|
+
function Table(props) {
|
|
3803
|
+
const preparedItems = React.useMemo(() => {
|
|
3804
|
+
return props.items.map((item) => {
|
|
3805
|
+
var _a;
|
|
3806
|
+
return __spreadProps(__spreadValues({}, item), {
|
|
3807
|
+
submissionCount: ((_a = item.submissions) == null ? void 0 : _a.length) || 0
|
|
3808
|
+
});
|
|
3809
|
+
});
|
|
3810
|
+
}, [props.items]);
|
|
3811
|
+
const { items: sortedItems, requestSort, sortConfig } = useSortableData(preparedItems);
|
|
3812
|
+
if (props.items.length === 0) {
|
|
3813
|
+
return /* @__PURE__ */ React.createElement(
|
|
3814
|
+
PlaceholderBanner,
|
|
3815
|
+
{
|
|
3816
|
+
title: "No files to display",
|
|
3817
|
+
description: "There are no submitted files to display yet.",
|
|
3818
|
+
loading: props.loading,
|
|
3819
|
+
icon: "badges"
|
|
3820
|
+
}
|
|
3821
|
+
);
|
|
3822
|
+
}
|
|
3823
|
+
const sortStatus = {
|
|
3824
|
+
columnAccessor: sortConfig.key,
|
|
3825
|
+
direction: sortConfig.direction === "desc" ? "desc" : "asc"
|
|
3826
|
+
};
|
|
3827
|
+
return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(
|
|
3828
|
+
DataTable,
|
|
3829
|
+
{
|
|
3830
|
+
verticalSpacing: "sm",
|
|
3831
|
+
sx: { minWidth: 700 },
|
|
3832
|
+
withBorder: false,
|
|
3833
|
+
borderRadius: "sm",
|
|
3834
|
+
withColumnBorders: true,
|
|
3835
|
+
striped: true,
|
|
3836
|
+
highlightOnHover: true,
|
|
3837
|
+
records: sortedItems,
|
|
3838
|
+
sortStatus,
|
|
3839
|
+
onSortStatusChange: (status) => requestSort(status.columnAccessor),
|
|
3840
|
+
idAccessor: "userId",
|
|
3841
|
+
columns: [{
|
|
3842
|
+
accessor: "name",
|
|
3843
|
+
title: "Student Name",
|
|
3844
|
+
sortable: true,
|
|
3845
|
+
render: (row) => /* @__PURE__ */ React.createElement(Group, { spacing: "sm" }, /* @__PURE__ */ React.createElement(Avatar, { size: 40, src: row.avatar, radius: 40 }), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Text, { size: "sm", weight: 500 }, row.name), /* @__PURE__ */ React.createElement(Text, { size: "xs", color: "dimmed" }, row.email)))
|
|
3846
|
+
}, {
|
|
3847
|
+
accessor: "submissionCount",
|
|
3848
|
+
title: "Files",
|
|
3849
|
+
sortable: true,
|
|
3850
|
+
render: (row) => row.submissions.length
|
|
3851
|
+
}],
|
|
3852
|
+
rowExpansion: {
|
|
3853
|
+
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack, { items: record.submissions })
|
|
3854
|
+
}
|
|
3855
|
+
}
|
|
3856
|
+
));
|
|
3857
|
+
}
|
|
3858
|
+
|
|
3859
|
+
const useStyles = createStyles((theme) => ({
|
|
3860
|
+
title: {
|
|
3861
|
+
fontSize: 34,
|
|
3862
|
+
fontWeight: 900,
|
|
3863
|
+
[theme.fn.smallerThan("sm")]: {
|
|
3864
|
+
fontSize: 24
|
|
3865
|
+
}
|
|
3866
|
+
},
|
|
3867
|
+
description: {
|
|
3868
|
+
maxWidth: 600
|
|
3869
|
+
}
|
|
3870
|
+
}));
|
|
3871
|
+
const FileLocker = (props) => {
|
|
3872
|
+
const { classes } = useStyles();
|
|
3873
|
+
const [tab, setTab] = useState("students");
|
|
3874
|
+
props.students.length;
|
|
3875
|
+
const numberOfFiles = props.students.reduce(
|
|
3876
|
+
(acc, s) => {
|
|
3877
|
+
var _a;
|
|
3878
|
+
return acc + (((_a = s.submissions) == null ? void 0 : _a.length) || 0);
|
|
3879
|
+
},
|
|
3880
|
+
0
|
|
3881
|
+
);
|
|
3882
|
+
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
|
|
3883
|
+
Badge$1,
|
|
3884
|
+
{
|
|
3885
|
+
variant: "filled",
|
|
3886
|
+
leftSection: /* @__PURE__ */ React.createElement(ActionIcon, { color: "blue", size: "xs", radius: "xl", variant: "filled" }, /* @__PURE__ */ React.createElement(IconArrowLeft, { size: 14 })),
|
|
3887
|
+
size: "lg"
|
|
3888
|
+
},
|
|
3889
|
+
"Back"
|
|
3890
|
+
)), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "File"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), !props.trial && /* @__PURE__ */ React.createElement(Stack$5, { ml: "auto" }, /* @__PURE__ */ React.createElement(
|
|
3891
|
+
SplitButton,
|
|
3892
|
+
{
|
|
3893
|
+
href: props.href,
|
|
3894
|
+
onCopyLinkClick: props.onCopyLinkClick,
|
|
3895
|
+
onExportDataClick: props.onExportDataClick
|
|
3896
|
+
}
|
|
3897
|
+
))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
|
|
3898
|
+
{
|
|
3899
|
+
title: props.trial ? "LESSONS SUBMITTED" : "FILES",
|
|
3900
|
+
value: props.trial ? props.lessonsCompleted || 0 : numberOfFiles,
|
|
3901
|
+
unit: props.trial ? "" : ""
|
|
3902
|
+
}
|
|
3903
|
+
] }), !props.trial && /* @__PURE__ */ React.createElement(
|
|
3904
|
+
Select,
|
|
3905
|
+
{
|
|
3906
|
+
clearable: true,
|
|
3907
|
+
clearButtonLabel: "Clear class selection",
|
|
3908
|
+
size: "sm",
|
|
3909
|
+
placeholder: "Select a class",
|
|
3910
|
+
nothingFound: "No options",
|
|
3911
|
+
value: props.classId,
|
|
3912
|
+
onChange: props.onClassChange,
|
|
3913
|
+
icon: /* @__PURE__ */ React.createElement(IconCategory2, null),
|
|
3914
|
+
data: props.classes.map((g) => {
|
|
3915
|
+
return { value: g.classId, label: g.name };
|
|
3916
|
+
})
|
|
3917
|
+
}
|
|
3918
|
+
), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, !props.trial && /* @__PURE__ */ React.createElement(
|
|
3919
|
+
Tabs,
|
|
3920
|
+
{
|
|
3921
|
+
value: tab,
|
|
3922
|
+
data: [
|
|
3923
|
+
{ label: "By student", value: "students" },
|
|
3924
|
+
{ label: "By pathway", value: "pathways" },
|
|
3925
|
+
{ label: "By badge", value: "badges" },
|
|
3926
|
+
{ label: "By lesson", value: "lessons" }
|
|
3927
|
+
],
|
|
3928
|
+
onChange: setTab
|
|
3929
|
+
}
|
|
3930
|
+
), !props.trial && tab === "students" && /* @__PURE__ */ React.createElement(
|
|
3931
|
+
Table,
|
|
3932
|
+
{
|
|
3933
|
+
loading: props.loading,
|
|
3934
|
+
items: props.students
|
|
3935
|
+
}
|
|
3936
|
+
)))))));
|
|
3937
|
+
};
|
|
3938
|
+
|
|
3939
|
+
export { AdminProvider, App, Badge, Badges, Class, Classes, Dashboard, FileLocker, GettingStarted, Home, Lesson, Lessons, Navbar, Organization, Pathway, Pathways, People, StartAnonymousLesson, Student, SwitchAccount, TrialHome, TrialRegistration };
|
|
3735
3940
|
//# sourceMappingURL=index.mjs.map
|