@local-civics/mgmt-ui 0.1.190 → 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 +118 -52
- package/dist/index.js +560 -346
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +618 -405
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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$
|
|
4
|
-
import { IconChevronRight, IconChevronLeft, IconVideo, IconSwitchHorizontal, IconLogout, IconHome2, IconGauge, IconCategory2, IconRoute, IconAlbum, IconLambda, 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';
|
|
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
|
+
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';
|
|
7
7
|
export { showNotification, updateNotification } 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",
|
|
@@ -266,6 +266,7 @@ const data = [
|
|
|
266
266
|
{ label: "Pathways", icon: IconRoute },
|
|
267
267
|
{ label: "Badges", icon: IconAlbum },
|
|
268
268
|
{ label: "Lessons", icon: IconLambda },
|
|
269
|
+
{ label: "File Locker", icon: IconClipboard },
|
|
269
270
|
{
|
|
270
271
|
label: "Organization",
|
|
271
272
|
icon: IconBuilding,
|
|
@@ -281,7 +282,7 @@ const TRIAL_PAGES = [
|
|
|
281
282
|
"Badges"
|
|
282
283
|
];
|
|
283
284
|
function Navbar(props) {
|
|
284
|
-
const { classes, cx } = useStyles$
|
|
285
|
+
const { classes, cx } = useStyles$w();
|
|
285
286
|
const [burgerOpen, setBurgerOpen] = React.useState(false);
|
|
286
287
|
const toggle = () => setBurgerOpen(!burgerOpen);
|
|
287
288
|
const links = data.map((item) => {
|
|
@@ -294,12 +295,12 @@ function Navbar(props) {
|
|
|
294
295
|
}
|
|
295
296
|
return /* @__PURE__ */ React.createElement(
|
|
296
297
|
LinksGroup,
|
|
297
|
-
__spreadProps$
|
|
298
|
+
__spreadProps$9(__spreadValues$c(__spreadValues$c({
|
|
298
299
|
key: item.label,
|
|
299
300
|
active: props.active
|
|
300
301
|
}, item), context), {
|
|
301
302
|
links: (item.links || []).map((link) => {
|
|
302
|
-
return __spreadValues$
|
|
303
|
+
return __spreadValues$c(__spreadValues$c({}, link), props.links[`${item.label}/${link.label}`] || { notifications: 0, href: "" });
|
|
303
304
|
})
|
|
304
305
|
})
|
|
305
306
|
);
|
|
@@ -324,7 +325,7 @@ function Navbar(props) {
|
|
|
324
325
|
} }, /* @__PURE__ */ React.createElement(IconLogout, { className: classes.linkIcon, stroke: 1.5 }), /* @__PURE__ */ React.createElement("span", null, "Logout"))))));
|
|
325
326
|
}
|
|
326
327
|
|
|
327
|
-
const useStyles$
|
|
328
|
+
const useStyles$v = createStyles((theme) => ({
|
|
328
329
|
inner: {
|
|
329
330
|
paddingTop: theme.spacing.xl,
|
|
330
331
|
paddingBottom: theme.spacing.xl * 4
|
|
@@ -360,7 +361,7 @@ const useStyles$t = createStyles((theme) => ({
|
|
|
360
361
|
}
|
|
361
362
|
}));
|
|
362
363
|
const GettingStarted = (props) => {
|
|
363
|
-
const { classes } = useStyles$
|
|
364
|
+
const { classes } = useStyles$v();
|
|
364
365
|
return /* @__PURE__ */ React.createElement(
|
|
365
366
|
Modal,
|
|
366
367
|
{
|
|
@@ -374,7 +375,7 @@ const GettingStarted = (props) => {
|
|
|
374
375
|
);
|
|
375
376
|
};
|
|
376
377
|
|
|
377
|
-
const useStyles$
|
|
378
|
+
const useStyles$u = createStyles((theme) => ({
|
|
378
379
|
title: {
|
|
379
380
|
fontSize: 34,
|
|
380
381
|
fontWeight: 900,
|
|
@@ -415,7 +416,7 @@ const useStyles$s = createStyles((theme) => ({
|
|
|
415
416
|
}
|
|
416
417
|
}));
|
|
417
418
|
const SwitchAccount = (props) => {
|
|
418
|
-
const { classes, theme } = useStyles$
|
|
419
|
+
const { classes, theme } = useStyles$u();
|
|
419
420
|
const options = props.accounts.map((a) => {
|
|
420
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")));
|
|
421
422
|
});
|
|
@@ -432,7 +433,7 @@ const SwitchAccount = (props) => {
|
|
|
432
433
|
);
|
|
433
434
|
};
|
|
434
435
|
|
|
435
|
-
const useStyles$
|
|
436
|
+
const useStyles$t = createStyles((theme) => ({
|
|
436
437
|
root: {
|
|
437
438
|
display: "flex",
|
|
438
439
|
backgroundImage: `linear-gradient(-60deg, ${theme.colors[theme.primaryColor][4]} 0%, ${theme.colors[theme.primaryColor][7]} 100%)`,
|
|
@@ -476,7 +477,7 @@ const useStyles$r = createStyles((theme) => ({
|
|
|
476
477
|
}
|
|
477
478
|
}));
|
|
478
479
|
const StatsGroup = ({ data, footer }) => {
|
|
479
|
-
const { classes } = useStyles$
|
|
480
|
+
const { classes } = useStyles$t();
|
|
480
481
|
const stats = data.map((stat) => {
|
|
481
482
|
const value = (() => {
|
|
482
483
|
if (stat.unit === "%") {
|
|
@@ -496,7 +497,7 @@ const Tabs = (props) => {
|
|
|
496
497
|
return /* @__PURE__ */ React.createElement(Tabs$1, { value: props.value, onTabChange: props.onChange }, /* @__PURE__ */ React.createElement(Tabs$1.List, null, tabs));
|
|
497
498
|
};
|
|
498
499
|
|
|
499
|
-
const useStyles$
|
|
500
|
+
const useStyles$s = createStyles((theme) => ({
|
|
500
501
|
button: {
|
|
501
502
|
borderTopRightRadius: 0,
|
|
502
503
|
borderBottomRightRadius: 0,
|
|
@@ -510,10 +511,10 @@ const useStyles$q = createStyles((theme) => ({
|
|
|
510
511
|
borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
|
|
511
512
|
}
|
|
512
513
|
}));
|
|
513
|
-
const SplitButton$
|
|
514
|
-
const { classes, theme } = useStyles$
|
|
514
|
+
const SplitButton$5 = (props) => {
|
|
515
|
+
const { classes, theme } = useStyles$s();
|
|
515
516
|
theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
516
|
-
return /* @__PURE__ */ React.createElement(Stack$
|
|
517
|
+
return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
|
|
517
518
|
Button,
|
|
518
519
|
{
|
|
519
520
|
component: Link,
|
|
@@ -539,7 +540,7 @@ const SplitButton$4 = (props) => {
|
|
|
539
540
|
));
|
|
540
541
|
};
|
|
541
542
|
|
|
542
|
-
const useStyles$
|
|
543
|
+
const useStyles$r = createStyles((theme) => ({
|
|
543
544
|
wrapper: {
|
|
544
545
|
display: "flex",
|
|
545
546
|
alignItems: "center",
|
|
@@ -590,13 +591,13 @@ const useStyles$p = createStyles((theme) => ({
|
|
|
590
591
|
}
|
|
591
592
|
}));
|
|
592
593
|
const PlaceholderBanner = (props) => {
|
|
593
|
-
const { classes } = useStyles$
|
|
594
|
+
const { classes } = useStyles$r();
|
|
594
595
|
const title = props.title || "Nothing to display";
|
|
595
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.";
|
|
596
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 }));
|
|
597
598
|
};
|
|
598
599
|
|
|
599
|
-
function Stack$
|
|
600
|
+
function Stack$4(props) {
|
|
600
601
|
if (props.items.length === 0) {
|
|
601
602
|
return null;
|
|
602
603
|
}
|
|
@@ -644,28 +645,28 @@ function useSortableData(items, config = { key: "", direction: null }) {
|
|
|
644
645
|
return { items: sortedItems, requestSort, sortConfig };
|
|
645
646
|
}
|
|
646
647
|
|
|
647
|
-
var __defProp$
|
|
648
|
-
var __defProps$
|
|
649
|
-
var __getOwnPropDescs$
|
|
650
|
-
var __getOwnPropSymbols$
|
|
651
|
-
var __hasOwnProp$
|
|
652
|
-
var __propIsEnum$
|
|
653
|
-
var __defNormalProp$
|
|
654
|
-
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) => {
|
|
655
656
|
for (var prop in b || (b = {}))
|
|
656
|
-
if (__hasOwnProp$
|
|
657
|
-
__defNormalProp$
|
|
658
|
-
if (__getOwnPropSymbols$
|
|
659
|
-
for (var prop of __getOwnPropSymbols$
|
|
660
|
-
if (__propIsEnum$
|
|
661
|
-
__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]);
|
|
662
663
|
}
|
|
663
664
|
return a;
|
|
664
665
|
};
|
|
665
|
-
var __spreadProps$
|
|
666
|
-
function Table$
|
|
666
|
+
var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
|
|
667
|
+
function Table$k(props) {
|
|
667
668
|
const preparedItems = React.useMemo(() => {
|
|
668
|
-
return props.items.map((item) => __spreadProps$
|
|
669
|
+
return props.items.map((item) => __spreadProps$8(__spreadValues$b({}, item), {
|
|
669
670
|
status: item.isComplete ? 1 : 0
|
|
670
671
|
}));
|
|
671
672
|
}, [props.items]);
|
|
@@ -711,13 +712,13 @@ function Table$j(props) {
|
|
|
711
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"))
|
|
712
713
|
}],
|
|
713
714
|
rowExpansion: {
|
|
714
|
-
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$
|
|
715
|
+
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$4, { items: record.lessons })
|
|
715
716
|
}
|
|
716
717
|
}
|
|
717
718
|
));
|
|
718
719
|
}
|
|
719
720
|
|
|
720
|
-
function Table$
|
|
721
|
+
function Table$j(props) {
|
|
721
722
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
722
723
|
if (props.items.length === 0) {
|
|
723
724
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -762,7 +763,7 @@ function Table$i(props) {
|
|
|
762
763
|
));
|
|
763
764
|
}
|
|
764
765
|
|
|
765
|
-
const useStyles$
|
|
766
|
+
const useStyles$q = createStyles((theme) => ({
|
|
766
767
|
title: {
|
|
767
768
|
fontSize: 34,
|
|
768
769
|
fontWeight: 900,
|
|
@@ -775,12 +776,12 @@ const useStyles$o = createStyles((theme) => ({
|
|
|
775
776
|
}
|
|
776
777
|
}));
|
|
777
778
|
const Badge = (props) => {
|
|
778
|
-
const { classes } = useStyles$
|
|
779
|
+
const { classes } = useStyles$q();
|
|
779
780
|
const [tab, setTab] = useState("lessons");
|
|
780
781
|
const numberOfStudents = props.students.length;
|
|
781
782
|
const numberOfBadges = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
|
|
782
783
|
numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length / numberOfStudents : 0;
|
|
783
|
-
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(
|
|
784
785
|
Badge$1,
|
|
785
786
|
{
|
|
786
787
|
variant: "filled",
|
|
@@ -788,14 +789,14 @@ const Badge = (props) => {
|
|
|
788
789
|
size: "lg"
|
|
789
790
|
},
|
|
790
791
|
"Back"
|
|
791
|
-
)), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$
|
|
792
|
-
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,
|
|
793
794
|
{
|
|
794
795
|
href: props.href,
|
|
795
796
|
onCopyLinkClick: props.onCopyLinkClick,
|
|
796
797
|
onExportDataClick: props.onExportDataClick
|
|
797
798
|
}
|
|
798
|
-
))))), /* @__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: [
|
|
799
800
|
{
|
|
800
801
|
title: props.trial ? "LESSONS SUBMITTED" : "BADGE COMPLETION",
|
|
801
802
|
value: props.trial ? props.lessonsCompleted || 0 : numberOfBadges,
|
|
@@ -816,7 +817,7 @@ const Badge = (props) => {
|
|
|
816
817
|
return { value: g.classId, label: g.name };
|
|
817
818
|
})
|
|
818
819
|
}
|
|
819
|
-
), /* @__PURE__ */ React.createElement(Stack$
|
|
820
|
+
), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, !props.trial && /* @__PURE__ */ React.createElement(
|
|
820
821
|
Tabs,
|
|
821
822
|
{
|
|
822
823
|
value: tab,
|
|
@@ -827,13 +828,13 @@ const Badge = (props) => {
|
|
|
827
828
|
onChange: setTab
|
|
828
829
|
}
|
|
829
830
|
), (!!props.trial || tab === "lessons") && /* @__PURE__ */ React.createElement(
|
|
830
|
-
Table$
|
|
831
|
+
Table$j,
|
|
831
832
|
{
|
|
832
833
|
loading: props.loading,
|
|
833
834
|
items: props.lessons
|
|
834
835
|
}
|
|
835
836
|
), !props.trial && tab === "students" && /* @__PURE__ */ React.createElement(
|
|
836
|
-
Table$
|
|
837
|
+
Table$k,
|
|
837
838
|
{
|
|
838
839
|
loading: props.loading,
|
|
839
840
|
items: props.students
|
|
@@ -841,7 +842,7 @@ const Badge = (props) => {
|
|
|
841
842
|
)))))));
|
|
842
843
|
};
|
|
843
844
|
|
|
844
|
-
function Table$
|
|
845
|
+
function Table$i(props) {
|
|
845
846
|
if (props.items.length === 0) {
|
|
846
847
|
return /* @__PURE__ */ React.createElement(
|
|
847
848
|
PlaceholderBanner,
|
|
@@ -870,10 +871,10 @@ function Table$h(props) {
|
|
|
870
871
|
},
|
|
871
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)))
|
|
872
873
|
))));
|
|
873
|
-
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)));
|
|
874
875
|
}
|
|
875
876
|
|
|
876
|
-
const useStyles$
|
|
877
|
+
const useStyles$p = createStyles((theme) => ({
|
|
877
878
|
title: {
|
|
878
879
|
fontSize: 34,
|
|
879
880
|
fontWeight: 900,
|
|
@@ -886,8 +887,8 @@ const useStyles$n = createStyles((theme) => ({
|
|
|
886
887
|
}
|
|
887
888
|
}));
|
|
888
889
|
const Badges = (props) => {
|
|
889
|
-
const { classes } = useStyles$
|
|
890
|
-
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(
|
|
891
892
|
Autocomplete,
|
|
892
893
|
{
|
|
893
894
|
placeholder: "Search for a badge that fits your needs",
|
|
@@ -895,7 +896,7 @@ const Badges = (props) => {
|
|
|
895
896
|
onChange: props.onAutocompleteChange
|
|
896
897
|
}
|
|
897
898
|
), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(
|
|
898
|
-
Table$
|
|
899
|
+
Table$i,
|
|
899
900
|
{
|
|
900
901
|
loading: props.loading,
|
|
901
902
|
items: props.badges
|
|
@@ -903,7 +904,7 @@ const Badges = (props) => {
|
|
|
903
904
|
))));
|
|
904
905
|
};
|
|
905
906
|
|
|
906
|
-
function Table$
|
|
907
|
+
function Table$h(props) {
|
|
907
908
|
if (props.items.length === 0) {
|
|
908
909
|
return /* @__PURE__ */ React.createElement(
|
|
909
910
|
PlaceholderBanner,
|
|
@@ -916,7 +917,7 @@ function Table$g(props) {
|
|
|
916
917
|
);
|
|
917
918
|
}
|
|
918
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)));
|
|
919
|
-
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)));
|
|
920
921
|
}
|
|
921
922
|
|
|
922
923
|
const units = [
|
|
@@ -943,7 +944,7 @@ function relativeTimeFromElapsed(elapsed) {
|
|
|
943
944
|
return "";
|
|
944
945
|
}
|
|
945
946
|
|
|
946
|
-
function Table$
|
|
947
|
+
function Table$g(props) {
|
|
947
948
|
if (props.items.length === 0) {
|
|
948
949
|
return /* @__PURE__ */ React.createElement(
|
|
949
950
|
PlaceholderBanner,
|
|
@@ -956,10 +957,10 @@ function Table$f(props) {
|
|
|
956
957
|
);
|
|
957
958
|
}
|
|
958
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)))));
|
|
959
|
-
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)));
|
|
960
961
|
}
|
|
961
962
|
|
|
962
|
-
function Table$
|
|
963
|
+
function Table$f(props) {
|
|
963
964
|
if (props.items.length === 0) {
|
|
964
965
|
return /* @__PURE__ */ React.createElement(
|
|
965
966
|
PlaceholderBanner,
|
|
@@ -972,10 +973,10 @@ function Table$e(props) {
|
|
|
972
973
|
);
|
|
973
974
|
}
|
|
974
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)));
|
|
975
|
-
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)));
|
|
976
977
|
}
|
|
977
978
|
|
|
978
|
-
function Table$
|
|
979
|
+
function Table$e(props) {
|
|
979
980
|
if (props.items.length === 0) {
|
|
980
981
|
return /* @__PURE__ */ React.createElement(
|
|
981
982
|
PlaceholderBanner,
|
|
@@ -988,10 +989,10 @@ function Table$d(props) {
|
|
|
988
989
|
);
|
|
989
990
|
}
|
|
990
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), "%")));
|
|
991
|
-
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)));
|
|
992
993
|
}
|
|
993
994
|
|
|
994
|
-
function Table$
|
|
995
|
+
function Table$d(props) {
|
|
995
996
|
if (props.items.length === 0) {
|
|
996
997
|
return /* @__PURE__ */ React.createElement(
|
|
997
998
|
PlaceholderBanner,
|
|
@@ -1004,12 +1005,12 @@ function Table$c(props) {
|
|
|
1004
1005
|
);
|
|
1005
1006
|
}
|
|
1006
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), "%")));
|
|
1007
|
-
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)));
|
|
1008
1009
|
}
|
|
1009
1010
|
|
|
1010
1011
|
const Dashboard = (props) => {
|
|
1011
1012
|
const [tab, setTab] = useState("students");
|
|
1012
|
-
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: [
|
|
1013
1014
|
{
|
|
1014
1015
|
title: "# OF STUDENTS",
|
|
1015
1016
|
value: props.students.length
|
|
@@ -1042,7 +1043,7 @@ const Dashboard = (props) => {
|
|
|
1042
1043
|
return { value: g.classId, label: g.name };
|
|
1043
1044
|
})
|
|
1044
1045
|
}
|
|
1045
|
-
), /* @__PURE__ */ React.createElement(Stack$
|
|
1046
|
+
), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
|
|
1046
1047
|
Tabs,
|
|
1047
1048
|
{
|
|
1048
1049
|
value: tab,
|
|
@@ -1056,33 +1057,33 @@ const Dashboard = (props) => {
|
|
|
1056
1057
|
onChange: setTab
|
|
1057
1058
|
}
|
|
1058
1059
|
), tab === "impact" && /* @__PURE__ */ React.createElement(
|
|
1059
|
-
Table$
|
|
1060
|
+
Table$f,
|
|
1060
1061
|
{
|
|
1061
1062
|
loading: props.loading,
|
|
1062
1063
|
items: props.impacts
|
|
1063
1064
|
}
|
|
1064
1065
|
), tab === "reflections" && /* @__PURE__ */ React.createElement(
|
|
1065
|
-
Table$
|
|
1066
|
+
Table$g,
|
|
1066
1067
|
{
|
|
1067
1068
|
loading: props.loading,
|
|
1068
1069
|
items: props.reflections
|
|
1069
1070
|
}
|
|
1070
1071
|
), tab === "badges" && /* @__PURE__ */ React.createElement(
|
|
1071
|
-
Table$
|
|
1072
|
+
Table$e,
|
|
1072
1073
|
{
|
|
1073
1074
|
loading: props.loading,
|
|
1074
1075
|
items: props.badges,
|
|
1075
1076
|
onClick: props.onBadgeClick
|
|
1076
1077
|
}
|
|
1077
1078
|
), tab === "lessons" && /* @__PURE__ */ React.createElement(
|
|
1078
|
-
Table$
|
|
1079
|
+
Table$d,
|
|
1079
1080
|
{
|
|
1080
1081
|
loading: props.loading,
|
|
1081
1082
|
items: props.lessons,
|
|
1082
1083
|
onClick: props.onLessonClick
|
|
1083
1084
|
}
|
|
1084
1085
|
), tab === "students" && /* @__PURE__ */ React.createElement(
|
|
1085
|
-
Table$
|
|
1086
|
+
Table$h,
|
|
1086
1087
|
{
|
|
1087
1088
|
loading: props.loading,
|
|
1088
1089
|
items: props.students,
|
|
@@ -1091,8 +1092,8 @@ const Dashboard = (props) => {
|
|
|
1091
1092
|
)))))));
|
|
1092
1093
|
};
|
|
1093
1094
|
|
|
1094
|
-
const SplitButton$
|
|
1095
|
-
return /* @__PURE__ */ React.createElement(Stack$
|
|
1095
|
+
const SplitButton$4 = (props) => {
|
|
1096
|
+
return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
|
|
1096
1097
|
Button,
|
|
1097
1098
|
{
|
|
1098
1099
|
leftIcon: /* @__PURE__ */ React.createElement(IconPlaylistAdd, { size: 14 }),
|
|
@@ -1116,7 +1117,7 @@ const SplitButton$3 = (props) => {
|
|
|
1116
1117
|
));
|
|
1117
1118
|
};
|
|
1118
1119
|
|
|
1119
|
-
const useStyles$
|
|
1120
|
+
const useStyles$o = createStyles((theme) => ({
|
|
1120
1121
|
th: { padding: "0 !important" },
|
|
1121
1122
|
control: {
|
|
1122
1123
|
width: "100%",
|
|
@@ -1127,11 +1128,11 @@ const useStyles$m = createStyles((theme) => ({
|
|
|
1127
1128
|
}
|
|
1128
1129
|
}));
|
|
1129
1130
|
function Th$2({ children, reversed, sorted, onSort }) {
|
|
1130
|
-
const { classes } = useStyles$
|
|
1131
|
+
const { classes } = useStyles$o();
|
|
1131
1132
|
const Icon = sorted ? reversed ? IconChevronUp : IconChevronDown : IconSelector;
|
|
1132
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 })))));
|
|
1133
1134
|
}
|
|
1134
|
-
function Table$
|
|
1135
|
+
function Table$c(props) {
|
|
1135
1136
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
1136
1137
|
if (props.items.length === 0) {
|
|
1137
1138
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -1161,7 +1162,7 @@ function Table$b(props) {
|
|
|
1161
1162
|
data: [{ value: "student", label: "Student" }, { value: "educator", label: "Educator" }]
|
|
1162
1163
|
}
|
|
1163
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 }))))));
|
|
1164
|
-
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(
|
|
1165
1166
|
Th$2,
|
|
1166
1167
|
{
|
|
1167
1168
|
sorted: sortConfig.key === "givenName",
|
|
@@ -1212,26 +1213,26 @@ function Table$b(props) {
|
|
|
1212
1213
|
), /* @__PURE__ */ React.createElement("th", null), " ")), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
1213
1214
|
}
|
|
1214
1215
|
|
|
1215
|
-
var __defProp$
|
|
1216
|
-
var __defProps$
|
|
1217
|
-
var __getOwnPropDescs$
|
|
1218
|
-
var __getOwnPropSymbols$
|
|
1219
|
-
var __hasOwnProp$
|
|
1220
|
-
var __propIsEnum$
|
|
1221
|
-
var __defNormalProp$
|
|
1222
|
-
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) => {
|
|
1223
1224
|
for (var prop in b || (b = {}))
|
|
1224
|
-
if (__hasOwnProp$
|
|
1225
|
-
__defNormalProp$
|
|
1226
|
-
if (__getOwnPropSymbols$
|
|
1227
|
-
for (var prop of __getOwnPropSymbols$
|
|
1228
|
-
if (__propIsEnum$
|
|
1229
|
-
__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]);
|
|
1230
1231
|
}
|
|
1231
1232
|
return a;
|
|
1232
1233
|
};
|
|
1233
|
-
var __spreadProps$
|
|
1234
|
-
const useStyles$
|
|
1234
|
+
var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
|
|
1235
|
+
const useStyles$n = createStyles((theme) => ({
|
|
1235
1236
|
title: {
|
|
1236
1237
|
fontSize: 34,
|
|
1237
1238
|
fontWeight: 900,
|
|
@@ -1264,7 +1265,7 @@ const useStyles$l = createStyles((theme) => ({
|
|
|
1264
1265
|
}
|
|
1265
1266
|
}));
|
|
1266
1267
|
const Class = (props) => {
|
|
1267
|
-
const { classes } = useStyles$
|
|
1268
|
+
const { classes } = useStyles$n();
|
|
1268
1269
|
const form = useForm({
|
|
1269
1270
|
initialValues: {
|
|
1270
1271
|
classId: "",
|
|
@@ -1296,32 +1297,32 @@ const Class = (props) => {
|
|
|
1296
1297
|
padding: "xl",
|
|
1297
1298
|
size: "xl"
|
|
1298
1299
|
},
|
|
1299
|
-
/* @__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(() => {
|
|
1300
1301
|
const values = form.values;
|
|
1301
1302
|
form.reset();
|
|
1302
1303
|
setOpened(false);
|
|
1303
1304
|
props.onCreateMembers && props.onCreateMembers([values]);
|
|
1304
|
-
}) }, /* @__PURE__ */ React.createElement(Stack$
|
|
1305
|
+
}) }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
|
|
1305
1306
|
TextInput,
|
|
1306
|
-
__spreadValues$
|
|
1307
|
+
__spreadValues$a({
|
|
1307
1308
|
withAsterisk: true,
|
|
1308
1309
|
label: "Email",
|
|
1309
1310
|
placeholder: "Email"
|
|
1310
1311
|
}, form.getInputProps("email"))
|
|
1311
1312
|
), /* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
|
|
1312
1313
|
TextInput,
|
|
1313
|
-
__spreadValues$
|
|
1314
|
+
__spreadValues$a({
|
|
1314
1315
|
label: "Given name",
|
|
1315
1316
|
placeholder: "Given name"
|
|
1316
1317
|
}, form.getInputProps("givenName"))
|
|
1317
1318
|
), /* @__PURE__ */ React.createElement(
|
|
1318
1319
|
TextInput,
|
|
1319
|
-
__spreadValues$
|
|
1320
|
+
__spreadValues$a({
|
|
1320
1321
|
label: "Family name",
|
|
1321
1322
|
placeholder: "Family name"
|
|
1322
1323
|
}, form.getInputProps("familyName"))
|
|
1323
1324
|
)), /* @__PURE__ */ React.createElement(Button, { type: "submit", fullWidth: true, mt: "md" }, "Submit"))))
|
|
1324
|
-
), /* @__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(
|
|
1325
1326
|
Badge$1,
|
|
1326
1327
|
{
|
|
1327
1328
|
variant: "filled",
|
|
@@ -1330,13 +1331,13 @@ const Class = (props) => {
|
|
|
1330
1331
|
},
|
|
1331
1332
|
"Back"
|
|
1332
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(
|
|
1333
|
-
SplitButton$
|
|
1334
|
+
SplitButton$4,
|
|
1334
1335
|
{
|
|
1335
1336
|
onAddMembersClick: () => setOpened(true),
|
|
1336
1337
|
onCopyClassLinkClick: props.onCopyLinkClick,
|
|
1337
1338
|
onExportDataClick: props.onExportDataClick
|
|
1338
1339
|
}
|
|
1339
|
-
))), /* @__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: [
|
|
1340
1341
|
{
|
|
1341
1342
|
title: "# OF STUDENTS",
|
|
1342
1343
|
value: props.members.filter((a) => !a.isAdmin).length
|
|
@@ -1355,7 +1356,7 @@ const Class = (props) => {
|
|
|
1355
1356
|
value: props.numberOfLessonsCompleted
|
|
1356
1357
|
}
|
|
1357
1358
|
] }), /* @__PURE__ */ React.createElement(
|
|
1358
|
-
Table$
|
|
1359
|
+
Table$c,
|
|
1359
1360
|
{
|
|
1360
1361
|
loading: props.loading,
|
|
1361
1362
|
items: props.members,
|
|
@@ -1365,7 +1366,7 @@ const Class = (props) => {
|
|
|
1365
1366
|
))))));
|
|
1366
1367
|
};
|
|
1367
1368
|
const DropzoneButton$1 = (props) => {
|
|
1368
|
-
const { classes, theme } = useStyles$
|
|
1369
|
+
const { classes, theme } = useStyles$n();
|
|
1369
1370
|
const openRef = React.useRef(null);
|
|
1370
1371
|
const [loading, setLoading] = React.useState(false);
|
|
1371
1372
|
const onDrop = React.useCallback((acceptedFiles) => {
|
|
@@ -1411,7 +1412,7 @@ const DropzoneButton$1 = (props) => {
|
|
|
1411
1412
|
} }, "Select file"));
|
|
1412
1413
|
};
|
|
1413
1414
|
|
|
1414
|
-
const useStyles$
|
|
1415
|
+
const useStyles$m = createStyles((theme) => ({
|
|
1415
1416
|
th: { padding: "0 !important" },
|
|
1416
1417
|
control: {
|
|
1417
1418
|
width: "100%",
|
|
@@ -1422,11 +1423,11 @@ const useStyles$k = createStyles((theme) => ({
|
|
|
1422
1423
|
}
|
|
1423
1424
|
}));
|
|
1424
1425
|
function Th$1({ children, reversed, sorted, onSort }) {
|
|
1425
|
-
const { classes } = useStyles$
|
|
1426
|
+
const { classes } = useStyles$m();
|
|
1426
1427
|
const Icon = sorted ? reversed ? IconChevronUp : IconChevronDown : IconSelector;
|
|
1427
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 })))));
|
|
1428
1429
|
}
|
|
1429
|
-
function Table$
|
|
1430
|
+
function Table$b(props) {
|
|
1430
1431
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
1431
1432
|
if (props.items.length === 0) {
|
|
1432
1433
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -1448,7 +1449,7 @@ function Table$a(props) {
|
|
|
1448
1449
|
onConfirm: () => props.onDeleteClass(group)
|
|
1449
1450
|
});
|
|
1450
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 }))))));
|
|
1451
|
-
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(
|
|
1452
1453
|
Th$1,
|
|
1453
1454
|
{
|
|
1454
1455
|
sorted: sortConfig.key === "name",
|
|
@@ -1467,23 +1468,23 @@ function Table$a(props) {
|
|
|
1467
1468
|
), /* @__PURE__ */ React.createElement("th", null))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
1468
1469
|
}
|
|
1469
1470
|
|
|
1470
|
-
var __defProp$
|
|
1471
|
-
var __getOwnPropSymbols$
|
|
1472
|
-
var __hasOwnProp$
|
|
1473
|
-
var __propIsEnum$
|
|
1474
|
-
var __defNormalProp$
|
|
1475
|
-
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) => {
|
|
1476
1477
|
for (var prop in b || (b = {}))
|
|
1477
|
-
if (__hasOwnProp$
|
|
1478
|
-
__defNormalProp$
|
|
1479
|
-
if (__getOwnPropSymbols$
|
|
1480
|
-
for (var prop of __getOwnPropSymbols$
|
|
1481
|
-
if (__propIsEnum$
|
|
1482
|
-
__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]);
|
|
1483
1484
|
}
|
|
1484
1485
|
return a;
|
|
1485
1486
|
};
|
|
1486
|
-
const useStyles$
|
|
1487
|
+
const useStyles$l = createStyles((theme) => ({
|
|
1487
1488
|
title: {
|
|
1488
1489
|
fontSize: 34,
|
|
1489
1490
|
fontWeight: 900,
|
|
@@ -1496,7 +1497,7 @@ const useStyles$j = createStyles((theme) => ({
|
|
|
1496
1497
|
}
|
|
1497
1498
|
}));
|
|
1498
1499
|
const Classes = (props) => {
|
|
1499
|
-
const { classes } = useStyles$
|
|
1500
|
+
const { classes } = useStyles$l();
|
|
1500
1501
|
const form = useForm({
|
|
1501
1502
|
initialValues: {
|
|
1502
1503
|
classId: "",
|
|
@@ -1524,28 +1525,28 @@ const Classes = (props) => {
|
|
|
1524
1525
|
form.reset();
|
|
1525
1526
|
setOpened(false);
|
|
1526
1527
|
props.onCreateClass && props.onCreateClass(values);
|
|
1527
|
-
}) }, /* @__PURE__ */ React.createElement(Stack$
|
|
1528
|
+
}) }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
|
|
1528
1529
|
TextInput,
|
|
1529
|
-
__spreadValues$
|
|
1530
|
+
__spreadValues$9({
|
|
1530
1531
|
withAsterisk: true,
|
|
1531
1532
|
label: "Name",
|
|
1532
1533
|
placeholder: "Class name"
|
|
1533
1534
|
}, form.getInputProps("name"))
|
|
1534
1535
|
), /* @__PURE__ */ React.createElement(
|
|
1535
1536
|
TextInput,
|
|
1536
|
-
__spreadValues$
|
|
1537
|
+
__spreadValues$9({
|
|
1537
1538
|
label: "Description",
|
|
1538
1539
|
placeholder: "A class for my first period English students"
|
|
1539
1540
|
}, form.getInputProps("description"))
|
|
1540
1541
|
)), /* @__PURE__ */ React.createElement(Button, { type: "submit", fullWidth: true, mt: "md" }, "Submit"))
|
|
1541
|
-
), /* @__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(
|
|
1542
1543
|
Button,
|
|
1543
1544
|
{
|
|
1544
1545
|
onClick: () => setOpened(true),
|
|
1545
1546
|
leftIcon: /* @__PURE__ */ React.createElement(IconPlaylistAdd, { size: 14 })
|
|
1546
1547
|
},
|
|
1547
1548
|
"Create class"
|
|
1548
|
-
))), /* @__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: [
|
|
1549
1550
|
{
|
|
1550
1551
|
title: "# OF CLASSES",
|
|
1551
1552
|
value: props.classes.length
|
|
@@ -1558,7 +1559,7 @@ const Classes = (props) => {
|
|
|
1558
1559
|
onChange: props.onAutocompleteChange
|
|
1559
1560
|
}
|
|
1560
1561
|
), /* @__PURE__ */ React.createElement(
|
|
1561
|
-
Table$
|
|
1562
|
+
Table$b,
|
|
1562
1563
|
{
|
|
1563
1564
|
loading: props.loading,
|
|
1564
1565
|
items: props.classes,
|
|
@@ -1567,7 +1568,7 @@ const Classes = (props) => {
|
|
|
1567
1568
|
))))));
|
|
1568
1569
|
};
|
|
1569
1570
|
|
|
1570
|
-
const useStyles$
|
|
1571
|
+
const useStyles$k = createStyles((theme) => ({
|
|
1571
1572
|
title: {
|
|
1572
1573
|
fontSize: 34,
|
|
1573
1574
|
fontWeight: 900,
|
|
@@ -1581,11 +1582,11 @@ const useStyles$i = createStyles((theme) => ({
|
|
|
1581
1582
|
}
|
|
1582
1583
|
}));
|
|
1583
1584
|
const UserInfo = (props) => {
|
|
1584
|
-
const { classes } = useStyles$
|
|
1585
|
+
const { classes } = useStyles$k();
|
|
1585
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));
|
|
1586
1587
|
};
|
|
1587
1588
|
|
|
1588
|
-
function Table$
|
|
1589
|
+
function Table$a(props) {
|
|
1589
1590
|
if (props.items.length === 0) {
|
|
1590
1591
|
return /* @__PURE__ */ React.createElement(
|
|
1591
1592
|
PlaceholderBanner,
|
|
@@ -1621,7 +1622,7 @@ function Table$9(props) {
|
|
|
1621
1622
|
));
|
|
1622
1623
|
}
|
|
1623
1624
|
|
|
1624
|
-
function Table$
|
|
1625
|
+
function Table$9(props) {
|
|
1625
1626
|
if (props.items.length === 0) {
|
|
1626
1627
|
return /* @__PURE__ */ React.createElement(
|
|
1627
1628
|
PlaceholderBanner,
|
|
@@ -1634,10 +1635,10 @@ function Table$8(props) {
|
|
|
1634
1635
|
);
|
|
1635
1636
|
}
|
|
1636
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(","))));
|
|
1637
|
-
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)));
|
|
1638
1639
|
}
|
|
1639
1640
|
|
|
1640
|
-
function Table$
|
|
1641
|
+
function Table$8(props) {
|
|
1641
1642
|
if (props.items.length === 0) {
|
|
1642
1643
|
return /* @__PURE__ */ React.createElement(
|
|
1643
1644
|
PlaceholderBanner,
|
|
@@ -1650,14 +1651,14 @@ function Table$7(props) {
|
|
|
1650
1651
|
);
|
|
1651
1652
|
}
|
|
1652
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())));
|
|
1653
|
-
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)));
|
|
1654
1655
|
}
|
|
1655
1656
|
|
|
1656
1657
|
const Student = (props) => {
|
|
1657
1658
|
const [tab, setTab] = useState("badges");
|
|
1658
1659
|
const numberOfBadgesCompleted = props.badges.length > 0 ? props.badges.filter((b) => b.isComplete).length : 0;
|
|
1659
1660
|
const TEMPORARY_numberOfLessonsCompleted = props.lessons.filter((l) => l.isComplete).length;
|
|
1660
|
-
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(
|
|
1661
1662
|
Badge$1,
|
|
1662
1663
|
{
|
|
1663
1664
|
variant: "filled",
|
|
@@ -1672,7 +1673,7 @@ const Student = (props) => {
|
|
|
1672
1673
|
name: props.name,
|
|
1673
1674
|
impactStatement: props.impactStatement
|
|
1674
1675
|
}
|
|
1675
|
-
))), /* @__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: [
|
|
1676
1677
|
{
|
|
1677
1678
|
title: "PROBLEMS SOLVED",
|
|
1678
1679
|
value: props.numberOfProblemsSolved
|
|
@@ -1687,7 +1688,7 @@ const Student = (props) => {
|
|
|
1687
1688
|
value: numberOfBadgesCompleted,
|
|
1688
1689
|
unit: ""
|
|
1689
1690
|
}
|
|
1690
|
-
] }), /* @__PURE__ */ React.createElement(Stack$
|
|
1691
|
+
] }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
|
|
1691
1692
|
Tabs,
|
|
1692
1693
|
{
|
|
1693
1694
|
value: tab,
|
|
@@ -1699,19 +1700,19 @@ const Student = (props) => {
|
|
|
1699
1700
|
onChange: setTab
|
|
1700
1701
|
}
|
|
1701
1702
|
), tab === "badges" && /* @__PURE__ */ React.createElement(
|
|
1702
|
-
Table$
|
|
1703
|
+
Table$a,
|
|
1703
1704
|
{
|
|
1704
1705
|
loading: props.loading,
|
|
1705
1706
|
items: props.badges
|
|
1706
1707
|
}
|
|
1707
1708
|
), tab === "answers" && /* @__PURE__ */ React.createElement(
|
|
1708
|
-
Table$
|
|
1709
|
+
Table$9,
|
|
1709
1710
|
{
|
|
1710
1711
|
loading: props.loading,
|
|
1711
1712
|
items: props.answers
|
|
1712
1713
|
}
|
|
1713
1714
|
), tab === "reflections" && /* @__PURE__ */ React.createElement(
|
|
1714
|
-
Table$
|
|
1715
|
+
Table$8,
|
|
1715
1716
|
{
|
|
1716
1717
|
loading: props.loading,
|
|
1717
1718
|
items: props.reflections
|
|
@@ -1719,7 +1720,7 @@ const Student = (props) => {
|
|
|
1719
1720
|
))))));
|
|
1720
1721
|
};
|
|
1721
1722
|
|
|
1722
|
-
const useStyles$
|
|
1723
|
+
const useStyles$j = createStyles((theme, props) => {
|
|
1723
1724
|
const from = props.from || "blue";
|
|
1724
1725
|
const to = props.to || "green";
|
|
1725
1726
|
return {
|
|
@@ -1747,7 +1748,7 @@ const useStyles$h = createStyles((theme, props) => {
|
|
|
1747
1748
|
};
|
|
1748
1749
|
});
|
|
1749
1750
|
function CardGradient(props) {
|
|
1750
|
-
const { classes } = useStyles$
|
|
1751
|
+
const { classes } = useStyles$j(props);
|
|
1751
1752
|
const from = props.from || "blue";
|
|
1752
1753
|
const to = props.to || "green";
|
|
1753
1754
|
const icon = props.icon || /* @__PURE__ */ React.createElement(IconColorSwatch, { size: 28, stroke: 1.5 });
|
|
@@ -1763,35 +1764,35 @@ function CardGradient(props) {
|
|
|
1763
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));
|
|
1764
1765
|
}
|
|
1765
1766
|
|
|
1766
|
-
var __defProp$
|
|
1767
|
-
var __getOwnPropSymbols$
|
|
1768
|
-
var __hasOwnProp$
|
|
1769
|
-
var __propIsEnum$
|
|
1770
|
-
var __defNormalProp$
|
|
1771
|
-
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) => {
|
|
1772
1773
|
for (var prop in b || (b = {}))
|
|
1773
|
-
if (__hasOwnProp$
|
|
1774
|
-
__defNormalProp$
|
|
1775
|
-
if (__getOwnPropSymbols$
|
|
1776
|
-
for (var prop of __getOwnPropSymbols$
|
|
1777
|
-
if (__propIsEnum$
|
|
1778
|
-
__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]);
|
|
1779
1780
|
}
|
|
1780
1781
|
return a;
|
|
1781
1782
|
};
|
|
1782
1783
|
var __objRest$1 = (source, exclude) => {
|
|
1783
1784
|
var target = {};
|
|
1784
1785
|
for (var prop in source)
|
|
1785
|
-
if (__hasOwnProp$
|
|
1786
|
+
if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
1786
1787
|
target[prop] = source[prop];
|
|
1787
|
-
if (source != null && __getOwnPropSymbols$
|
|
1788
|
-
for (var prop of __getOwnPropSymbols$
|
|
1789
|
-
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))
|
|
1790
1791
|
target[prop] = source[prop];
|
|
1791
1792
|
}
|
|
1792
1793
|
return target;
|
|
1793
1794
|
};
|
|
1794
|
-
const useStyles$
|
|
1795
|
+
const useStyles$i = createStyles((theme) => ({
|
|
1795
1796
|
card: {
|
|
1796
1797
|
height: 240,
|
|
1797
1798
|
backgroundSize: "cover",
|
|
@@ -1836,7 +1837,7 @@ const TenantBanner = (_a) => {
|
|
|
1836
1837
|
"className",
|
|
1837
1838
|
"code"
|
|
1838
1839
|
]);
|
|
1839
|
-
const { classes, cx, theme } = useStyles$
|
|
1840
|
+
const { classes, cx, theme } = useStyles$i();
|
|
1840
1841
|
const handleCopy = async () => {
|
|
1841
1842
|
if (!code)
|
|
1842
1843
|
return;
|
|
@@ -1853,9 +1854,9 @@ const TenantBanner = (_a) => {
|
|
|
1853
1854
|
};
|
|
1854
1855
|
return /* @__PURE__ */ React.createElement(
|
|
1855
1856
|
Card,
|
|
1856
|
-
__spreadValues$
|
|
1857
|
+
__spreadValues$8({
|
|
1857
1858
|
radius: "md",
|
|
1858
|
-
style: __spreadValues$
|
|
1859
|
+
style: __spreadValues$8({ backgroundImage: `url(${image})` }, style),
|
|
1859
1860
|
className: cx(classes.card, className)
|
|
1860
1861
|
}, others),
|
|
1861
1862
|
/* @__PURE__ */ React.createElement(
|
|
@@ -1884,7 +1885,7 @@ const TenantBanner = (_a) => {
|
|
|
1884
1885
|
};
|
|
1885
1886
|
|
|
1886
1887
|
const Home = (props) => {
|
|
1887
|
-
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(
|
|
1888
1889
|
UserInfo,
|
|
1889
1890
|
{
|
|
1890
1891
|
variant: "compact",
|
|
@@ -1934,10 +1935,17 @@ const Home = (props) => {
|
|
|
1934
1935
|
description: "Bite-sized activities and learning experiences accelerating students achievement",
|
|
1935
1936
|
onClick: props.onLessonsClick
|
|
1936
1937
|
}
|
|
1938
|
+
)), /* @__PURE__ */ React.createElement(Grid.Col, null, /* @__PURE__ */ React.createElement(
|
|
1939
|
+
CardGradient,
|
|
1940
|
+
{
|
|
1941
|
+
title: "File Locker",
|
|
1942
|
+
description: "A secure space to view student-submitted work and provide feedback",
|
|
1943
|
+
onClick: props.onFileLockerClick
|
|
1944
|
+
}
|
|
1937
1945
|
)))));
|
|
1938
1946
|
};
|
|
1939
1947
|
|
|
1940
|
-
function Table$
|
|
1948
|
+
function Table$7(props) {
|
|
1941
1949
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
1942
1950
|
if (props.items.length === 0) {
|
|
1943
1951
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -1969,7 +1977,7 @@ function Table$6(props) {
|
|
|
1969
1977
|
));
|
|
1970
1978
|
}
|
|
1971
1979
|
|
|
1972
|
-
const useStyles$
|
|
1980
|
+
const useStyles$h = createStyles((theme) => ({
|
|
1973
1981
|
button: {
|
|
1974
1982
|
borderTopRightRadius: 0,
|
|
1975
1983
|
borderBottomRightRadius: 0,
|
|
@@ -1983,10 +1991,10 @@ const useStyles$f = createStyles((theme) => ({
|
|
|
1983
1991
|
borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
|
|
1984
1992
|
}
|
|
1985
1993
|
}));
|
|
1986
|
-
const SplitButton$
|
|
1987
|
-
const { classes, theme } = useStyles$
|
|
1994
|
+
const SplitButton$3 = (props) => {
|
|
1995
|
+
const { classes, theme } = useStyles$h();
|
|
1988
1996
|
theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
1989
|
-
return /* @__PURE__ */ React.createElement(Stack$
|
|
1997
|
+
return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
|
|
1990
1998
|
Button,
|
|
1991
1999
|
{
|
|
1992
2000
|
component: Link,
|
|
@@ -2013,36 +2021,36 @@ const SplitButton$2 = (props) => {
|
|
|
2013
2021
|
));
|
|
2014
2022
|
};
|
|
2015
2023
|
|
|
2016
|
-
function Stack$
|
|
2024
|
+
function Stack$3(props) {
|
|
2017
2025
|
if (props.items.length === 0) {
|
|
2018
2026
|
return null;
|
|
2019
2027
|
}
|
|
2020
|
-
const rows = props.items.map((row) => /* @__PURE__ */ React.createElement(Stack$
|
|
2021
|
-
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)));
|
|
2022
2030
|
}
|
|
2023
2031
|
|
|
2024
|
-
var __defProp$
|
|
2025
|
-
var __defProps$
|
|
2026
|
-
var __getOwnPropDescs$
|
|
2027
|
-
var __getOwnPropSymbols$
|
|
2028
|
-
var __hasOwnProp$
|
|
2029
|
-
var __propIsEnum$
|
|
2030
|
-
var __defNormalProp$
|
|
2031
|
-
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) => {
|
|
2032
2040
|
for (var prop in b || (b = {}))
|
|
2033
|
-
if (__hasOwnProp$
|
|
2034
|
-
__defNormalProp$
|
|
2035
|
-
if (__getOwnPropSymbols$
|
|
2036
|
-
for (var prop of __getOwnPropSymbols$
|
|
2037
|
-
if (__propIsEnum$
|
|
2038
|
-
__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]);
|
|
2039
2047
|
}
|
|
2040
2048
|
return a;
|
|
2041
2049
|
};
|
|
2042
|
-
var __spreadProps$
|
|
2043
|
-
function Table$
|
|
2050
|
+
var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
|
|
2051
|
+
function Table$6(props) {
|
|
2044
2052
|
const preparedItems = React.useMemo(() => {
|
|
2045
|
-
return props.items.map((item) => __spreadProps$
|
|
2053
|
+
return props.items.map((item) => __spreadProps$6(__spreadValues$7({}, item), {
|
|
2046
2054
|
status: item.isComplete ? 2 : item.isStarted ? 1 : 0
|
|
2047
2055
|
}));
|
|
2048
2056
|
}, [props.items]);
|
|
@@ -2088,13 +2096,13 @@ function Table$5(props) {
|
|
|
2088
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"))
|
|
2089
2097
|
}],
|
|
2090
2098
|
rowExpansion: {
|
|
2091
|
-
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$
|
|
2099
|
+
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$3, { href: record.href, items: record.answers })
|
|
2092
2100
|
}
|
|
2093
2101
|
}
|
|
2094
2102
|
));
|
|
2095
2103
|
}
|
|
2096
2104
|
|
|
2097
|
-
function Stack$
|
|
2105
|
+
function Stack$2(props) {
|
|
2098
2106
|
const primaryAxis = React.useMemo(
|
|
2099
2107
|
() => ({
|
|
2100
2108
|
position: "left",
|
|
@@ -2134,7 +2142,7 @@ function Stack$1(props) {
|
|
|
2134
2142
|
labelMap[r] = labelMap[r] ? labelMap[r] + 1 : 1;
|
|
2135
2143
|
}
|
|
2136
2144
|
}));
|
|
2137
|
-
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(
|
|
2138
2146
|
Chart,
|
|
2139
2147
|
{
|
|
2140
2148
|
options: {
|
|
@@ -2153,16 +2161,16 @@ function Stack$1(props) {
|
|
|
2153
2161
|
}
|
|
2154
2162
|
))));
|
|
2155
2163
|
}
|
|
2156
|
-
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) => {
|
|
2157
2165
|
const answerText = a.join("\n");
|
|
2158
2166
|
return /* @__PURE__ */ React.createElement(Card, { key: answerText, p: 5, radius: 0, bg: "gray.0" }, /* @__PURE__ */ React.createElement(Text, null, answerText));
|
|
2159
2167
|
})))));
|
|
2160
2168
|
});
|
|
2161
|
-
return /* @__PURE__ */ React.createElement(Stack$
|
|
2169
|
+
return /* @__PURE__ */ React.createElement(Stack$5, { py: 4, spacing: 10, sx: { minWidth: 700 } }, rows);
|
|
2162
2170
|
}
|
|
2163
2171
|
const truncateWithEllipses = (text, max) => text.substr(0, max - 1) + (text.length > max ? "…" : "");
|
|
2164
2172
|
|
|
2165
|
-
const useStyles$
|
|
2173
|
+
const useStyles$g = createStyles((theme) => ({
|
|
2166
2174
|
title: {
|
|
2167
2175
|
fontSize: 34,
|
|
2168
2176
|
fontWeight: 900,
|
|
@@ -2175,7 +2183,7 @@ const useStyles$e = createStyles((theme) => ({
|
|
|
2175
2183
|
}
|
|
2176
2184
|
}));
|
|
2177
2185
|
const Lesson = (props) => {
|
|
2178
|
-
const { classes } = useStyles$
|
|
2186
|
+
const { classes } = useStyles$g();
|
|
2179
2187
|
const [tab, setTab] = useState("question");
|
|
2180
2188
|
const numberOfStudents = props.students.length;
|
|
2181
2189
|
const numberOfLessons = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
|
|
@@ -2217,7 +2225,7 @@ const Lesson = (props) => {
|
|
|
2217
2225
|
{ label: "By student", value: "students" },
|
|
2218
2226
|
{ label: "By reflection", value: "reflections" }
|
|
2219
2227
|
];
|
|
2220
|
-
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(
|
|
2221
2229
|
Badge$1,
|
|
2222
2230
|
{
|
|
2223
2231
|
variant: "filled",
|
|
@@ -2225,15 +2233,15 @@ const Lesson = (props) => {
|
|
|
2225
2233
|
size: "lg"
|
|
2226
2234
|
},
|
|
2227
2235
|
"Back"
|
|
2228
|
-
)), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$
|
|
2229
|
-
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,
|
|
2230
2238
|
{
|
|
2231
2239
|
href: props.href,
|
|
2232
2240
|
noExport: props.trial,
|
|
2233
2241
|
onCopyLinkClick: props.onCopyLinkClick,
|
|
2234
2242
|
onExportDataClick: props.onExportDataClick
|
|
2235
2243
|
}
|
|
2236
|
-
))))), /* @__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(
|
|
2237
2245
|
StatsGroup,
|
|
2238
2246
|
{
|
|
2239
2247
|
data: [
|
|
@@ -2259,7 +2267,7 @@ const Lesson = (props) => {
|
|
|
2259
2267
|
return { value: g.classId, label: g.name };
|
|
2260
2268
|
})
|
|
2261
2269
|
}
|
|
2262
|
-
), /* @__PURE__ */ React.createElement(Stack$
|
|
2270
|
+
), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
|
|
2263
2271
|
Tabs,
|
|
2264
2272
|
{
|
|
2265
2273
|
value: tab,
|
|
@@ -2267,19 +2275,19 @@ const Lesson = (props) => {
|
|
|
2267
2275
|
onChange: setTab
|
|
2268
2276
|
}
|
|
2269
2277
|
), tab === "question" && /* @__PURE__ */ React.createElement(
|
|
2270
|
-
Stack$
|
|
2278
|
+
Stack$2,
|
|
2271
2279
|
{
|
|
2272
2280
|
loading: props.loading,
|
|
2273
2281
|
items: props.questions
|
|
2274
2282
|
}
|
|
2275
2283
|
), tab === "reflections" && /* @__PURE__ */ React.createElement(
|
|
2276
|
-
Table$
|
|
2284
|
+
Table$7,
|
|
2277
2285
|
{
|
|
2278
2286
|
loading: props.loading,
|
|
2279
2287
|
items: props.reflections
|
|
2280
2288
|
}
|
|
2281
2289
|
), tab === "students" && /* @__PURE__ */ React.createElement(
|
|
2282
|
-
Table$
|
|
2290
|
+
Table$6,
|
|
2283
2291
|
{
|
|
2284
2292
|
loading: props.loading,
|
|
2285
2293
|
items: props.students
|
|
@@ -2287,7 +2295,7 @@ const Lesson = (props) => {
|
|
|
2287
2295
|
)))))));
|
|
2288
2296
|
};
|
|
2289
2297
|
|
|
2290
|
-
function Table$
|
|
2298
|
+
function Table$5(props) {
|
|
2291
2299
|
if (props.items.length === 0) {
|
|
2292
2300
|
return /* @__PURE__ */ React.createElement(
|
|
2293
2301
|
PlaceholderBanner,
|
|
@@ -2316,10 +2324,10 @@ function Table$4(props) {
|
|
|
2316
2324
|
},
|
|
2317
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)))
|
|
2318
2326
|
))));
|
|
2319
|
-
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)));
|
|
2320
2328
|
}
|
|
2321
2329
|
|
|
2322
|
-
const useStyles$
|
|
2330
|
+
const useStyles$f = createStyles((theme) => ({
|
|
2323
2331
|
title: {
|
|
2324
2332
|
fontSize: 34,
|
|
2325
2333
|
fontWeight: 900,
|
|
@@ -2332,8 +2340,8 @@ const useStyles$d = createStyles((theme) => ({
|
|
|
2332
2340
|
}
|
|
2333
2341
|
}));
|
|
2334
2342
|
const Lessons = (props) => {
|
|
2335
|
-
const { classes } = useStyles$
|
|
2336
|
-
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(
|
|
2337
2345
|
Autocomplete,
|
|
2338
2346
|
{
|
|
2339
2347
|
placeholder: "Search for a lesson that fits your needs",
|
|
@@ -2341,7 +2349,7 @@ const Lessons = (props) => {
|
|
|
2341
2349
|
onChange: props.onAutocompleteChange
|
|
2342
2350
|
}
|
|
2343
2351
|
), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(
|
|
2344
|
-
Table$
|
|
2352
|
+
Table$5,
|
|
2345
2353
|
{
|
|
2346
2354
|
loading: props.loading,
|
|
2347
2355
|
items: props.lessons
|
|
@@ -2349,7 +2357,7 @@ const Lessons = (props) => {
|
|
|
2349
2357
|
))));
|
|
2350
2358
|
};
|
|
2351
2359
|
|
|
2352
|
-
const useStyles$
|
|
2360
|
+
const useStyles$e = createStyles((theme) => ({
|
|
2353
2361
|
title: {
|
|
2354
2362
|
fontSize: 22,
|
|
2355
2363
|
fontWeight: 900,
|
|
@@ -2368,7 +2376,7 @@ const useStyles$c = createStyles((theme) => ({
|
|
|
2368
2376
|
}
|
|
2369
2377
|
}));
|
|
2370
2378
|
function AccessCode(props) {
|
|
2371
|
-
const { classes } = useStyles$
|
|
2379
|
+
const { classes } = useStyles$e();
|
|
2372
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(
|
|
2373
2381
|
Anchor,
|
|
2374
2382
|
{
|
|
@@ -2396,7 +2404,7 @@ const monthNames = [
|
|
|
2396
2404
|
"November",
|
|
2397
2405
|
"December"
|
|
2398
2406
|
];
|
|
2399
|
-
const useStyles$
|
|
2407
|
+
const useStyles$d = createStyles((theme) => ({
|
|
2400
2408
|
title: {
|
|
2401
2409
|
fontSize: 34,
|
|
2402
2410
|
fontWeight: 900,
|
|
@@ -2426,8 +2434,8 @@ const useStyles$b = createStyles((theme) => ({
|
|
|
2426
2434
|
}
|
|
2427
2435
|
}));
|
|
2428
2436
|
const Organization = (props) => {
|
|
2429
|
-
const { classes } = useStyles$
|
|
2430
|
-
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(
|
|
2431
2439
|
Badge$1,
|
|
2432
2440
|
{
|
|
2433
2441
|
variant: "filled",
|
|
@@ -2435,7 +2443,7 @@ const Organization = (props) => {
|
|
|
2435
2443
|
size: "lg"
|
|
2436
2444
|
},
|
|
2437
2445
|
"Back"
|
|
2438
|
-
)), /* @__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: [
|
|
2439
2447
|
{
|
|
2440
2448
|
title: "# OF STUDENTS",
|
|
2441
2449
|
value: props.numberOfStudents || 0
|
|
@@ -2452,7 +2460,7 @@ const Organization = (props) => {
|
|
|
2452
2460
|
] }))))));
|
|
2453
2461
|
};
|
|
2454
2462
|
|
|
2455
|
-
const useStyles$
|
|
2463
|
+
const useStyles$c = createStyles((theme) => ({
|
|
2456
2464
|
button: {
|
|
2457
2465
|
borderTopRightRadius: 0,
|
|
2458
2466
|
borderBottomRightRadius: 0,
|
|
@@ -2466,8 +2474,8 @@ const useStyles$a = createStyles((theme) => ({
|
|
|
2466
2474
|
borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
|
|
2467
2475
|
}
|
|
2468
2476
|
}));
|
|
2469
|
-
const SplitButton$
|
|
2470
|
-
const { classes, theme } = useStyles$
|
|
2477
|
+
const SplitButton$2 = (props) => {
|
|
2478
|
+
const { classes, theme } = useStyles$c();
|
|
2471
2479
|
const menuIconColor = theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
2472
2480
|
const hasMenu = !!props.withOrganizationLink;
|
|
2473
2481
|
return /* @__PURE__ */ React.createElement(Group, { noWrap: true, spacing: 0 }, /* @__PURE__ */ React.createElement(
|
|
@@ -2497,7 +2505,7 @@ const SplitButton$1 = (props) => {
|
|
|
2497
2505
|
))));
|
|
2498
2506
|
};
|
|
2499
2507
|
|
|
2500
|
-
function Table$
|
|
2508
|
+
function Table$4(props) {
|
|
2501
2509
|
if (props.items.length === 0) {
|
|
2502
2510
|
return /* @__PURE__ */ React.createElement(
|
|
2503
2511
|
PlaceholderBanner,
|
|
@@ -2526,29 +2534,29 @@ function Table$3(props) {
|
|
|
2526
2534
|
data: [{ value: "student", label: "Student" }, { value: "educator", label: "Educator" }, { value: "admin", label: "Admin" }]
|
|
2527
2535
|
}
|
|
2528
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 }))))));
|
|
2529
|
-
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)));
|
|
2530
2538
|
}
|
|
2531
2539
|
|
|
2532
|
-
var __defProp$
|
|
2533
|
-
var __defProps$
|
|
2534
|
-
var __getOwnPropDescs$
|
|
2535
|
-
var __getOwnPropSymbols$
|
|
2536
|
-
var __hasOwnProp$
|
|
2537
|
-
var __propIsEnum$
|
|
2538
|
-
var __defNormalProp$
|
|
2539
|
-
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) => {
|
|
2540
2548
|
for (var prop in b || (b = {}))
|
|
2541
|
-
if (__hasOwnProp$
|
|
2542
|
-
__defNormalProp$
|
|
2543
|
-
if (__getOwnPropSymbols$
|
|
2544
|
-
for (var prop of __getOwnPropSymbols$
|
|
2545
|
-
if (__propIsEnum$
|
|
2546
|
-
__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]);
|
|
2547
2555
|
}
|
|
2548
2556
|
return a;
|
|
2549
2557
|
};
|
|
2550
|
-
var __spreadProps$
|
|
2551
|
-
const useStyles$
|
|
2558
|
+
var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
|
|
2559
|
+
const useStyles$b = createStyles((theme) => ({
|
|
2552
2560
|
title: {
|
|
2553
2561
|
fontSize: 34,
|
|
2554
2562
|
fontWeight: 900,
|
|
@@ -2578,7 +2586,7 @@ const useStyles$9 = createStyles((theme) => ({
|
|
|
2578
2586
|
}
|
|
2579
2587
|
}));
|
|
2580
2588
|
const People = (props) => {
|
|
2581
|
-
const { classes } = useStyles$
|
|
2589
|
+
const { classes } = useStyles$b();
|
|
2582
2590
|
const form = useForm({
|
|
2583
2591
|
initialValues: {
|
|
2584
2592
|
userId: "",
|
|
@@ -2609,32 +2617,32 @@ const People = (props) => {
|
|
|
2609
2617
|
padding: "xl",
|
|
2610
2618
|
size: "xl"
|
|
2611
2619
|
},
|
|
2612
|
-
/* @__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(() => {
|
|
2613
2621
|
const values = form.values;
|
|
2614
2622
|
form.reset();
|
|
2615
2623
|
setOpened(false);
|
|
2616
2624
|
props.onCreateUsers && props.onCreateUsers([values]);
|
|
2617
|
-
}) }, /* @__PURE__ */ React.createElement(Stack$
|
|
2625
|
+
}) }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
|
|
2618
2626
|
TextInput,
|
|
2619
|
-
__spreadValues$
|
|
2627
|
+
__spreadValues$6({
|
|
2620
2628
|
withAsterisk: true,
|
|
2621
2629
|
label: "Email",
|
|
2622
2630
|
placeholder: "Email"
|
|
2623
2631
|
}, form.getInputProps("email"))
|
|
2624
2632
|
), /* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
|
|
2625
2633
|
TextInput,
|
|
2626
|
-
__spreadValues$
|
|
2634
|
+
__spreadValues$6({
|
|
2627
2635
|
label: "Given name",
|
|
2628
2636
|
placeholder: "Given name"
|
|
2629
2637
|
}, form.getInputProps("givenName"))
|
|
2630
2638
|
), /* @__PURE__ */ React.createElement(
|
|
2631
2639
|
TextInput,
|
|
2632
|
-
__spreadValues$
|
|
2640
|
+
__spreadValues$6({
|
|
2633
2641
|
label: "Family name",
|
|
2634
2642
|
placeholder: "Family name"
|
|
2635
2643
|
}, form.getInputProps("familyName"))
|
|
2636
2644
|
)), /* @__PURE__ */ React.createElement(Button, { type: "submit", fullWidth: true, mt: "md" }, "Submit"))))
|
|
2637
|
-
), /* @__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(
|
|
2638
2646
|
Badge$1,
|
|
2639
2647
|
{
|
|
2640
2648
|
variant: "filled",
|
|
@@ -2643,13 +2651,13 @@ const People = (props) => {
|
|
|
2643
2651
|
},
|
|
2644
2652
|
"Back"
|
|
2645
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(
|
|
2646
|
-
SplitButton$
|
|
2654
|
+
SplitButton$2,
|
|
2647
2655
|
{
|
|
2648
2656
|
withOrganizationLink: props.withOrganizationLink,
|
|
2649
2657
|
onAddUsersClick: () => setOpened(true),
|
|
2650
2658
|
onCopyOrganizationLinkClick: props.onCopyLinkClick
|
|
2651
2659
|
}
|
|
2652
|
-
))), /* @__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: [
|
|
2653
2661
|
{
|
|
2654
2662
|
title: "# OF PEOPLE",
|
|
2655
2663
|
value: props.users.length
|
|
@@ -2672,7 +2680,7 @@ const People = (props) => {
|
|
|
2672
2680
|
onChange: props.onAutocompleteChange
|
|
2673
2681
|
}
|
|
2674
2682
|
), /* @__PURE__ */ React.createElement(
|
|
2675
|
-
Table$
|
|
2683
|
+
Table$4,
|
|
2676
2684
|
{
|
|
2677
2685
|
loading: props.loading,
|
|
2678
2686
|
items: props.users,
|
|
@@ -2682,7 +2690,7 @@ const People = (props) => {
|
|
|
2682
2690
|
))))));
|
|
2683
2691
|
};
|
|
2684
2692
|
const DropzoneButton = (props) => {
|
|
2685
|
-
const { classes, theme } = useStyles$
|
|
2693
|
+
const { classes, theme } = useStyles$b();
|
|
2686
2694
|
const openRef = React.useRef(null);
|
|
2687
2695
|
const [loading, setLoading] = React.useState(false);
|
|
2688
2696
|
const onDrop = React.useCallback((acceptedFiles) => {
|
|
@@ -2728,7 +2736,7 @@ const DropzoneButton = (props) => {
|
|
|
2728
2736
|
} }, "Select file"));
|
|
2729
2737
|
};
|
|
2730
2738
|
|
|
2731
|
-
const useStyles$
|
|
2739
|
+
const useStyles$a = createStyles((theme) => ({
|
|
2732
2740
|
form: {
|
|
2733
2741
|
backgroundColor: theme.white,
|
|
2734
2742
|
padding: theme.spacing.xl,
|
|
@@ -2791,7 +2799,7 @@ const useStyles$8 = createStyles((theme) => ({
|
|
|
2791
2799
|
}
|
|
2792
2800
|
}));
|
|
2793
2801
|
const StartAnonymousLesson = (props) => {
|
|
2794
|
-
const { classes } = useStyles$
|
|
2802
|
+
const { classes } = useStyles$a();
|
|
2795
2803
|
const [name, setName] = React.useState("");
|
|
2796
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(
|
|
2797
2805
|
TextInput,
|
|
@@ -2815,24 +2823,24 @@ const StartAnonymousLesson = (props) => {
|
|
|
2815
2823
|
))))));
|
|
2816
2824
|
};
|
|
2817
2825
|
|
|
2818
|
-
var __defProp$
|
|
2819
|
-
var __getOwnPropSymbols$
|
|
2820
|
-
var __hasOwnProp$
|
|
2821
|
-
var __propIsEnum$
|
|
2822
|
-
var __defNormalProp$
|
|
2823
|
-
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) => {
|
|
2824
2832
|
for (var prop in b || (b = {}))
|
|
2825
|
-
if (__hasOwnProp$
|
|
2826
|
-
__defNormalProp$
|
|
2827
|
-
if (__getOwnPropSymbols$
|
|
2828
|
-
for (var prop of __getOwnPropSymbols$
|
|
2829
|
-
if (__propIsEnum$
|
|
2830
|
-
__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]);
|
|
2831
2839
|
}
|
|
2832
2840
|
return a;
|
|
2833
2841
|
};
|
|
2834
2842
|
const BadgeGrid = (props) => {
|
|
2835
|
-
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)));
|
|
2836
2844
|
return /* @__PURE__ */ React.createElement(SimpleGrid, { cols: 4, breakpoints: [{ maxWidth: "sm", cols: 1 }, { maxWidth: "md", cols: 3 }] }, badges);
|
|
2837
2845
|
};
|
|
2838
2846
|
function TaskCard(props) {
|
|
@@ -2848,7 +2856,7 @@ function TaskCard(props) {
|
|
|
2848
2856
|
));
|
|
2849
2857
|
}
|
|
2850
2858
|
|
|
2851
|
-
const useStyles$
|
|
2859
|
+
const useStyles$9 = createStyles((theme) => ({
|
|
2852
2860
|
action: {
|
|
2853
2861
|
backgroundColor: "inherit",
|
|
2854
2862
|
":hover": {
|
|
@@ -2867,7 +2875,7 @@ const useStyles$7 = createStyles((theme) => ({
|
|
|
2867
2875
|
}
|
|
2868
2876
|
}));
|
|
2869
2877
|
const TrialHome = (props) => {
|
|
2870
|
-
const { classes } = useStyles$
|
|
2878
|
+
const { classes } = useStyles$9();
|
|
2871
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(
|
|
2872
2880
|
Button,
|
|
2873
2881
|
{
|
|
@@ -2879,7 +2887,7 @@ const TrialHome = (props) => {
|
|
|
2879
2887
|
target: "_blank"
|
|
2880
2888
|
},
|
|
2881
2889
|
"UPGRADE NOW"
|
|
2882
|
-
), /* @__PURE__ */ React.createElement(Stack$
|
|
2890
|
+
), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
|
|
2883
2891
|
UserInfo,
|
|
2884
2892
|
{
|
|
2885
2893
|
variant: "compact",
|
|
@@ -2896,38 +2904,38 @@ const TrialHome = (props) => {
|
|
|
2896
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 })));
|
|
2897
2905
|
};
|
|
2898
2906
|
|
|
2899
|
-
var __defProp$
|
|
2900
|
-
var __defProps$
|
|
2901
|
-
var __getOwnPropDescs$
|
|
2902
|
-
var __getOwnPropSymbols$
|
|
2903
|
-
var __hasOwnProp$
|
|
2904
|
-
var __propIsEnum$
|
|
2905
|
-
var __defNormalProp$
|
|
2906
|
-
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) => {
|
|
2907
2915
|
for (var prop in b || (b = {}))
|
|
2908
|
-
if (__hasOwnProp$
|
|
2909
|
-
__defNormalProp$
|
|
2910
|
-
if (__getOwnPropSymbols$
|
|
2911
|
-
for (var prop of __getOwnPropSymbols$
|
|
2912
|
-
if (__propIsEnum$
|
|
2913
|
-
__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]);
|
|
2914
2922
|
}
|
|
2915
2923
|
return a;
|
|
2916
2924
|
};
|
|
2917
|
-
var __spreadProps$
|
|
2925
|
+
var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
|
|
2918
2926
|
var __objRest = (source, exclude) => {
|
|
2919
2927
|
var target = {};
|
|
2920
2928
|
for (var prop in source)
|
|
2921
|
-
if (__hasOwnProp$
|
|
2929
|
+
if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
2922
2930
|
target[prop] = source[prop];
|
|
2923
|
-
if (source != null && __getOwnPropSymbols$
|
|
2924
|
-
for (var prop of __getOwnPropSymbols$
|
|
2925
|
-
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))
|
|
2926
2934
|
target[prop] = source[prop];
|
|
2927
2935
|
}
|
|
2928
2936
|
return target;
|
|
2929
2937
|
};
|
|
2930
|
-
const useStyles$
|
|
2938
|
+
const useStyles$8 = createStyles((theme, { checked }) => ({
|
|
2931
2939
|
button: {
|
|
2932
2940
|
display: "flex",
|
|
2933
2941
|
alignItems: "center",
|
|
@@ -2969,10 +2977,10 @@ function ImageCheckbox(_a) {
|
|
|
2969
2977
|
finalValue: false,
|
|
2970
2978
|
onChange
|
|
2971
2979
|
});
|
|
2972
|
-
const { classes, cx } = useStyles$
|
|
2980
|
+
const { classes, cx } = useStyles$8({ checked: value });
|
|
2973
2981
|
return /* @__PURE__ */ React.createElement(
|
|
2974
2982
|
UnstyledButton,
|
|
2975
|
-
__spreadProps$
|
|
2983
|
+
__spreadProps$4(__spreadValues$4({}, others), {
|
|
2976
2984
|
onClick: () => handleChange(!value),
|
|
2977
2985
|
className: cx(classes.button, className)
|
|
2978
2986
|
}),
|
|
@@ -2993,7 +3001,7 @@ function ImageCheckbox(_a) {
|
|
|
2993
3001
|
function SelectGrid(props) {
|
|
2994
3002
|
const items = props.items.map((item) => /* @__PURE__ */ React.createElement(
|
|
2995
3003
|
ImageCheckbox,
|
|
2996
|
-
__spreadProps$
|
|
3004
|
+
__spreadProps$4(__spreadValues$4({}, item), {
|
|
2997
3005
|
key: item.title,
|
|
2998
3006
|
onChange: (checked) => props.onChange(item.title, checked)
|
|
2999
3007
|
})
|
|
@@ -3011,26 +3019,26 @@ function SelectGrid(props) {
|
|
|
3011
3019
|
);
|
|
3012
3020
|
}
|
|
3013
3021
|
|
|
3014
|
-
var __defProp$
|
|
3015
|
-
var __defProps$
|
|
3016
|
-
var __getOwnPropDescs$
|
|
3017
|
-
var __getOwnPropSymbols$
|
|
3018
|
-
var __hasOwnProp$
|
|
3019
|
-
var __propIsEnum$
|
|
3020
|
-
var __defNormalProp$
|
|
3021
|
-
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) => {
|
|
3022
3030
|
for (var prop in b || (b = {}))
|
|
3023
|
-
if (__hasOwnProp$
|
|
3024
|
-
__defNormalProp$
|
|
3025
|
-
if (__getOwnPropSymbols$
|
|
3026
|
-
for (var prop of __getOwnPropSymbols$
|
|
3027
|
-
if (__propIsEnum$
|
|
3028
|
-
__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]);
|
|
3029
3037
|
}
|
|
3030
3038
|
return a;
|
|
3031
3039
|
};
|
|
3032
|
-
var __spreadProps$
|
|
3033
|
-
const useStyles$
|
|
3040
|
+
var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
|
|
3041
|
+
const useStyles$7 = createStyles((theme) => ({
|
|
3034
3042
|
wrapper: {
|
|
3035
3043
|
minHeight: "100%",
|
|
3036
3044
|
boxSizing: "border-box",
|
|
@@ -3093,7 +3101,7 @@ const OPTIONS = [
|
|
|
3093
3101
|
{ description: "project-based learning", title: "Project-Based Learning", icon: IconTools }
|
|
3094
3102
|
];
|
|
3095
3103
|
const TrialRegistration = (props) => {
|
|
3096
|
-
const { classes } = useStyles$
|
|
3104
|
+
const { classes } = useStyles$7();
|
|
3097
3105
|
const [firstName, setFirstName] = React.useState("");
|
|
3098
3106
|
const [lastName, setLastName] = React.useState("");
|
|
3099
3107
|
const [organization, setOrganization] = React.useState({ organizationId: "", displayName: "" });
|
|
@@ -3139,7 +3147,7 @@ const TrialRegistration = (props) => {
|
|
|
3139
3147
|
label: "School/Organization Name",
|
|
3140
3148
|
placeholder: "What's the name of your school?",
|
|
3141
3149
|
data: props.organizations.map((o) => {
|
|
3142
|
-
return __spreadProps$
|
|
3150
|
+
return __spreadProps$3(__spreadValues$3({}, o), { value: o.displayName });
|
|
3143
3151
|
}),
|
|
3144
3152
|
onItemSubmit: (item) => setOrganization({ organizationId: item.organizationId, displayName: item.displayName }),
|
|
3145
3153
|
onChange: (next) => {
|
|
@@ -3151,7 +3159,7 @@ const TrialRegistration = (props) => {
|
|
|
3151
3159
|
SelectGrid,
|
|
3152
3160
|
{
|
|
3153
3161
|
items: OPTIONS,
|
|
3154
|
-
onChange: (e, checked) => setInterests(__spreadProps$
|
|
3162
|
+
onChange: (e, checked) => setInterests(__spreadProps$3(__spreadValues$3({}, interests), { [e]: checked }))
|
|
3155
3163
|
}
|
|
3156
3164
|
), /* @__PURE__ */ React.createElement(Group, { position: "right", mt: "md" }, /* @__PURE__ */ React.createElement(
|
|
3157
3165
|
Button,
|
|
@@ -3189,26 +3197,26 @@ const AdminProvider = (props) => {
|
|
|
3189
3197
|
);
|
|
3190
3198
|
};
|
|
3191
3199
|
|
|
3192
|
-
var __defProp$
|
|
3193
|
-
var __defProps$
|
|
3194
|
-
var __getOwnPropDescs$
|
|
3195
|
-
var __getOwnPropSymbols$
|
|
3196
|
-
var __hasOwnProp$
|
|
3197
|
-
var __propIsEnum$
|
|
3198
|
-
var __defNormalProp$
|
|
3199
|
-
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) => {
|
|
3200
3208
|
for (var prop in b || (b = {}))
|
|
3201
|
-
if (__hasOwnProp$
|
|
3202
|
-
__defNormalProp$
|
|
3203
|
-
if (__getOwnPropSymbols$
|
|
3204
|
-
for (var prop of __getOwnPropSymbols$
|
|
3205
|
-
if (__propIsEnum$
|
|
3206
|
-
__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]);
|
|
3207
3215
|
}
|
|
3208
3216
|
return a;
|
|
3209
3217
|
};
|
|
3210
|
-
var __spreadProps$
|
|
3211
|
-
const useStyles$
|
|
3218
|
+
var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
|
|
3219
|
+
const useStyles$6 = createStyles((theme, props) => ({
|
|
3212
3220
|
footer: {
|
|
3213
3221
|
paddingTop: theme.spacing.md,
|
|
3214
3222
|
paddingBottom: theme.spacing.md,
|
|
@@ -3295,7 +3303,7 @@ const useStyles$4 = createStyles((theme, props) => ({
|
|
|
3295
3303
|
}
|
|
3296
3304
|
}));
|
|
3297
3305
|
const App = (props) => {
|
|
3298
|
-
const { classes } = useStyles$
|
|
3306
|
+
const { classes } = useStyles$6(props);
|
|
3299
3307
|
const account = useAccount(props.account, props.accounts, props.onAccountChange);
|
|
3300
3308
|
return /* @__PURE__ */ React.createElement(
|
|
3301
3309
|
AppShell,
|
|
@@ -3303,7 +3311,7 @@ const App = (props) => {
|
|
|
3303
3311
|
padding: "xs",
|
|
3304
3312
|
navbar: props.navbar && /* @__PURE__ */ React.createElement(
|
|
3305
3313
|
Navbar,
|
|
3306
|
-
__spreadProps$
|
|
3314
|
+
__spreadProps$2(__spreadValues$2({}, props.navbar.props), {
|
|
3307
3315
|
onSwitchAccounts: account.accounts && account.accounts.length > 1 ? () => account.setChangeModalOpen(true) : void 0
|
|
3308
3316
|
})
|
|
3309
3317
|
),
|
|
@@ -3390,7 +3398,7 @@ const useAccount = (account, accounts, onAccountChange) => {
|
|
|
3390
3398
|
};
|
|
3391
3399
|
};
|
|
3392
3400
|
|
|
3393
|
-
function Table$
|
|
3401
|
+
function Table$3(props) {
|
|
3394
3402
|
if (props.items.length === 0) {
|
|
3395
3403
|
return /* @__PURE__ */ React.createElement(
|
|
3396
3404
|
PlaceholderBanner,
|
|
@@ -3419,10 +3427,10 @@ function Table$2(props) {
|
|
|
3419
3427
|
},
|
|
3420
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)))
|
|
3421
3429
|
))));
|
|
3422
|
-
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)));
|
|
3423
3431
|
}
|
|
3424
3432
|
|
|
3425
|
-
const useStyles$
|
|
3433
|
+
const useStyles$5 = createStyles((theme) => ({
|
|
3426
3434
|
title: {
|
|
3427
3435
|
fontSize: 34,
|
|
3428
3436
|
fontWeight: 900,
|
|
@@ -3435,9 +3443,9 @@ const useStyles$3 = createStyles((theme) => ({
|
|
|
3435
3443
|
}
|
|
3436
3444
|
}));
|
|
3437
3445
|
const Pathways = (props) => {
|
|
3438
|
-
const { classes } = useStyles$
|
|
3439
|
-
return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$
|
|
3440
|
-
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,
|
|
3441
3449
|
{
|
|
3442
3450
|
loading: props.loading,
|
|
3443
3451
|
items: props.pathways
|
|
@@ -3445,7 +3453,7 @@ const Pathways = (props) => {
|
|
|
3445
3453
|
))));
|
|
3446
3454
|
};
|
|
3447
3455
|
|
|
3448
|
-
const useStyles$
|
|
3456
|
+
const useStyles$4 = createStyles((theme) => ({
|
|
3449
3457
|
button: {
|
|
3450
3458
|
borderTopRightRadius: 0,
|
|
3451
3459
|
borderBottomRightRadius: 0,
|
|
@@ -3459,10 +3467,10 @@ const useStyles$2 = createStyles((theme) => ({
|
|
|
3459
3467
|
borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
|
|
3460
3468
|
}
|
|
3461
3469
|
}));
|
|
3462
|
-
const SplitButton = (props) => {
|
|
3463
|
-
const { classes, theme } = useStyles$
|
|
3470
|
+
const SplitButton$1 = (props) => {
|
|
3471
|
+
const { classes, theme } = useStyles$4();
|
|
3464
3472
|
theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
3465
|
-
return /* @__PURE__ */ React.createElement(Stack$
|
|
3473
|
+
return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
|
|
3466
3474
|
Button,
|
|
3467
3475
|
{
|
|
3468
3476
|
component: Link,
|
|
@@ -3488,7 +3496,7 @@ const SplitButton = (props) => {
|
|
|
3488
3496
|
));
|
|
3489
3497
|
};
|
|
3490
3498
|
|
|
3491
|
-
function Stack(props) {
|
|
3499
|
+
function Stack$1(props) {
|
|
3492
3500
|
if (props.items.length === 0) {
|
|
3493
3501
|
return null;
|
|
3494
3502
|
}
|
|
@@ -3496,29 +3504,29 @@ function Stack(props) {
|
|
|
3496
3504
|
return /* @__PURE__ */ React.createElement(Grid, { grow: true, gutter: "lg", sx: { padding: 20, minWidth: 700 } }, rows);
|
|
3497
3505
|
}
|
|
3498
3506
|
|
|
3499
|
-
var __defProp = Object.defineProperty;
|
|
3500
|
-
var __defProps = Object.defineProperties;
|
|
3501
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
3502
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3503
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
3504
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
3505
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3506
|
-
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) => {
|
|
3507
3515
|
for (var prop in b || (b = {}))
|
|
3508
|
-
if (__hasOwnProp.call(b, prop))
|
|
3509
|
-
__defNormalProp(a, prop, b[prop]);
|
|
3510
|
-
if (__getOwnPropSymbols)
|
|
3511
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
3512
|
-
if (__propIsEnum.call(b, prop))
|
|
3513
|
-
__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]);
|
|
3514
3522
|
}
|
|
3515
3523
|
return a;
|
|
3516
3524
|
};
|
|
3517
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
3518
|
-
function Table$
|
|
3525
|
+
var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
|
|
3526
|
+
function Table$2(props) {
|
|
3519
3527
|
const preparedItems = React.useMemo(() => {
|
|
3520
3528
|
return props.items.map((item) => {
|
|
3521
|
-
const flatItem = __spreadProps(__spreadValues({}, item), {
|
|
3529
|
+
const flatItem = __spreadProps$1(__spreadValues$1({}, item), {
|
|
3522
3530
|
status: item.isComplete ? 1 : 0
|
|
3523
3531
|
});
|
|
3524
3532
|
if (item.categoryPoints) {
|
|
@@ -3586,13 +3594,13 @@ function Table$1(props) {
|
|
|
3586
3594
|
}))
|
|
3587
3595
|
],
|
|
3588
3596
|
rowExpansion: {
|
|
3589
|
-
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack, { items: record.badges })
|
|
3597
|
+
content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$1, { items: record.badges })
|
|
3590
3598
|
}
|
|
3591
3599
|
}
|
|
3592
3600
|
));
|
|
3593
3601
|
}
|
|
3594
3602
|
|
|
3595
|
-
const useStyles$
|
|
3603
|
+
const useStyles$3 = createStyles((theme) => ({
|
|
3596
3604
|
th: { padding: "0 !important" },
|
|
3597
3605
|
control: {
|
|
3598
3606
|
width: "100%",
|
|
@@ -3603,11 +3611,11 @@ const useStyles$1 = createStyles((theme) => ({
|
|
|
3603
3611
|
}
|
|
3604
3612
|
}));
|
|
3605
3613
|
function Th({ children, reversed, sorted, onSort }) {
|
|
3606
|
-
const { classes } = useStyles$
|
|
3614
|
+
const { classes } = useStyles$3();
|
|
3607
3615
|
const Icon = sorted ? reversed ? IconChevronUp : IconChevronDown : IconSelector;
|
|
3608
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 })))));
|
|
3609
3617
|
}
|
|
3610
|
-
function Table(props) {
|
|
3618
|
+
function Table$1(props) {
|
|
3611
3619
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
3612
3620
|
if (props.items.length === 0) {
|
|
3613
3621
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -3624,7 +3632,7 @@ function Table(props) {
|
|
|
3624
3632
|
const percentageCompletion = Math.round((row.percentageCompletion + Number.EPSILON) * 100);
|
|
3625
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, "%"));
|
|
3626
3634
|
});
|
|
3627
|
-
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(
|
|
3628
3636
|
Th,
|
|
3629
3637
|
{
|
|
3630
3638
|
sorted: sortConfig.key === "badgeName",
|
|
@@ -3643,7 +3651,7 @@ function Table(props) {
|
|
|
3643
3651
|
))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
|
|
3644
3652
|
}
|
|
3645
3653
|
|
|
3646
|
-
const useStyles = createStyles((theme) => ({
|
|
3654
|
+
const useStyles$2 = createStyles((theme) => ({
|
|
3647
3655
|
title: {
|
|
3648
3656
|
fontSize: 34,
|
|
3649
3657
|
fontWeight: 900,
|
|
@@ -3656,12 +3664,12 @@ const useStyles = createStyles((theme) => ({
|
|
|
3656
3664
|
}
|
|
3657
3665
|
}));
|
|
3658
3666
|
const Pathway = (props) => {
|
|
3659
|
-
const { classes } = useStyles();
|
|
3667
|
+
const { classes } = useStyles$2();
|
|
3660
3668
|
const [tab, setTab] = useState("badges");
|
|
3661
3669
|
const numberOfStudents = props.students.length;
|
|
3662
3670
|
numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length / numberOfStudents : 0;
|
|
3663
3671
|
const numberOfBadgesEarned = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
|
|
3664
|
-
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(
|
|
3665
3673
|
Badge$1,
|
|
3666
3674
|
{
|
|
3667
3675
|
variant: "filled",
|
|
@@ -3669,14 +3677,14 @@ const Pathway = (props) => {
|
|
|
3669
3677
|
size: "lg"
|
|
3670
3678
|
},
|
|
3671
3679
|
"Back"
|
|
3672
|
-
)), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$
|
|
3673
|
-
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,
|
|
3674
3682
|
{
|
|
3675
3683
|
href: props.href,
|
|
3676
3684
|
onCopyLinkClick: props.onCopyLinkClick,
|
|
3677
3685
|
onExportDataClick: props.onExportDataClick
|
|
3678
3686
|
}
|
|
3679
|
-
))))), /* @__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: [
|
|
3680
3688
|
{
|
|
3681
3689
|
title: props.trial ? "BADGES SUBMITTED" : "PATHWAY COMPLETION",
|
|
3682
3690
|
value: props.trial ? 0 : numberOfBadgesEarned,
|
|
@@ -3697,7 +3705,7 @@ const Pathway = (props) => {
|
|
|
3697
3705
|
return { value: g.classId, label: g.name };
|
|
3698
3706
|
})
|
|
3699
3707
|
}
|
|
3700
|
-
), /* @__PURE__ */ React.createElement(Stack$
|
|
3708
|
+
), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, !props.trial && /* @__PURE__ */ React.createElement(
|
|
3701
3709
|
Tabs,
|
|
3702
3710
|
{
|
|
3703
3711
|
value: tab,
|
|
@@ -3708,13 +3716,13 @@ const Pathway = (props) => {
|
|
|
3708
3716
|
onChange: setTab
|
|
3709
3717
|
}
|
|
3710
3718
|
), (!!props.trial || tab === "badges") && /* @__PURE__ */ React.createElement(
|
|
3711
|
-
Table,
|
|
3719
|
+
Table$1,
|
|
3712
3720
|
{
|
|
3713
3721
|
loading: props.loading,
|
|
3714
3722
|
items: props.badges
|
|
3715
3723
|
}
|
|
3716
3724
|
), !props.trial && tab === "students" && /* @__PURE__ */ React.createElement(
|
|
3717
|
-
Table$
|
|
3725
|
+
Table$2,
|
|
3718
3726
|
{
|
|
3719
3727
|
loading: props.loading,
|
|
3720
3728
|
items: props.students,
|
|
@@ -3723,5 +3731,210 @@ const Pathway = (props) => {
|
|
|
3723
3731
|
)))))));
|
|
3724
3732
|
};
|
|
3725
3733
|
|
|
3726
|
-
|
|
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 };
|
|
3727
3940
|
//# sourceMappingURL=index.mjs.map
|