@mbpockets/shared-ui 0.1.20 → 0.2.0
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/EventPage/index.cjs +208 -121
- package/dist/EventPage/index.cjs.map +1 -1
- package/dist/EventPage/index.mjs +200 -119
- package/dist/EventPage/index.mjs.map +1 -1
- package/dist/EventPage.cjs +208 -121
- package/dist/EventPage.cjs.map +1 -1
- package/dist/EventPage.mjs +200 -119
- package/dist/EventPage.mjs.map +1 -1
- package/dist/PlayerPage/index.cjs.map +1 -1
- package/dist/PlayerPage/index.mjs.map +1 -1
- package/dist/PlayerPage.cjs.map +1 -1
- package/dist/PlayerPage.mjs.map +1 -1
- package/dist/ProfilePage/index.cjs.map +1 -1
- package/dist/ProfilePage/index.mjs.map +1 -1
- package/dist/ProfilePage.cjs.map +1 -1
- package/dist/ProfilePage.mjs.map +1 -1
- package/dist/SearchPage/Filters/index.cjs +149 -43
- package/dist/SearchPage/Filters/index.cjs.map +1 -1
- package/dist/SearchPage/Filters/index.d.cts +1 -2
- package/dist/SearchPage/Filters/index.d.ts +1 -2
- package/dist/SearchPage/Filters/index.mjs +146 -42
- package/dist/SearchPage/Filters/index.mjs.map +1 -1
- package/dist/SearchPage/Filters.cjs +149 -43
- package/dist/SearchPage/Filters.cjs.map +1 -1
- package/dist/SearchPage/Filters.d.cts +38 -3
- package/dist/SearchPage/Filters.d.ts +38 -3
- package/dist/SearchPage/Filters.mjs +146 -42
- package/dist/SearchPage/Filters.mjs.map +1 -1
- package/dist/SearchPage/Results/index.cjs +138 -67
- package/dist/SearchPage/Results/index.cjs.map +1 -1
- package/dist/SearchPage/Results/index.mjs +126 -63
- package/dist/SearchPage/Results/index.mjs.map +1 -1
- package/dist/SearchPage/Results.cjs +138 -67
- package/dist/SearchPage/Results.cjs.map +1 -1
- package/dist/SearchPage/Results.d.cts +21 -12
- package/dist/SearchPage/Results.d.ts +21 -12
- package/dist/SearchPage/Results.mjs +126 -63
- package/dist/SearchPage/Results.mjs.map +1 -1
- package/dist/SearchPage/index.cjs +495 -221
- package/dist/SearchPage/index.cjs.map +1 -1
- package/dist/SearchPage/index.d.cts +1 -1
- package/dist/SearchPage/index.d.ts +1 -1
- package/dist/SearchPage/index.mjs +482 -216
- package/dist/SearchPage/index.mjs.map +1 -1
- package/dist/SearchPage.cjs +495 -221
- package/dist/SearchPage.cjs.map +1 -1
- package/dist/SearchPage.d.cts +78 -7
- package/dist/SearchPage.d.ts +78 -7
- package/dist/SearchPage.mjs +482 -216
- package/dist/SearchPage.mjs.map +1 -1
- package/dist/TablePage/index.cjs +10 -1
- package/dist/TablePage/index.cjs.map +1 -1
- package/dist/TablePage/index.d.cts +2 -2
- package/dist/TablePage/index.d.ts +2 -2
- package/dist/TablePage/index.mjs +10 -2
- package/dist/TablePage/index.mjs.map +1 -1
- package/dist/TablePage.cjs +10 -1
- package/dist/TablePage.cjs.map +1 -1
- package/dist/TablePage.d.cts +7 -2
- package/dist/TablePage.d.ts +7 -2
- package/dist/TablePage.mjs +10 -2
- package/dist/TablePage.mjs.map +1 -1
- package/dist/index.cjs +446 -178
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.mjs +434 -175
- package/dist/index.mjs.map +1 -1
- package/dist/mocks/SearchResults.cjs +22 -15
- package/dist/mocks/SearchResults.cjs.map +1 -1
- package/dist/mocks/SearchResults.d.cts +3 -15
- package/dist/mocks/SearchResults.d.ts +3 -15
- package/dist/mocks/SearchResults.mjs +22 -15
- package/dist/mocks/SearchResults.mjs.map +1 -1
- package/dist/mocks/index.cjs +22 -15
- package/dist/mocks/index.cjs.map +1 -1
- package/dist/mocks/index.d.cts +2 -1
- package/dist/mocks/index.d.ts +2 -1
- package/dist/mocks/index.mjs +22 -15
- package/dist/mocks/index.mjs.map +1 -1
- package/dist/mocks.cjs +22 -15
- package/dist/mocks.cjs.map +1 -1
- package/dist/mocks.d.cts +2 -1
- package/dist/mocks.d.ts +2 -1
- package/dist/mocks.mjs +22 -15
- package/dist/mocks.mjs.map +1 -1
- package/dist/{common → shared}/index.cjs.map +1 -1
- package/dist/{common → shared}/index.d.cts +1 -1
- package/dist/{common → shared}/index.d.ts +1 -1
- package/dist/{common → shared}/index.mjs.map +1 -1
- package/dist/{common.cjs → shared.cjs} +2 -2
- package/dist/{common.cjs.map → shared.cjs.map} +1 -1
- package/dist/{common.css → shared.css} +1 -1
- package/dist/{common.mjs → shared.mjs} +2 -2
- package/dist/{common.mjs.map → shared.mjs.map} +1 -1
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/search.d.cts +23 -1
- package/dist/types/search.d.ts +23 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
- /package/dist/{common → shared}/Modal/index.cjs +0 -0
- /package/dist/{common → shared}/Modal/index.cjs.map +0 -0
- /package/dist/{common → shared}/Modal/index.css +0 -0
- /package/dist/{common → shared}/Modal/index.css.map +0 -0
- /package/dist/{common → shared}/Modal/index.d.cts +0 -0
- /package/dist/{common → shared}/Modal/index.d.ts +0 -0
- /package/dist/{common → shared}/Modal/index.mjs +0 -0
- /package/dist/{common → shared}/Modal/index.mjs.map +0 -0
- /package/dist/{common → shared}/Modal.cjs +0 -0
- /package/dist/{common → shared}/Modal.cjs.map +0 -0
- /package/dist/{common → shared}/Modal.css +0 -0
- /package/dist/{common → shared}/Modal.css.map +0 -0
- /package/dist/{common → shared}/Modal.d.cts +0 -0
- /package/dist/{common → shared}/Modal.d.ts +0 -0
- /package/dist/{common → shared}/Modal.mjs +0 -0
- /package/dist/{common → shared}/Modal.mjs.map +0 -0
- /package/dist/{common → shared}/index.cjs +0 -0
- /package/dist/{common → shared}/index.css +0 -0
- /package/dist/{common → shared}/index.css.map +0 -0
- /package/dist/{common → shared}/index.mjs +0 -0
- /package/dist/{common.css.map → shared.css.map} +0 -0
- /package/dist/{common.d.cts → shared.d.cts} +0 -0
- /package/dist/{common.d.ts → shared.d.ts} +0 -0
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import React7, { createContext, useState, useEffect, useContext, useMemo, useRef } from 'react';
|
|
3
3
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
4
|
-
import { Box, Grid, TextField, Tooltip, IconButton, Button, CircularProgress, Dialog, DialogTitle, DialogContent, DialogActions, Card, CardContent, Typography, FormControl, InputLabel, Select, MenuItem,
|
|
4
|
+
import { Box, Grid, TextField, Tooltip, IconButton, Button, CircularProgress, Dialog, DialogTitle, DialogContent, DialogActions, Card, CardContent, Typography, FormControl, InputLabel, Select, MenuItem, CardMedia, CardHeader, useTheme, useMediaQuery, NoSsr } from '@mui/material';
|
|
5
5
|
import DeleteIcon from '@mui/icons-material/Delete';
|
|
6
6
|
import EditIcon from '@mui/icons-material/Edit';
|
|
7
7
|
import AddIcon from '@mui/icons-material/Add';
|
|
@@ -13,24 +13,30 @@ import Grid8 from '@mui/material/Grid';
|
|
|
13
13
|
import Card10 from '@mui/material/Card';
|
|
14
14
|
import CardContent10 from '@mui/material/CardContent';
|
|
15
15
|
import CardHeader4 from '@mui/material/CardHeader';
|
|
16
|
-
import
|
|
16
|
+
import Divider3 from '@mui/material/Divider';
|
|
17
|
+
import Typography4 from '@mui/material/Typography';
|
|
18
|
+
import Pagination from '@mui/material/Pagination';
|
|
17
19
|
import Avatar from '@mui/material/Avatar';
|
|
18
|
-
import
|
|
20
|
+
import Chip2 from '@mui/material/Chip';
|
|
21
|
+
import LinearProgress from '@mui/material/LinearProgress';
|
|
22
|
+
import PersonIcon from '@mui/icons-material/Person';
|
|
23
|
+
import SupervisorAccountIcon from '@mui/icons-material/SupervisorAccount';
|
|
24
|
+
import TableRestaurantIcon from '@mui/icons-material/TableRestaurant';
|
|
19
25
|
import CalendarTodayIcon from '@mui/icons-material/CalendarToday';
|
|
20
26
|
import LocationOnIcon from '@mui/icons-material/LocationOn';
|
|
21
27
|
import EventIcon from '@mui/icons-material/Event';
|
|
22
28
|
import Autocomplete from '@mui/material/Autocomplete';
|
|
23
29
|
import Popper from '@mui/material/Popper';
|
|
24
|
-
import
|
|
30
|
+
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
31
|
+
import Checkbox from '@mui/material/Checkbox';
|
|
25
32
|
import FormControl2 from '@mui/material/FormControl';
|
|
26
33
|
import RadioGroup from '@mui/material/RadioGroup';
|
|
27
|
-
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
28
34
|
import Radio from '@mui/material/Radio';
|
|
29
35
|
import TextField4 from '@mui/material/TextField';
|
|
30
36
|
import FormGroup from '@mui/material/FormGroup';
|
|
31
|
-
import Checkbox from '@mui/material/Checkbox';
|
|
32
37
|
import Button7 from '@mui/material/Button';
|
|
33
38
|
import SearchIcon from '@mui/icons-material/Search';
|
|
39
|
+
import CircularProgress3 from '@mui/material/CircularProgress';
|
|
34
40
|
import Image2 from 'next/image';
|
|
35
41
|
import ListIcon from '@mui/icons-material/List';
|
|
36
42
|
import SaveIcon from '@mui/icons-material/Save';
|
|
@@ -937,6 +943,14 @@ var generateLink = function(link) {
|
|
|
937
943
|
link.text
|
|
938
944
|
);
|
|
939
945
|
};
|
|
946
|
+
var NextGameLabel = ({ nextGameTime }) => {
|
|
947
|
+
const date = typeof nextGameTime === "string" ? new Date(nextGameTime) : nextGameTime;
|
|
948
|
+
return /* @__PURE__ */ jsxs(Typography, { variant: "caption", sx: { display: "block", mb: 1, color: "primary.main", fontWeight: "bold" }, children: [
|
|
949
|
+
"Next Game: ",
|
|
950
|
+
date.toLocaleString()
|
|
951
|
+
] });
|
|
952
|
+
};
|
|
953
|
+
var NextGameLabel_default = NextGameLabel;
|
|
940
954
|
var BaseSearchResultCard = ({
|
|
941
955
|
result,
|
|
942
956
|
onClick,
|
|
@@ -944,13 +958,19 @@ var BaseSearchResultCard = ({
|
|
|
944
958
|
icon,
|
|
945
959
|
tags
|
|
946
960
|
}) => {
|
|
947
|
-
const handleClick = () => {
|
|
961
|
+
const handleClick = (e) => {
|
|
948
962
|
if (onClick) {
|
|
949
|
-
|
|
963
|
+
if (e.ctrlKey || e.metaKey || e.shiftKey) {
|
|
964
|
+
e.stopPropagation();
|
|
965
|
+
const url = `/${result.type}/${result.id}`;
|
|
966
|
+
window.open(url, "_blank");
|
|
967
|
+
} else {
|
|
968
|
+
onClick(result.id);
|
|
969
|
+
}
|
|
950
970
|
}
|
|
951
971
|
};
|
|
952
972
|
return /* @__PURE__ */ jsx(
|
|
953
|
-
|
|
973
|
+
Card10,
|
|
954
974
|
{
|
|
955
975
|
elevation: 6,
|
|
956
976
|
sx: {
|
|
@@ -963,48 +983,21 @@ var BaseSearchResultCard = ({
|
|
|
963
983
|
},
|
|
964
984
|
marginBottom: 2
|
|
965
985
|
},
|
|
966
|
-
onClick: handleClick,
|
|
967
|
-
children: /* @__PURE__ */ jsxs(
|
|
968
|
-
icon && /* @__PURE__ */ jsx(
|
|
969
|
-
/* @__PURE__ */ jsxs(
|
|
970
|
-
/* @__PURE__ */ jsx(
|
|
986
|
+
onClick: (e) => handleClick(e),
|
|
987
|
+
children: /* @__PURE__ */ jsxs(CardContent10, { sx: { display: "flex", alignItems: "flex-start" }, children: [
|
|
988
|
+
icon && /* @__PURE__ */ jsx(Box2, { sx: { mr: 2, display: "flex", alignItems: "center", pt: 0.5 }, children: icon }),
|
|
989
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { flex: 1 }, children: [
|
|
990
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", sx: { mb: 1 }, children: result.title }),
|
|
991
|
+
result.nextGameTime && /* @__PURE__ */ jsx(NextGameLabel_default, { nextGameTime: result.nextGameTime }),
|
|
992
|
+
result.type === "table" && result.shortDescription ? /* @__PURE__ */ jsx(Typography4, { variant: "body2", sx: { mb: 1 }, children: result.shortDescription }) : null,
|
|
971
993
|
children,
|
|
972
|
-
/* @__PURE__ */ jsx(
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
// Add some padding to prevent clipping of the leftmost tag
|
|
980
|
-
}, children: (() => {
|
|
981
|
-
const MAX_VISIBLE = 5;
|
|
982
|
-
const tagObjs = result.tags.map((tagId) => tags.find((t) => t.id === tagId)).filter((t) => Boolean(t));
|
|
983
|
-
const visible = tagObjs.slice(0, MAX_VISIBLE);
|
|
984
|
-
const hiddenCount = Math.max(tagObjs.length - visible.length, 0);
|
|
985
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
986
|
-
visible.map((tag) => generateTagsDisplay(tag)),
|
|
987
|
-
hiddenCount > 0 && /* @__PURE__ */ jsxs(
|
|
988
|
-
"span",
|
|
989
|
-
{
|
|
990
|
-
className: "inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined",
|
|
991
|
-
style: {
|
|
992
|
-
marginTop: "6px",
|
|
993
|
-
marginRight: "6px",
|
|
994
|
-
marginBottom: "6px",
|
|
995
|
-
background: "#9e9e9e",
|
|
996
|
-
color: "white",
|
|
997
|
-
textShadow: "black 0.2em 0.2em 0.4em"
|
|
998
|
-
},
|
|
999
|
-
children: [
|
|
1000
|
-
"+",
|
|
1001
|
-
hiddenCount,
|
|
1002
|
-
" more"
|
|
1003
|
-
]
|
|
1004
|
-
}
|
|
1005
|
-
)
|
|
1006
|
-
] });
|
|
1007
|
-
})() }) })
|
|
994
|
+
result.type === "table" ? /* @__PURE__ */ jsx(Typography4, { variant: "body1", children: (() => {
|
|
995
|
+
var _a, _b;
|
|
996
|
+
const full = (_b = (_a = result.fullDescription) != null ? _a : result.description) != null ? _b : "";
|
|
997
|
+
const text = full || "";
|
|
998
|
+
return text.length > 200 ? `${text.slice(0, 200).trimEnd()}...` : text;
|
|
999
|
+
})() }) : /* @__PURE__ */ jsx(Typography4, { variant: "body1", children: result.description }),
|
|
1000
|
+
result.tags && result.tags.length > 0 && /* @__PURE__ */ jsx(Box2, { sx: { mt: 1, display: "flex", flexWrap: "wrap", gap: 1 }, children: renderTagsFromIds(result.tags, tags) })
|
|
1008
1001
|
] })
|
|
1009
1002
|
] })
|
|
1010
1003
|
}
|
|
@@ -1059,21 +1052,60 @@ var PlayerResultCard = ({
|
|
|
1059
1052
|
return /* @__PURE__ */ jsx(BaseSearchResultCard_default, { result, onClick, icon: playerIcon, tags });
|
|
1060
1053
|
};
|
|
1061
1054
|
var PlayerResultCard_default = PlayerResultCard;
|
|
1062
|
-
var TableResultCard = ({
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1055
|
+
var TableResultCard = ({
|
|
1056
|
+
result,
|
|
1057
|
+
onClick,
|
|
1058
|
+
tags
|
|
1059
|
+
}) => {
|
|
1060
|
+
const rawCapacity = result.capacity;
|
|
1061
|
+
const hasDefinedCapacity = typeof rawCapacity === "number" && Number.isFinite(rawCapacity) && rawCapacity > 0;
|
|
1062
|
+
const capacity = hasDefinedCapacity ? rawCapacity : 0;
|
|
1063
|
+
const activePlayers = typeof result.numPlayers === "number" ? result.numPlayers : 0;
|
|
1064
|
+
const availableSlots = Math.max(capacity - activePlayers, 0);
|
|
1065
|
+
const hasDM = typeof result.hasDM === "boolean" ? result.hasDM : Boolean(result.dungeonMaster);
|
|
1066
|
+
const occupancyPercentage = hasDefinedCapacity ? activePlayers / capacity * 100 : 100;
|
|
1067
|
+
const tableIcon = /* @__PURE__ */ jsx(
|
|
1068
|
+
TableRestaurantIcon,
|
|
1069
|
+
{
|
|
1070
|
+
sx: {
|
|
1071
|
+
fontSize: 40,
|
|
1072
|
+
color: "primary.main"
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
1075
|
+
);
|
|
1076
|
+
return /* @__PURE__ */ jsx(BaseSearchResultCard_default, { result, onClick, icon: tableIcon, tags, children: /* @__PURE__ */ jsxs(Box2, { sx: { mb: 2 }, children: [
|
|
1077
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: [
|
|
1078
|
+
/* @__PURE__ */ jsxs(Typography4, { variant: "body2", children: [
|
|
1079
|
+
/* @__PURE__ */ jsx("strong", { children: "Players:" }),
|
|
1080
|
+
" ",
|
|
1081
|
+
hasDefinedCapacity ? `${activePlayers}/${capacity}` : activePlayers
|
|
1073
1082
|
] }),
|
|
1074
|
-
|
|
1083
|
+
typeof hasDM === "boolean" && /* @__PURE__ */ jsx(
|
|
1084
|
+
Chip2,
|
|
1085
|
+
{
|
|
1086
|
+
icon: hasDM ? /* @__PURE__ */ jsx(SupervisorAccountIcon, {}) : /* @__PURE__ */ jsx(PersonIcon, {}),
|
|
1087
|
+
label: hasDM ? "DM Present" : "No DM",
|
|
1088
|
+
color: hasDM ? "success" : "warning",
|
|
1089
|
+
size: "small"
|
|
1090
|
+
}
|
|
1091
|
+
)
|
|
1075
1092
|
] }),
|
|
1076
|
-
/* @__PURE__ */ jsx(
|
|
1093
|
+
/* @__PURE__ */ jsx(
|
|
1094
|
+
LinearProgress,
|
|
1095
|
+
{
|
|
1096
|
+
variant: "determinate",
|
|
1097
|
+
value: occupancyPercentage,
|
|
1098
|
+
sx: {
|
|
1099
|
+
height: 10,
|
|
1100
|
+
borderRadius: 5,
|
|
1101
|
+
backgroundColor: "#e0e0e0",
|
|
1102
|
+
"& .MuiLinearProgress-bar": {
|
|
1103
|
+
backgroundColor: hasDefinedCapacity ? availableSlots > 0 ? "#4caf50" : "#f44336" : "#2196f3"
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
),
|
|
1108
|
+
hasDefinedCapacity && /* @__PURE__ */ jsx(Typography4, { variant: "body2", sx: { mt: 0.5, textAlign: "right" }, children: availableSlots > 0 ? `${availableSlots} slot${availableSlots !== 1 ? "s" : ""} available` : "Table full" })
|
|
1077
1109
|
] }) });
|
|
1078
1110
|
};
|
|
1079
1111
|
var TableResultCard_default = TableResultCard;
|
|
@@ -1092,20 +1124,42 @@ var EventResultCard = ({
|
|
|
1092
1124
|
try {
|
|
1093
1125
|
const date = new Date(dateString);
|
|
1094
1126
|
return date.toLocaleDateString("en-US", options);
|
|
1095
|
-
} catch {
|
|
1127
|
+
} catch (error) {
|
|
1096
1128
|
return dateString;
|
|
1097
1129
|
}
|
|
1098
1130
|
};
|
|
1099
1131
|
const formattedDate = result.date ? formatDate(result.date) : "Date TBD";
|
|
1100
1132
|
const location = result.location || "Location TBD";
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1133
|
+
const eventIcon = /* @__PURE__ */ jsx(
|
|
1134
|
+
EventIcon,
|
|
1135
|
+
{
|
|
1136
|
+
sx: {
|
|
1137
|
+
fontSize: 40,
|
|
1138
|
+
color: "primary.main"
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
);
|
|
1142
|
+
return /* @__PURE__ */ jsx(BaseSearchResultCard_default, { result, onClick, icon: eventIcon, tags, children: /* @__PURE__ */ jsxs(Box2, { sx: { mb: 2 }, children: [
|
|
1143
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", alignItems: "center", mb: 1 }, children: [
|
|
1144
|
+
/* @__PURE__ */ jsx(CalendarTodayIcon, { sx: { mr: 1, color: "primary.main" } }),
|
|
1145
|
+
/* @__PURE__ */ jsxs(Typography4, { variant: "body2", children: [
|
|
1146
|
+
/* @__PURE__ */ jsx("strong", { children: "Date:" }),
|
|
1147
|
+
" ",
|
|
1148
|
+
formattedDate
|
|
1149
|
+
] })
|
|
1150
|
+
] }),
|
|
1151
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", alignItems: "center" }, children: [
|
|
1152
|
+
/* @__PURE__ */ jsx(LocationOnIcon, { sx: { mr: 1, color: "primary.main" } }),
|
|
1153
|
+
/* @__PURE__ */ jsxs(Typography4, { variant: "body2", children: [
|
|
1154
|
+
/* @__PURE__ */ jsx("strong", { children: "Location:" }),
|
|
1155
|
+
" ",
|
|
1156
|
+
location
|
|
1157
|
+
] })
|
|
1105
1158
|
] }),
|
|
1106
|
-
/* @__PURE__ */ jsxs(
|
|
1107
|
-
/* @__PURE__ */ jsx(
|
|
1108
|
-
|
|
1159
|
+
result.organizer && /* @__PURE__ */ jsxs(Typography4, { variant: "body2", sx: { mt: 1 }, children: [
|
|
1160
|
+
/* @__PURE__ */ jsx("strong", { children: "Organizer:" }),
|
|
1161
|
+
" ",
|
|
1162
|
+
result.organizer
|
|
1109
1163
|
] })
|
|
1110
1164
|
] }) });
|
|
1111
1165
|
};
|
|
@@ -1113,9 +1167,11 @@ var EventResultCard_default = EventResultCard;
|
|
|
1113
1167
|
var ResultsContainer = ({
|
|
1114
1168
|
results,
|
|
1115
1169
|
onResultClick,
|
|
1116
|
-
tags
|
|
1170
|
+
tags,
|
|
1171
|
+
pagination,
|
|
1172
|
+
onPacketChange
|
|
1117
1173
|
}) => {
|
|
1118
|
-
if (results.length === 0 || !results.map) {
|
|
1174
|
+
if (!results || results.length === 0 || !results.map) {
|
|
1119
1175
|
return /* @__PURE__ */ jsx(Box2, { sx: { textAlign: "center", py: 4 }, children: "No results found. Try adjusting your filters." });
|
|
1120
1176
|
}
|
|
1121
1177
|
const onPlayerClick = (id) => {
|
|
@@ -1127,43 +1183,68 @@ var ResultsContainer = ({
|
|
|
1127
1183
|
const onEventClick = (id) => {
|
|
1128
1184
|
onResultClick == null ? void 0 : onResultClick(id, "event");
|
|
1129
1185
|
};
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1186
|
+
const handlePacketChange = (_event, packet) => {
|
|
1187
|
+
onPacketChange == null ? void 0 : onPacketChange(packet);
|
|
1188
|
+
};
|
|
1189
|
+
const startResult = pagination ? (pagination.currentPacket - 1) * pagination.packetSize + 1 : 1;
|
|
1190
|
+
const endResult = pagination ? Math.min(pagination.currentPacket * pagination.packetSize, pagination.totalResults) : results.length;
|
|
1191
|
+
return /* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", flexDirection: "column", gap: 2 }, children: [
|
|
1192
|
+
pagination && /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: /* @__PURE__ */ jsxs(Typography4, { variant: "body2", color: "text.secondary", children: [
|
|
1193
|
+
"Showing ",
|
|
1194
|
+
startResult,
|
|
1195
|
+
"-",
|
|
1196
|
+
endResult,
|
|
1197
|
+
" of ",
|
|
1198
|
+
pagination.totalResults,
|
|
1199
|
+
" results"
|
|
1200
|
+
] }) }),
|
|
1201
|
+
results.map((result) => {
|
|
1202
|
+
switch (result.type) {
|
|
1203
|
+
case "player":
|
|
1204
|
+
return /* @__PURE__ */ jsx(
|
|
1205
|
+
PlayerResultCard_default,
|
|
1206
|
+
{
|
|
1207
|
+
result,
|
|
1208
|
+
onClick: onPlayerClick,
|
|
1209
|
+
tags
|
|
1210
|
+
},
|
|
1211
|
+
result.id
|
|
1212
|
+
);
|
|
1213
|
+
case "table":
|
|
1214
|
+
return /* @__PURE__ */ jsx(
|
|
1215
|
+
TableResultCard_default,
|
|
1216
|
+
{
|
|
1217
|
+
result,
|
|
1218
|
+
onClick: onTableClick,
|
|
1219
|
+
tags
|
|
1220
|
+
},
|
|
1221
|
+
result.id
|
|
1222
|
+
);
|
|
1223
|
+
case "event":
|
|
1224
|
+
return /* @__PURE__ */ jsx(
|
|
1225
|
+
EventResultCard_default,
|
|
1226
|
+
{
|
|
1227
|
+
result,
|
|
1228
|
+
onClick: onEventClick,
|
|
1229
|
+
tags
|
|
1230
|
+
},
|
|
1231
|
+
result.id
|
|
1232
|
+
);
|
|
1233
|
+
default:
|
|
1234
|
+
console.error(`Unknown result type: ${result.type}`);
|
|
1235
|
+
return null;
|
|
1236
|
+
}
|
|
1237
|
+
}),
|
|
1238
|
+
pagination && pagination.totalPackets > 1 && /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", justifyContent: "center", mt: 4 }, children: /* @__PURE__ */ jsx(
|
|
1239
|
+
Pagination,
|
|
1240
|
+
{
|
|
1241
|
+
count: pagination.totalPackets,
|
|
1242
|
+
page: pagination.currentPacket,
|
|
1243
|
+
onChange: handlePacketChange,
|
|
1244
|
+
color: "primary"
|
|
1245
|
+
}
|
|
1246
|
+
) })
|
|
1247
|
+
] });
|
|
1167
1248
|
};
|
|
1168
1249
|
var ResultsContainer_default = ResultsContainer;
|
|
1169
1250
|
var ScrollableResultsList = ({
|
|
@@ -1181,21 +1262,14 @@ var TablesScrollableList = ({
|
|
|
1181
1262
|
results,
|
|
1182
1263
|
tags,
|
|
1183
1264
|
maxHeight,
|
|
1184
|
-
onResultClick
|
|
1185
|
-
sortBy = "availability"
|
|
1265
|
+
onResultClick
|
|
1186
1266
|
}) => {
|
|
1187
1267
|
const tables = (results || []).filter((r) => (r == null ? void 0 : r.type) === "table");
|
|
1188
|
-
const getAvailableSlots = (r) => {
|
|
1189
|
-
const capacity = typeof r.capacity === "number" ? r.capacity : 0;
|
|
1190
|
-
const playersCount = typeof r.numPlayers === "number" ? r.numPlayers : 0;
|
|
1191
|
-
return Math.max(capacity - playersCount, 0);
|
|
1192
|
-
};
|
|
1193
|
-
const sortedTables = sortBy === "availability" ? [...tables].sort((a, b) => getAvailableSlots(b) - getAvailableSlots(a)) : tables;
|
|
1194
1268
|
const handleClick = (id) => onResultClick == null ? void 0 : onResultClick(id);
|
|
1195
1269
|
return /* @__PURE__ */ jsx(
|
|
1196
1270
|
ScrollableResultsList_default,
|
|
1197
1271
|
{
|
|
1198
|
-
results:
|
|
1272
|
+
results: tables,
|
|
1199
1273
|
tags,
|
|
1200
1274
|
maxHeight,
|
|
1201
1275
|
onResultClick: (id, type) => {
|
|
@@ -1213,8 +1287,8 @@ var EventTablesCard = ({
|
|
|
1213
1287
|
}) => {
|
|
1214
1288
|
return /* @__PURE__ */ jsxs(Card10, { elevation: 6, sx: { width: "100%", boxShadow: "0px 8px 24px rgba(0, 0, 0, 0.15)" }, children: [
|
|
1215
1289
|
/* @__PURE__ */ jsx(CardHeader4, { title: "Tables" }),
|
|
1216
|
-
/* @__PURE__ */ jsx(
|
|
1217
|
-
/* @__PURE__ */ jsx(CardContent10, { children: /* @__PURE__ */ jsx(TablesScrollableList_default, { results: tables, tags, maxHeight, onResultClick: onTableClick
|
|
1290
|
+
/* @__PURE__ */ jsx(Divider3, {}),
|
|
1291
|
+
/* @__PURE__ */ jsx(CardContent10, { children: /* @__PURE__ */ jsx(TablesScrollableList_default, { results: tables, tags, maxHeight, onResultClick: onTableClick }) })
|
|
1218
1292
|
] });
|
|
1219
1293
|
};
|
|
1220
1294
|
var EventTablesCard_default = EventTablesCard;
|
|
@@ -1774,6 +1848,26 @@ function PlayerPageLayout({
|
|
|
1774
1848
|
] }) })
|
|
1775
1849
|
] }) }) });
|
|
1776
1850
|
}
|
|
1851
|
+
var ExpiredTablesFilter = ({
|
|
1852
|
+
includeExpiredTables,
|
|
1853
|
+
onChange
|
|
1854
|
+
}) => {
|
|
1855
|
+
return /* @__PURE__ */ jsx(Box2, { sx: { mt: 2 }, children: /* @__PURE__ */ jsx(
|
|
1856
|
+
FormControlLabel,
|
|
1857
|
+
{
|
|
1858
|
+
control: /* @__PURE__ */ jsx(
|
|
1859
|
+
Checkbox,
|
|
1860
|
+
{
|
|
1861
|
+
checked: includeExpiredTables,
|
|
1862
|
+
onChange: (e) => onChange(e.target.checked),
|
|
1863
|
+
color: "primary"
|
|
1864
|
+
}
|
|
1865
|
+
),
|
|
1866
|
+
label: "Show expired tables"
|
|
1867
|
+
}
|
|
1868
|
+
) });
|
|
1869
|
+
};
|
|
1870
|
+
var ExpiredTablesFilter_default = ExpiredTablesFilter;
|
|
1777
1871
|
var SORT_OPTIONS = [
|
|
1778
1872
|
{ id: "relevance", label: "Relevance" },
|
|
1779
1873
|
{ id: "newest", label: "Newest" },
|
|
@@ -1787,7 +1881,7 @@ var SortOptions = ({
|
|
|
1787
1881
|
onChange == null ? void 0 : onChange(event.target.value);
|
|
1788
1882
|
};
|
|
1789
1883
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1790
|
-
/* @__PURE__ */ jsx(
|
|
1884
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", gutterBottom: true, children: "Sort By" }),
|
|
1791
1885
|
/* @__PURE__ */ jsx(FormControl2, { children: /* @__PURE__ */ jsx(RadioGroup, { defaultValue: defaultValue2, onChange: handleSortChange, children: SORT_OPTIONS.map((option) => /* @__PURE__ */ jsx(
|
|
1792
1886
|
FormControlLabel,
|
|
1793
1887
|
{
|
|
@@ -1802,11 +1896,19 @@ var SortOptions = ({
|
|
|
1802
1896
|
var SortOptions_default = SortOptions;
|
|
1803
1897
|
var TagsFilter = ({
|
|
1804
1898
|
onChange,
|
|
1805
|
-
tags: Tags = []
|
|
1899
|
+
tags: Tags = [],
|
|
1900
|
+
initialSelectedTags
|
|
1806
1901
|
}) => {
|
|
1807
|
-
const [mustHaveTags, setMustHaveTags] = React7.useState([]);
|
|
1808
|
-
const [mustNotHaveTags, setMustNotHaveTags] = React7.useState([]);
|
|
1809
|
-
const [shouldHaveAtLeastOneTags, setShouldHaveAtLeastOneTags] = React7.useState([]);
|
|
1902
|
+
const [mustHaveTags, setMustHaveTags] = React7.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.mustHave) || []);
|
|
1903
|
+
const [mustNotHaveTags, setMustNotHaveTags] = React7.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.mustNotHave) || []);
|
|
1904
|
+
const [shouldHaveAtLeastOneTags, setShouldHaveAtLeastOneTags] = React7.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.shouldHaveAtLeastOne) || []);
|
|
1905
|
+
React7.useEffect(() => {
|
|
1906
|
+
if (initialSelectedTags) {
|
|
1907
|
+
setMustHaveTags(initialSelectedTags.mustHave || []);
|
|
1908
|
+
setMustNotHaveTags(initialSelectedTags.mustNotHave || []);
|
|
1909
|
+
setShouldHaveAtLeastOneTags(initialSelectedTags.shouldHaveAtLeastOne || []);
|
|
1910
|
+
}
|
|
1911
|
+
}, [initialSelectedTags]);
|
|
1810
1912
|
Tags = !!Tags ? Tags : [];
|
|
1811
1913
|
const [inputValues, setInputValues] = React7.useState({
|
|
1812
1914
|
mustHave: "",
|
|
@@ -1816,7 +1918,7 @@ var TagsFilter = ({
|
|
|
1816
1918
|
const tagOptions = React7.useMemo(() => {
|
|
1817
1919
|
console.log("available tags: " + JSON.stringify(Tags));
|
|
1818
1920
|
console.log(!Tags);
|
|
1819
|
-
if (!Tags || Tags.length
|
|
1921
|
+
if (!Tags || Tags.length === 0 || !Tags.map) return [];
|
|
1820
1922
|
return Tags.map((tag) => ({
|
|
1821
1923
|
value: tag.id,
|
|
1822
1924
|
label: tag.label
|
|
@@ -1848,7 +1950,7 @@ var TagsFilter = ({
|
|
|
1848
1950
|
};
|
|
1849
1951
|
const renderSelectedTags = (selectedTags, category) => {
|
|
1850
1952
|
const tagValues = [];
|
|
1851
|
-
if (!Tags || Tags.length
|
|
1953
|
+
if (!Tags || Tags.length === 0 || !Tags.map) return null;
|
|
1852
1954
|
Tags.forEach((tag) => {
|
|
1853
1955
|
if (selectedTags.includes(tag.id)) {
|
|
1854
1956
|
tagValues.push(tag);
|
|
@@ -1857,27 +1959,11 @@ var TagsFilter = ({
|
|
|
1857
1959
|
if (tagValues.length === 0) {
|
|
1858
1960
|
return null;
|
|
1859
1961
|
}
|
|
1860
|
-
return /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", flexWrap: "wrap", gap: 1, mb: 2 }, children: tagValues.map((tag) => /* @__PURE__ */
|
|
1861
|
-
|
|
1962
|
+
return /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", flexWrap: "wrap", gap: 1, mb: 2 }, children: tagValues.map((tag) => /* @__PURE__ */ jsx(
|
|
1963
|
+
Chip,
|
|
1862
1964
|
{
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
background: tag.color || "#bfbcbb",
|
|
1866
|
-
color: "white",
|
|
1867
|
-
textShadow: "black 0.2em 0.2em 0.4em"
|
|
1868
|
-
},
|
|
1869
|
-
children: [
|
|
1870
|
-
tag.label,
|
|
1871
|
-
/* @__PURE__ */ jsx(
|
|
1872
|
-
"button",
|
|
1873
|
-
{
|
|
1874
|
-
type: "button",
|
|
1875
|
-
onClick: () => handleTagChange(tag.id, category),
|
|
1876
|
-
className: "ml-2 text-red-500 bg-white bg-opacity-50 rounded-full outline-black outline-2 font-outlined",
|
|
1877
|
-
children: "\xD7"
|
|
1878
|
-
}
|
|
1879
|
-
)
|
|
1880
|
-
]
|
|
1965
|
+
tag,
|
|
1966
|
+
removeCallback: (tagId) => handleTagChange(tagId, category)
|
|
1881
1967
|
},
|
|
1882
1968
|
tag.id
|
|
1883
1969
|
)) });
|
|
@@ -1885,7 +1971,7 @@ var TagsFilter = ({
|
|
|
1885
1971
|
const createTagSelector = (category, label) => {
|
|
1886
1972
|
const selectedTags = category === "mustHave" ? mustHaveTags : category === "mustNotHave" ? mustNotHaveTags : shouldHaveAtLeastOneTags;
|
|
1887
1973
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1888
|
-
/* @__PURE__ */ jsx(
|
|
1974
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "subtitle1", gutterBottom: true, sx: { mt: 2 }, children: label }),
|
|
1889
1975
|
renderSelectedTags(selectedTags, category),
|
|
1890
1976
|
/* @__PURE__ */ jsx(
|
|
1891
1977
|
Autocomplete,
|
|
@@ -1938,11 +2024,11 @@ var TagsFilter = ({
|
|
|
1938
2024
|
] });
|
|
1939
2025
|
};
|
|
1940
2026
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1941
|
-
/* @__PURE__ */ jsx(
|
|
2027
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", gutterBottom: true, children: "Tags" }),
|
|
1942
2028
|
createTagSelector("mustHave", "Must Have Tags"),
|
|
1943
|
-
/* @__PURE__ */ jsx(
|
|
2029
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
1944
2030
|
createTagSelector("mustNotHave", "Must Not Have Tags"),
|
|
1945
|
-
/* @__PURE__ */ jsx(
|
|
2031
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
1946
2032
|
createTagSelector("shouldHaveAtLeastOne", "Should Contain At Least One Tag")
|
|
1947
2033
|
] });
|
|
1948
2034
|
};
|
|
@@ -1972,21 +2058,80 @@ var CustomPopper2 = (props) => {
|
|
|
1972
2058
|
);
|
|
1973
2059
|
};
|
|
1974
2060
|
var TagsFilter_default = TagsFilter;
|
|
1975
|
-
var
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
2061
|
+
var TextSearchCard = ({ onChange, selectedTypes, initialTextSearch }) => {
|
|
2062
|
+
const [query, setQuery] = React7.useState((initialTextSearch == null ? void 0 : initialTextSearch.query) || "");
|
|
2063
|
+
const [titleOnly, setTitleOnly] = React7.useState((initialTextSearch == null ? void 0 : initialTextSearch.titleOnly) || false);
|
|
2064
|
+
useEffect(() => {
|
|
2065
|
+
if (initialTextSearch) {
|
|
2066
|
+
setQuery(initialTextSearch.query || "");
|
|
2067
|
+
setTitleOnly(initialTextSearch.titleOnly || false);
|
|
2068
|
+
}
|
|
2069
|
+
}, [initialTextSearch]);
|
|
2070
|
+
const shouldShow = selectedTypes.includes("table") || selectedTypes.includes("event");
|
|
2071
|
+
if (!shouldShow) {
|
|
2072
|
+
return null;
|
|
2073
|
+
}
|
|
2074
|
+
const handleQueryChange = (e) => {
|
|
2075
|
+
const newQuery = e.target.value;
|
|
2076
|
+
setQuery(newQuery);
|
|
2077
|
+
if (onChange) {
|
|
2078
|
+
onChange({ query: newQuery, titleOnly });
|
|
2079
|
+
}
|
|
2080
|
+
};
|
|
2081
|
+
const handleTitleOnlyChange = (e) => {
|
|
2082
|
+
const newTitleOnly = e.target.checked;
|
|
2083
|
+
setTitleOnly(newTitleOnly);
|
|
2084
|
+
if (onChange) {
|
|
2085
|
+
onChange({ query, titleOnly: newTitleOnly });
|
|
2086
|
+
}
|
|
2087
|
+
};
|
|
2088
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2089
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", gutterBottom: true, children: "Text Search" }),
|
|
2090
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { mb: 2 }, children: [
|
|
2091
|
+
/* @__PURE__ */ jsx(
|
|
2092
|
+
TextField4,
|
|
2093
|
+
{
|
|
2094
|
+
fullWidth: true,
|
|
2095
|
+
label: "Search in title and description",
|
|
2096
|
+
variant: "outlined",
|
|
2097
|
+
value: query,
|
|
2098
|
+
onChange: handleQueryChange,
|
|
2099
|
+
placeholder: "Enter search terms...",
|
|
2100
|
+
sx: { mb: 1 }
|
|
2101
|
+
}
|
|
2102
|
+
),
|
|
2103
|
+
/* @__PURE__ */ jsx(
|
|
2104
|
+
FormControlLabel,
|
|
2105
|
+
{
|
|
2106
|
+
control: /* @__PURE__ */ jsx(
|
|
2107
|
+
Checkbox,
|
|
2108
|
+
{
|
|
2109
|
+
checked: titleOnly,
|
|
2110
|
+
onChange: handleTitleOnlyChange
|
|
2111
|
+
}
|
|
2112
|
+
),
|
|
2113
|
+
label: "Search in title only"
|
|
2114
|
+
}
|
|
2115
|
+
)
|
|
2116
|
+
] })
|
|
2117
|
+
] });
|
|
2118
|
+
};
|
|
2119
|
+
var TextSearchCard_default = TextSearchCard;
|
|
2120
|
+
var TypeFilter = ({ types, initialSelectedTypes = [], onChange }) => {
|
|
2121
|
+
const [selectedTypes, setSelectedTypes] = React7.useState(initialSelectedTypes);
|
|
2122
|
+
useEffect(() => {
|
|
2123
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2124
|
+
}, [initialSelectedTypes]);
|
|
1982
2125
|
const handleTypeChange = (typeId) => {
|
|
1983
2126
|
const newSelectedTypes = selectedTypes.includes(typeId) ? selectedTypes.filter((id) => id !== typeId) : [...selectedTypes, typeId];
|
|
1984
2127
|
setSelectedTypes(newSelectedTypes);
|
|
1985
|
-
|
|
2128
|
+
if (onChange) {
|
|
2129
|
+
onChange(newSelectedTypes);
|
|
2130
|
+
}
|
|
1986
2131
|
};
|
|
1987
2132
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1988
|
-
/* @__PURE__ */ jsx(
|
|
1989
|
-
/* @__PURE__ */ jsx(FormGroup, { children:
|
|
2133
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", gutterBottom: true, children: "Type" }),
|
|
2134
|
+
/* @__PURE__ */ jsx(FormGroup, { children: types.map((type) => /* @__PURE__ */ jsx(
|
|
1990
2135
|
FormControlLabel,
|
|
1991
2136
|
{
|
|
1992
2137
|
control: /* @__PURE__ */ jsx(
|
|
@@ -1994,7 +2139,8 @@ var TypeFilter = ({ onChange }) => {
|
|
|
1994
2139
|
{
|
|
1995
2140
|
checked: selectedTypes.includes(type.id),
|
|
1996
2141
|
onChange: () => handleTypeChange(type.id),
|
|
1997
|
-
disabled: type.
|
|
2142
|
+
disabled: type.id === "event",
|
|
2143
|
+
title: type.id === "event" ? "Coming soon! Currently only player and table search are supported." : ""
|
|
1998
2144
|
}
|
|
1999
2145
|
),
|
|
2000
2146
|
label: type.label
|
|
@@ -2005,22 +2151,67 @@ var TypeFilter = ({ onChange }) => {
|
|
|
2005
2151
|
};
|
|
2006
2152
|
var TypeFilter_default = TypeFilter;
|
|
2007
2153
|
var FiltersContainer = ({
|
|
2154
|
+
initialSelectedTypes = [],
|
|
2155
|
+
initialSelectedTags,
|
|
2156
|
+
initialTextSearch,
|
|
2157
|
+
includeExpiredTables = false,
|
|
2008
2158
|
onTypeChange,
|
|
2009
2159
|
onTagChange,
|
|
2160
|
+
onTextSearchChange,
|
|
2161
|
+
onIncludeExpiredTablesChange,
|
|
2010
2162
|
onSubmit,
|
|
2011
|
-
tags
|
|
2163
|
+
tags,
|
|
2164
|
+
searchTypes
|
|
2012
2165
|
}) => {
|
|
2166
|
+
const [selectedTypes, setSelectedTypes] = React7.useState(initialSelectedTypes);
|
|
2167
|
+
useEffect(() => {
|
|
2168
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2169
|
+
}, [initialSelectedTypes]);
|
|
2170
|
+
const handleTypeChange = (types) => {
|
|
2171
|
+
setSelectedTypes(types);
|
|
2172
|
+
if (onTypeChange) {
|
|
2173
|
+
onTypeChange(types);
|
|
2174
|
+
}
|
|
2175
|
+
};
|
|
2013
2176
|
return /* @__PURE__ */ jsxs(Box2, { children: [
|
|
2014
|
-
/* @__PURE__ */ jsx(
|
|
2015
|
-
|
|
2177
|
+
/* @__PURE__ */ jsx(
|
|
2178
|
+
TypeFilter_default,
|
|
2179
|
+
{
|
|
2180
|
+
types: searchTypes,
|
|
2181
|
+
initialSelectedTypes,
|
|
2182
|
+
onChange: handleTypeChange
|
|
2183
|
+
}
|
|
2184
|
+
),
|
|
2185
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
2186
|
+
/* @__PURE__ */ jsx(
|
|
2187
|
+
TextSearchCard_default,
|
|
2188
|
+
{
|
|
2189
|
+
selectedTypes,
|
|
2190
|
+
initialTextSearch,
|
|
2191
|
+
onChange: onTextSearchChange
|
|
2192
|
+
}
|
|
2193
|
+
),
|
|
2194
|
+
(selectedTypes.includes("table") || selectedTypes.includes("event")) && /* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
2016
2195
|
/* @__PURE__ */ jsx(
|
|
2017
2196
|
TagsFilter_default,
|
|
2018
2197
|
{
|
|
2019
2198
|
tags,
|
|
2199
|
+
initialSelectedTags,
|
|
2020
2200
|
onChange: onTagChange
|
|
2021
2201
|
}
|
|
2022
2202
|
),
|
|
2023
|
-
/* @__PURE__ */ jsx(
|
|
2203
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
2204
|
+
selectedTypes.includes("table") && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2205
|
+
/* @__PURE__ */ jsx(
|
|
2206
|
+
ExpiredTablesFilter_default,
|
|
2207
|
+
{
|
|
2208
|
+
includeExpiredTables,
|
|
2209
|
+
onChange: onIncludeExpiredTablesChange || (() => {
|
|
2210
|
+
})
|
|
2211
|
+
}
|
|
2212
|
+
),
|
|
2213
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } })
|
|
2214
|
+
] }),
|
|
2024
2215
|
/* @__PURE__ */ jsx(Box2, { sx: { display: "flex", justifyContent: "center", mt: 2 }, children: /* @__PURE__ */ jsx(
|
|
2025
2216
|
Button7,
|
|
2026
2217
|
{
|
|
@@ -2078,16 +2269,75 @@ var SearchResultCard_default = SearchResultCard;
|
|
|
2078
2269
|
function SearchPageLayout({
|
|
2079
2270
|
results,
|
|
2080
2271
|
title = "Search Results",
|
|
2272
|
+
initialSelectedTypes = [],
|
|
2273
|
+
initialSelectedTags = {
|
|
2274
|
+
mustHave: [],
|
|
2275
|
+
mustNotHave: [],
|
|
2276
|
+
shouldHaveAtLeastOne: []
|
|
2277
|
+
},
|
|
2278
|
+
initialTextSearch = {
|
|
2279
|
+
query: "",
|
|
2280
|
+
titleOnly: false
|
|
2281
|
+
},
|
|
2282
|
+
includeExpiredTables: initialIncludeExpiredTables = false,
|
|
2081
2283
|
onTypeChange,
|
|
2082
2284
|
onTagChange,
|
|
2285
|
+
onTextSearchChange,
|
|
2286
|
+
onIncludeExpiredTablesChange,
|
|
2083
2287
|
onSubmit,
|
|
2084
2288
|
onResultClick,
|
|
2289
|
+
onPacketChange,
|
|
2290
|
+
pagination,
|
|
2085
2291
|
validTags,
|
|
2086
|
-
allTags
|
|
2292
|
+
allTags,
|
|
2293
|
+
searchTypes,
|
|
2294
|
+
isLoading = false
|
|
2087
2295
|
}) {
|
|
2088
|
-
"use client";
|
|
2089
2296
|
const theme = useTheme();
|
|
2090
2297
|
const isMobile = useMediaQuery(theme.breakpoints.down("md"));
|
|
2298
|
+
const [selectedTypes, setSelectedTypes] = useState(initialSelectedTypes);
|
|
2299
|
+
const [selectedTags, setSelectedTags] = useState(initialSelectedTags);
|
|
2300
|
+
const [textSearch, setTextSearch] = useState(initialTextSearch);
|
|
2301
|
+
const [includeExpiredTables, setIncludeExpiredTables] = useState(initialIncludeExpiredTables);
|
|
2302
|
+
useEffect(() => {
|
|
2303
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2304
|
+
}, [initialSelectedTypes]);
|
|
2305
|
+
useEffect(() => {
|
|
2306
|
+
setSelectedTags(initialSelectedTags);
|
|
2307
|
+
}, [initialSelectedTags]);
|
|
2308
|
+
useEffect(() => {
|
|
2309
|
+
setTextSearch(initialTextSearch);
|
|
2310
|
+
}, [initialTextSearch]);
|
|
2311
|
+
useEffect(() => {
|
|
2312
|
+
setIncludeExpiredTables(initialIncludeExpiredTables);
|
|
2313
|
+
}, [initialIncludeExpiredTables]);
|
|
2314
|
+
const handleTypeChange = (types) => {
|
|
2315
|
+
setSelectedTypes(types);
|
|
2316
|
+
if (onTypeChange) onTypeChange(types);
|
|
2317
|
+
};
|
|
2318
|
+
const handleTagChange = (tags) => {
|
|
2319
|
+
setSelectedTags(tags);
|
|
2320
|
+
if (onTagChange) onTagChange(tags);
|
|
2321
|
+
};
|
|
2322
|
+
const handleTextSearchChange = (ts) => {
|
|
2323
|
+
setTextSearch(ts);
|
|
2324
|
+
if (onTextSearchChange) onTextSearchChange(ts);
|
|
2325
|
+
};
|
|
2326
|
+
const handleIncludeExpiredTablesChange = (include) => {
|
|
2327
|
+
setIncludeExpiredTables(include);
|
|
2328
|
+
if (onIncludeExpiredTablesChange) onIncludeExpiredTablesChange(include);
|
|
2329
|
+
};
|
|
2330
|
+
const handleSubmit = () => {
|
|
2331
|
+
const currentCriteria = {
|
|
2332
|
+
selectedTypes,
|
|
2333
|
+
selectedTags,
|
|
2334
|
+
textSearch,
|
|
2335
|
+
includeExpiredTables
|
|
2336
|
+
};
|
|
2337
|
+
if (onSubmit) {
|
|
2338
|
+
onSubmit(currentCriteria);
|
|
2339
|
+
}
|
|
2340
|
+
};
|
|
2091
2341
|
return /* @__PURE__ */ jsxs(Box2, { sx: { padding: 2 }, children: [
|
|
2092
2342
|
/* @__PURE__ */ jsx(Card10, { sx: { marginBottom: 2 }, children: /* @__PURE__ */ jsx(
|
|
2093
2343
|
CardHeader4,
|
|
@@ -2118,10 +2368,17 @@ function SearchPageLayout({
|
|
|
2118
2368
|
/* @__PURE__ */ jsx(CardContent10, { children: /* @__PURE__ */ jsx(
|
|
2119
2369
|
FiltersContainer_default,
|
|
2120
2370
|
{
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2371
|
+
initialSelectedTypes: selectedTypes,
|
|
2372
|
+
initialSelectedTags: selectedTags,
|
|
2373
|
+
initialTextSearch: textSearch,
|
|
2374
|
+
includeExpiredTables,
|
|
2375
|
+
onTypeChange: handleTypeChange,
|
|
2376
|
+
onTagChange: handleTagChange,
|
|
2377
|
+
onTextSearchChange: handleTextSearchChange,
|
|
2378
|
+
onIncludeExpiredTablesChange: handleIncludeExpiredTablesChange,
|
|
2379
|
+
onSubmit: handleSubmit,
|
|
2380
|
+
tags: validTags,
|
|
2381
|
+
searchTypes
|
|
2125
2382
|
}
|
|
2126
2383
|
) })
|
|
2127
2384
|
] }) }),
|
|
@@ -2138,10 +2395,12 @@ function SearchPageLayout({
|
|
|
2138
2395
|
}
|
|
2139
2396
|
}
|
|
2140
2397
|
),
|
|
2141
|
-
/* @__PURE__ */ jsx(CardContent10, { children: /* @__PURE__ */ jsx(
|
|
2398
|
+
/* @__PURE__ */ jsx(CardContent10, { children: isLoading ? /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", justifyContent: "center", py: 8 }, children: /* @__PURE__ */ jsx(CircularProgress3, { size: 60, thickness: 4 }) }) : /* @__PURE__ */ jsx(
|
|
2142
2399
|
ResultsContainer_default,
|
|
2143
2400
|
{
|
|
2144
2401
|
results,
|
|
2402
|
+
pagination,
|
|
2403
|
+
onPacketChange,
|
|
2145
2404
|
onResultClick,
|
|
2146
2405
|
tags: allTags
|
|
2147
2406
|
}
|
|
@@ -2696,6 +2955,6 @@ var renderEditableTags = function(selectedTags, allTags, onToggleTag) {
|
|
|
2696
2955
|
};
|
|
2697
2956
|
var TablePageLayout_default = TablePageLayout;
|
|
2698
2957
|
|
|
2699
|
-
export { AutoResizingTextarea_default as AutoResizingTextarea, BaseSearchResultCard_default as BaseSearchResultCard, CANDIDATE_TIMEZONES, Chip, DMHighlightsCard, EventBanner, EventBannerEdit, EventBasicInfo, EventBasicInfoEdit, EventEditProvider, EventPageLayout, EventResultCard_default as EventResultCard, EventTablesCard_default as EventTablesCard, FiltersContainer_default as FiltersContainer, GameTableProvider, ModalContext, ModalProvider_default as ModalProvider, NextGameCountdown, PlayerDetailsCard_default as PlayerDetailsCard, PlayerDisplayCard_default as PlayerDisplayCard, PlayerHighlightsCard, PlayerPageLayout, PlayerPromptCard_default as PlayerPromptCard, PlayerResultCard_default as PlayerResultCard, PlayerTagsCard_default as PlayerTagsCard, PlayerTagsEdit_default as PlayerTagsEdit, PlayersScrollableList_default as PlayersScrollableList, ResultsContainer_default as ResultsContainer, ScrollableResultsList_default as ScrollableResultsList, SearchPageLayout, SearchResultCard_default as SearchResultCard, SortOptions_default as SortOptions, TableActionsBar, TablePageLayout_default as TablePageLayout, TableResultCard_default as TableResultCard, TablesScrollableList_default as TablesScrollableList, TagEditor, TagsFilter_default as TagsFilter, TypeFilter_default as TypeFilter, generateTagsDisplay, renderTagsFromIds, useEventEdit, useGameTableContext, useModal };
|
|
2958
|
+
export { AutoResizingTextarea_default as AutoResizingTextarea, BaseSearchResultCard_default as BaseSearchResultCard, CANDIDATE_TIMEZONES, Chip, DMHighlightsCard, EventBanner, EventBannerEdit, EventBasicInfo, EventBasicInfoEdit, EventEditProvider, EventPageLayout, EventResultCard_default as EventResultCard, EventTablesCard_default as EventTablesCard, ExpiredTablesFilter_default as ExpiredTablesFilter, FiltersContainer_default as FiltersContainer, GameTableProvider, ModalContext, ModalProvider_default as ModalProvider, NextGameCountdown, NextGameLabel_default as NextGameLabel, PlayerDetailsCard_default as PlayerDetailsCard, PlayerDisplayCard_default as PlayerDisplayCard, PlayerHighlightsCard, PlayerPageLayout, PlayerPromptCard_default as PlayerPromptCard, PlayerResultCard_default as PlayerResultCard, PlayerTagsCard_default as PlayerTagsCard, PlayerTagsEdit_default as PlayerTagsEdit, PlayersScrollableList_default as PlayersScrollableList, ResultsContainer_default as ResultsContainer, ScrollableResultsList_default as ScrollableResultsList, SearchPageLayout, SearchResultCard_default as SearchResultCard, SortOptions_default as SortOptions, TableActionsBar, TablePageLayout_default as TablePageLayout, TableResultCard_default as TableResultCard, TablesScrollableList_default as TablesScrollableList, TagEditor, TagsFilter_default as TagsFilter, TextSearchCard_default as TextSearchCard, TypeFilter_default as TypeFilter, generateTagsDisplay, renderTagsFromIds, useEventEdit, useGameTableContext, useModal };
|
|
2700
2959
|
//# sourceMappingURL=index.mjs.map
|
|
2701
2960
|
//# sourceMappingURL=index.mjs.map
|