@mbpockets/shared-ui 0.1.20 → 0.1.21
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 +209 -121
- package/dist/EventPage/index.cjs.map +1 -1
- package/dist/EventPage/index.mjs +201 -119
- package/dist/EventPage/index.mjs.map +1 -1
- package/dist/EventPage.cjs +209 -121
- package/dist/EventPage.cjs.map +1 -1
- package/dist/EventPage.mjs +201 -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 +139 -67
- package/dist/SearchPage/Results/index.cjs.map +1 -1
- package/dist/SearchPage/Results/index.mjs +127 -63
- package/dist/SearchPage/Results/index.mjs.map +1 -1
- package/dist/SearchPage/Results.cjs +139 -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 +127 -63
- package/dist/SearchPage/Results.mjs.map +1 -1
- package/dist/SearchPage/index.cjs +496 -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 +483 -216
- package/dist/SearchPage/index.mjs.map +1 -1
- package/dist/SearchPage.cjs +496 -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 +483 -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 +447 -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 +435 -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,22 @@ 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
|
-
|
|
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
|
+
if (typeof full !== "string") return "";
|
|
998
|
+
const text = full || "";
|
|
999
|
+
return text.length > 200 ? `${text.slice(0, 200).trimEnd()}...` : text;
|
|
1000
|
+
})() }) : /* @__PURE__ */ jsx(Typography4, { variant: "body1", children: result.description }),
|
|
1001
|
+
result.tags && result.tags.length > 0 && /* @__PURE__ */ jsx(Box2, { sx: { mt: 1, display: "flex", flexWrap: "wrap", gap: 1 }, children: renderTagsFromIds(result.tags, tags) })
|
|
1008
1002
|
] })
|
|
1009
1003
|
] })
|
|
1010
1004
|
}
|
|
@@ -1059,21 +1053,60 @@ var PlayerResultCard = ({
|
|
|
1059
1053
|
return /* @__PURE__ */ jsx(BaseSearchResultCard_default, { result, onClick, icon: playerIcon, tags });
|
|
1060
1054
|
};
|
|
1061
1055
|
var PlayerResultCard_default = PlayerResultCard;
|
|
1062
|
-
var TableResultCard = ({
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1056
|
+
var TableResultCard = ({
|
|
1057
|
+
result,
|
|
1058
|
+
onClick,
|
|
1059
|
+
tags
|
|
1060
|
+
}) => {
|
|
1061
|
+
const rawCapacity = result.capacity;
|
|
1062
|
+
const hasDefinedCapacity = typeof rawCapacity === "number" && Number.isFinite(rawCapacity) && rawCapacity > 0;
|
|
1063
|
+
const capacity = hasDefinedCapacity ? rawCapacity : 0;
|
|
1064
|
+
const activePlayers = typeof result.numPlayers === "number" ? result.numPlayers : 0;
|
|
1065
|
+
const availableSlots = Math.max(capacity - activePlayers, 0);
|
|
1066
|
+
const hasDM = typeof result.hasDM === "boolean" ? result.hasDM : Boolean(result.dungeonMaster);
|
|
1067
|
+
const occupancyPercentage = hasDefinedCapacity ? activePlayers / capacity * 100 : 100;
|
|
1068
|
+
const tableIcon = /* @__PURE__ */ jsx(
|
|
1069
|
+
TableRestaurantIcon,
|
|
1070
|
+
{
|
|
1071
|
+
sx: {
|
|
1072
|
+
fontSize: 40,
|
|
1073
|
+
color: "primary.main"
|
|
1074
|
+
}
|
|
1075
|
+
}
|
|
1076
|
+
);
|
|
1077
|
+
return /* @__PURE__ */ jsx(BaseSearchResultCard_default, { result, onClick, icon: tableIcon, tags, children: /* @__PURE__ */ jsxs(Box2, { sx: { mb: 2 }, children: [
|
|
1078
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: [
|
|
1079
|
+
/* @__PURE__ */ jsxs(Typography4, { variant: "body2", children: [
|
|
1080
|
+
/* @__PURE__ */ jsx("strong", { children: "Players:" }),
|
|
1081
|
+
" ",
|
|
1082
|
+
hasDefinedCapacity ? `${activePlayers}/${capacity}` : activePlayers
|
|
1073
1083
|
] }),
|
|
1074
|
-
|
|
1084
|
+
typeof hasDM === "boolean" && /* @__PURE__ */ jsx(
|
|
1085
|
+
Chip2,
|
|
1086
|
+
{
|
|
1087
|
+
icon: hasDM ? /* @__PURE__ */ jsx(SupervisorAccountIcon, {}) : /* @__PURE__ */ jsx(PersonIcon, {}),
|
|
1088
|
+
label: hasDM ? "DM Present" : "No DM",
|
|
1089
|
+
color: hasDM ? "success" : "warning",
|
|
1090
|
+
size: "small"
|
|
1091
|
+
}
|
|
1092
|
+
)
|
|
1075
1093
|
] }),
|
|
1076
|
-
/* @__PURE__ */ jsx(
|
|
1094
|
+
/* @__PURE__ */ jsx(
|
|
1095
|
+
LinearProgress,
|
|
1096
|
+
{
|
|
1097
|
+
variant: "determinate",
|
|
1098
|
+
value: occupancyPercentage,
|
|
1099
|
+
sx: {
|
|
1100
|
+
height: 10,
|
|
1101
|
+
borderRadius: 5,
|
|
1102
|
+
backgroundColor: "#e0e0e0",
|
|
1103
|
+
"& .MuiLinearProgress-bar": {
|
|
1104
|
+
backgroundColor: hasDefinedCapacity ? availableSlots > 0 ? "#4caf50" : "#f44336" : "#2196f3"
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
}
|
|
1108
|
+
),
|
|
1109
|
+
hasDefinedCapacity && /* @__PURE__ */ jsx(Typography4, { variant: "body2", sx: { mt: 0.5, textAlign: "right" }, children: availableSlots > 0 ? `${availableSlots} slot${availableSlots !== 1 ? "s" : ""} available` : "Table full" })
|
|
1077
1110
|
] }) });
|
|
1078
1111
|
};
|
|
1079
1112
|
var TableResultCard_default = TableResultCard;
|
|
@@ -1092,20 +1125,42 @@ var EventResultCard = ({
|
|
|
1092
1125
|
try {
|
|
1093
1126
|
const date = new Date(dateString);
|
|
1094
1127
|
return date.toLocaleDateString("en-US", options);
|
|
1095
|
-
} catch {
|
|
1128
|
+
} catch (error) {
|
|
1096
1129
|
return dateString;
|
|
1097
1130
|
}
|
|
1098
1131
|
};
|
|
1099
1132
|
const formattedDate = result.date ? formatDate(result.date) : "Date TBD";
|
|
1100
1133
|
const location = result.location || "Location TBD";
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1134
|
+
const eventIcon = /* @__PURE__ */ jsx(
|
|
1135
|
+
EventIcon,
|
|
1136
|
+
{
|
|
1137
|
+
sx: {
|
|
1138
|
+
fontSize: 40,
|
|
1139
|
+
color: "primary.main"
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
);
|
|
1143
|
+
return /* @__PURE__ */ jsx(BaseSearchResultCard_default, { result, onClick, icon: eventIcon, tags, children: /* @__PURE__ */ jsxs(Box2, { sx: { mb: 2 }, children: [
|
|
1144
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", alignItems: "center", mb: 1 }, children: [
|
|
1145
|
+
/* @__PURE__ */ jsx(CalendarTodayIcon, { sx: { mr: 1, color: "primary.main" } }),
|
|
1146
|
+
/* @__PURE__ */ jsxs(Typography4, { variant: "body2", children: [
|
|
1147
|
+
/* @__PURE__ */ jsx("strong", { children: "Date:" }),
|
|
1148
|
+
" ",
|
|
1149
|
+
formattedDate
|
|
1150
|
+
] })
|
|
1151
|
+
] }),
|
|
1152
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", alignItems: "center" }, children: [
|
|
1153
|
+
/* @__PURE__ */ jsx(LocationOnIcon, { sx: { mr: 1, color: "primary.main" } }),
|
|
1154
|
+
/* @__PURE__ */ jsxs(Typography4, { variant: "body2", children: [
|
|
1155
|
+
/* @__PURE__ */ jsx("strong", { children: "Location:" }),
|
|
1156
|
+
" ",
|
|
1157
|
+
location
|
|
1158
|
+
] })
|
|
1105
1159
|
] }),
|
|
1106
|
-
/* @__PURE__ */ jsxs(
|
|
1107
|
-
/* @__PURE__ */ jsx(
|
|
1108
|
-
|
|
1160
|
+
result.organizer && /* @__PURE__ */ jsxs(Typography4, { variant: "body2", sx: { mt: 1 }, children: [
|
|
1161
|
+
/* @__PURE__ */ jsx("strong", { children: "Organizer:" }),
|
|
1162
|
+
" ",
|
|
1163
|
+
result.organizer
|
|
1109
1164
|
] })
|
|
1110
1165
|
] }) });
|
|
1111
1166
|
};
|
|
@@ -1113,9 +1168,11 @@ var EventResultCard_default = EventResultCard;
|
|
|
1113
1168
|
var ResultsContainer = ({
|
|
1114
1169
|
results,
|
|
1115
1170
|
onResultClick,
|
|
1116
|
-
tags
|
|
1171
|
+
tags,
|
|
1172
|
+
pagination,
|
|
1173
|
+
onPacketChange
|
|
1117
1174
|
}) => {
|
|
1118
|
-
if (results.length === 0 || !results.map) {
|
|
1175
|
+
if (!results || results.length === 0 || !results.map) {
|
|
1119
1176
|
return /* @__PURE__ */ jsx(Box2, { sx: { textAlign: "center", py: 4 }, children: "No results found. Try adjusting your filters." });
|
|
1120
1177
|
}
|
|
1121
1178
|
const onPlayerClick = (id) => {
|
|
@@ -1127,43 +1184,68 @@ var ResultsContainer = ({
|
|
|
1127
1184
|
const onEventClick = (id) => {
|
|
1128
1185
|
onResultClick == null ? void 0 : onResultClick(id, "event");
|
|
1129
1186
|
};
|
|
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
|
-
|
|
1187
|
+
const handlePacketChange = (_event, packet) => {
|
|
1188
|
+
onPacketChange == null ? void 0 : onPacketChange(packet);
|
|
1189
|
+
};
|
|
1190
|
+
const startResult = pagination ? (pagination.currentPacket - 1) * pagination.packetSize + 1 : 1;
|
|
1191
|
+
const endResult = pagination ? Math.min(pagination.currentPacket * pagination.packetSize, pagination.totalResults) : results.length;
|
|
1192
|
+
return /* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", flexDirection: "column", gap: 2 }, children: [
|
|
1193
|
+
pagination && /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: /* @__PURE__ */ jsxs(Typography4, { variant: "body2", color: "text.secondary", children: [
|
|
1194
|
+
"Showing ",
|
|
1195
|
+
startResult,
|
|
1196
|
+
"-",
|
|
1197
|
+
endResult,
|
|
1198
|
+
" of ",
|
|
1199
|
+
pagination.totalResults,
|
|
1200
|
+
" results"
|
|
1201
|
+
] }) }),
|
|
1202
|
+
results.map((result, index) => {
|
|
1203
|
+
switch (result.type) {
|
|
1204
|
+
case "player":
|
|
1205
|
+
return /* @__PURE__ */ jsx(
|
|
1206
|
+
PlayerResultCard_default,
|
|
1207
|
+
{
|
|
1208
|
+
result,
|
|
1209
|
+
onClick: onPlayerClick,
|
|
1210
|
+
tags
|
|
1211
|
+
},
|
|
1212
|
+
result.id
|
|
1213
|
+
);
|
|
1214
|
+
case "table":
|
|
1215
|
+
return /* @__PURE__ */ jsx(
|
|
1216
|
+
TableResultCard_default,
|
|
1217
|
+
{
|
|
1218
|
+
result,
|
|
1219
|
+
onClick: onTableClick,
|
|
1220
|
+
tags
|
|
1221
|
+
},
|
|
1222
|
+
result.id
|
|
1223
|
+
);
|
|
1224
|
+
case "event":
|
|
1225
|
+
return /* @__PURE__ */ jsx(
|
|
1226
|
+
EventResultCard_default,
|
|
1227
|
+
{
|
|
1228
|
+
result,
|
|
1229
|
+
onClick: onEventClick,
|
|
1230
|
+
tags
|
|
1231
|
+
},
|
|
1232
|
+
result.id
|
|
1233
|
+
);
|
|
1234
|
+
default:
|
|
1235
|
+
console.error(`Unknown result type: ${result.type}`);
|
|
1236
|
+
return null;
|
|
1237
|
+
}
|
|
1238
|
+
}),
|
|
1239
|
+
pagination && pagination.totalPackets > 1 && /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", justifyContent: "center", mt: 4 }, children: /* @__PURE__ */ jsx(
|
|
1240
|
+
Pagination,
|
|
1241
|
+
{
|
|
1242
|
+
count: pagination.totalPackets,
|
|
1243
|
+
page: pagination.currentPacket,
|
|
1244
|
+
onChange: handlePacketChange,
|
|
1245
|
+
color: "primary"
|
|
1246
|
+
}
|
|
1247
|
+
) })
|
|
1248
|
+
] });
|
|
1167
1249
|
};
|
|
1168
1250
|
var ResultsContainer_default = ResultsContainer;
|
|
1169
1251
|
var ScrollableResultsList = ({
|
|
@@ -1181,21 +1263,14 @@ var TablesScrollableList = ({
|
|
|
1181
1263
|
results,
|
|
1182
1264
|
tags,
|
|
1183
1265
|
maxHeight,
|
|
1184
|
-
onResultClick
|
|
1185
|
-
sortBy = "availability"
|
|
1266
|
+
onResultClick
|
|
1186
1267
|
}) => {
|
|
1187
1268
|
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
1269
|
const handleClick = (id) => onResultClick == null ? void 0 : onResultClick(id);
|
|
1195
1270
|
return /* @__PURE__ */ jsx(
|
|
1196
1271
|
ScrollableResultsList_default,
|
|
1197
1272
|
{
|
|
1198
|
-
results:
|
|
1273
|
+
results: tables,
|
|
1199
1274
|
tags,
|
|
1200
1275
|
maxHeight,
|
|
1201
1276
|
onResultClick: (id, type) => {
|
|
@@ -1213,8 +1288,8 @@ var EventTablesCard = ({
|
|
|
1213
1288
|
}) => {
|
|
1214
1289
|
return /* @__PURE__ */ jsxs(Card10, { elevation: 6, sx: { width: "100%", boxShadow: "0px 8px 24px rgba(0, 0, 0, 0.15)" }, children: [
|
|
1215
1290
|
/* @__PURE__ */ jsx(CardHeader4, { title: "Tables" }),
|
|
1216
|
-
/* @__PURE__ */ jsx(
|
|
1217
|
-
/* @__PURE__ */ jsx(CardContent10, { children: /* @__PURE__ */ jsx(TablesScrollableList_default, { results: tables, tags, maxHeight, onResultClick: onTableClick
|
|
1291
|
+
/* @__PURE__ */ jsx(Divider3, {}),
|
|
1292
|
+
/* @__PURE__ */ jsx(CardContent10, { children: /* @__PURE__ */ jsx(TablesScrollableList_default, { results: tables, tags, maxHeight, onResultClick: onTableClick }) })
|
|
1218
1293
|
] });
|
|
1219
1294
|
};
|
|
1220
1295
|
var EventTablesCard_default = EventTablesCard;
|
|
@@ -1774,6 +1849,26 @@ function PlayerPageLayout({
|
|
|
1774
1849
|
] }) })
|
|
1775
1850
|
] }) }) });
|
|
1776
1851
|
}
|
|
1852
|
+
var ExpiredTablesFilter = ({
|
|
1853
|
+
includeExpiredTables,
|
|
1854
|
+
onChange
|
|
1855
|
+
}) => {
|
|
1856
|
+
return /* @__PURE__ */ jsx(Box2, { sx: { mt: 2 }, children: /* @__PURE__ */ jsx(
|
|
1857
|
+
FormControlLabel,
|
|
1858
|
+
{
|
|
1859
|
+
control: /* @__PURE__ */ jsx(
|
|
1860
|
+
Checkbox,
|
|
1861
|
+
{
|
|
1862
|
+
checked: includeExpiredTables,
|
|
1863
|
+
onChange: (e) => onChange(e.target.checked),
|
|
1864
|
+
color: "primary"
|
|
1865
|
+
}
|
|
1866
|
+
),
|
|
1867
|
+
label: "Show expired tables"
|
|
1868
|
+
}
|
|
1869
|
+
) });
|
|
1870
|
+
};
|
|
1871
|
+
var ExpiredTablesFilter_default = ExpiredTablesFilter;
|
|
1777
1872
|
var SORT_OPTIONS = [
|
|
1778
1873
|
{ id: "relevance", label: "Relevance" },
|
|
1779
1874
|
{ id: "newest", label: "Newest" },
|
|
@@ -1787,7 +1882,7 @@ var SortOptions = ({
|
|
|
1787
1882
|
onChange == null ? void 0 : onChange(event.target.value);
|
|
1788
1883
|
};
|
|
1789
1884
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1790
|
-
/* @__PURE__ */ jsx(
|
|
1885
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", gutterBottom: true, children: "Sort By" }),
|
|
1791
1886
|
/* @__PURE__ */ jsx(FormControl2, { children: /* @__PURE__ */ jsx(RadioGroup, { defaultValue: defaultValue2, onChange: handleSortChange, children: SORT_OPTIONS.map((option) => /* @__PURE__ */ jsx(
|
|
1792
1887
|
FormControlLabel,
|
|
1793
1888
|
{
|
|
@@ -1802,11 +1897,19 @@ var SortOptions = ({
|
|
|
1802
1897
|
var SortOptions_default = SortOptions;
|
|
1803
1898
|
var TagsFilter = ({
|
|
1804
1899
|
onChange,
|
|
1805
|
-
tags: Tags = []
|
|
1900
|
+
tags: Tags = [],
|
|
1901
|
+
initialSelectedTags
|
|
1806
1902
|
}) => {
|
|
1807
|
-
const [mustHaveTags, setMustHaveTags] = React7.useState([]);
|
|
1808
|
-
const [mustNotHaveTags, setMustNotHaveTags] = React7.useState([]);
|
|
1809
|
-
const [shouldHaveAtLeastOneTags, setShouldHaveAtLeastOneTags] = React7.useState([]);
|
|
1903
|
+
const [mustHaveTags, setMustHaveTags] = React7.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.mustHave) || []);
|
|
1904
|
+
const [mustNotHaveTags, setMustNotHaveTags] = React7.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.mustNotHave) || []);
|
|
1905
|
+
const [shouldHaveAtLeastOneTags, setShouldHaveAtLeastOneTags] = React7.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.shouldHaveAtLeastOne) || []);
|
|
1906
|
+
React7.useEffect(() => {
|
|
1907
|
+
if (initialSelectedTags) {
|
|
1908
|
+
setMustHaveTags(initialSelectedTags.mustHave || []);
|
|
1909
|
+
setMustNotHaveTags(initialSelectedTags.mustNotHave || []);
|
|
1910
|
+
setShouldHaveAtLeastOneTags(initialSelectedTags.shouldHaveAtLeastOne || []);
|
|
1911
|
+
}
|
|
1912
|
+
}, [initialSelectedTags]);
|
|
1810
1913
|
Tags = !!Tags ? Tags : [];
|
|
1811
1914
|
const [inputValues, setInputValues] = React7.useState({
|
|
1812
1915
|
mustHave: "",
|
|
@@ -1816,7 +1919,7 @@ var TagsFilter = ({
|
|
|
1816
1919
|
const tagOptions = React7.useMemo(() => {
|
|
1817
1920
|
console.log("available tags: " + JSON.stringify(Tags));
|
|
1818
1921
|
console.log(!Tags);
|
|
1819
|
-
if (!Tags || Tags.length
|
|
1922
|
+
if (!Tags || Tags.length === 0 || !Tags.map) return [];
|
|
1820
1923
|
return Tags.map((tag) => ({
|
|
1821
1924
|
value: tag.id,
|
|
1822
1925
|
label: tag.label
|
|
@@ -1848,7 +1951,7 @@ var TagsFilter = ({
|
|
|
1848
1951
|
};
|
|
1849
1952
|
const renderSelectedTags = (selectedTags, category) => {
|
|
1850
1953
|
const tagValues = [];
|
|
1851
|
-
if (!Tags || Tags.length
|
|
1954
|
+
if (!Tags || Tags.length === 0 || !Tags.map) return null;
|
|
1852
1955
|
Tags.forEach((tag) => {
|
|
1853
1956
|
if (selectedTags.includes(tag.id)) {
|
|
1854
1957
|
tagValues.push(tag);
|
|
@@ -1857,27 +1960,11 @@ var TagsFilter = ({
|
|
|
1857
1960
|
if (tagValues.length === 0) {
|
|
1858
1961
|
return null;
|
|
1859
1962
|
}
|
|
1860
|
-
return /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", flexWrap: "wrap", gap: 1, mb: 2 }, children: tagValues.map((tag) => /* @__PURE__ */
|
|
1861
|
-
|
|
1963
|
+
return /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", flexWrap: "wrap", gap: 1, mb: 2 }, children: tagValues.map((tag) => /* @__PURE__ */ jsx(
|
|
1964
|
+
Chip,
|
|
1862
1965
|
{
|
|
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
|
-
]
|
|
1966
|
+
tag,
|
|
1967
|
+
removeCallback: (tagId) => handleTagChange(tagId, category)
|
|
1881
1968
|
},
|
|
1882
1969
|
tag.id
|
|
1883
1970
|
)) });
|
|
@@ -1885,7 +1972,7 @@ var TagsFilter = ({
|
|
|
1885
1972
|
const createTagSelector = (category, label) => {
|
|
1886
1973
|
const selectedTags = category === "mustHave" ? mustHaveTags : category === "mustNotHave" ? mustNotHaveTags : shouldHaveAtLeastOneTags;
|
|
1887
1974
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1888
|
-
/* @__PURE__ */ jsx(
|
|
1975
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "subtitle1", gutterBottom: true, sx: { mt: 2 }, children: label }),
|
|
1889
1976
|
renderSelectedTags(selectedTags, category),
|
|
1890
1977
|
/* @__PURE__ */ jsx(
|
|
1891
1978
|
Autocomplete,
|
|
@@ -1938,11 +2025,11 @@ var TagsFilter = ({
|
|
|
1938
2025
|
] });
|
|
1939
2026
|
};
|
|
1940
2027
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1941
|
-
/* @__PURE__ */ jsx(
|
|
2028
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", gutterBottom: true, children: "Tags" }),
|
|
1942
2029
|
createTagSelector("mustHave", "Must Have Tags"),
|
|
1943
|
-
/* @__PURE__ */ jsx(
|
|
2030
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
1944
2031
|
createTagSelector("mustNotHave", "Must Not Have Tags"),
|
|
1945
|
-
/* @__PURE__ */ jsx(
|
|
2032
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
1946
2033
|
createTagSelector("shouldHaveAtLeastOne", "Should Contain At Least One Tag")
|
|
1947
2034
|
] });
|
|
1948
2035
|
};
|
|
@@ -1972,21 +2059,80 @@ var CustomPopper2 = (props) => {
|
|
|
1972
2059
|
);
|
|
1973
2060
|
};
|
|
1974
2061
|
var TagsFilter_default = TagsFilter;
|
|
1975
|
-
var
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
2062
|
+
var TextSearchCard = ({ onChange, selectedTypes, initialTextSearch }) => {
|
|
2063
|
+
const [query, setQuery] = React7.useState((initialTextSearch == null ? void 0 : initialTextSearch.query) || "");
|
|
2064
|
+
const [titleOnly, setTitleOnly] = React7.useState((initialTextSearch == null ? void 0 : initialTextSearch.titleOnly) || false);
|
|
2065
|
+
useEffect(() => {
|
|
2066
|
+
if (initialTextSearch) {
|
|
2067
|
+
setQuery(initialTextSearch.query || "");
|
|
2068
|
+
setTitleOnly(initialTextSearch.titleOnly || false);
|
|
2069
|
+
}
|
|
2070
|
+
}, [initialTextSearch]);
|
|
2071
|
+
const shouldShow = selectedTypes.includes("table") || selectedTypes.includes("event");
|
|
2072
|
+
if (!shouldShow) {
|
|
2073
|
+
return null;
|
|
2074
|
+
}
|
|
2075
|
+
const handleQueryChange = (e) => {
|
|
2076
|
+
const newQuery = e.target.value;
|
|
2077
|
+
setQuery(newQuery);
|
|
2078
|
+
if (onChange) {
|
|
2079
|
+
onChange({ query: newQuery, titleOnly });
|
|
2080
|
+
}
|
|
2081
|
+
};
|
|
2082
|
+
const handleTitleOnlyChange = (e) => {
|
|
2083
|
+
const newTitleOnly = e.target.checked;
|
|
2084
|
+
setTitleOnly(newTitleOnly);
|
|
2085
|
+
if (onChange) {
|
|
2086
|
+
onChange({ query, titleOnly: newTitleOnly });
|
|
2087
|
+
}
|
|
2088
|
+
};
|
|
2089
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2090
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", gutterBottom: true, children: "Text Search" }),
|
|
2091
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { mb: 2 }, children: [
|
|
2092
|
+
/* @__PURE__ */ jsx(
|
|
2093
|
+
TextField4,
|
|
2094
|
+
{
|
|
2095
|
+
fullWidth: true,
|
|
2096
|
+
label: "Search in title and description",
|
|
2097
|
+
variant: "outlined",
|
|
2098
|
+
value: query,
|
|
2099
|
+
onChange: handleQueryChange,
|
|
2100
|
+
placeholder: "Enter search terms...",
|
|
2101
|
+
sx: { mb: 1 }
|
|
2102
|
+
}
|
|
2103
|
+
),
|
|
2104
|
+
/* @__PURE__ */ jsx(
|
|
2105
|
+
FormControlLabel,
|
|
2106
|
+
{
|
|
2107
|
+
control: /* @__PURE__ */ jsx(
|
|
2108
|
+
Checkbox,
|
|
2109
|
+
{
|
|
2110
|
+
checked: titleOnly,
|
|
2111
|
+
onChange: handleTitleOnlyChange
|
|
2112
|
+
}
|
|
2113
|
+
),
|
|
2114
|
+
label: "Search in title only"
|
|
2115
|
+
}
|
|
2116
|
+
)
|
|
2117
|
+
] })
|
|
2118
|
+
] });
|
|
2119
|
+
};
|
|
2120
|
+
var TextSearchCard_default = TextSearchCard;
|
|
2121
|
+
var TypeFilter = ({ types, initialSelectedTypes = [], onChange }) => {
|
|
2122
|
+
const [selectedTypes, setSelectedTypes] = React7.useState(initialSelectedTypes);
|
|
2123
|
+
useEffect(() => {
|
|
2124
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2125
|
+
}, [initialSelectedTypes]);
|
|
1982
2126
|
const handleTypeChange = (typeId) => {
|
|
1983
2127
|
const newSelectedTypes = selectedTypes.includes(typeId) ? selectedTypes.filter((id) => id !== typeId) : [...selectedTypes, typeId];
|
|
1984
2128
|
setSelectedTypes(newSelectedTypes);
|
|
1985
|
-
|
|
2129
|
+
if (onChange) {
|
|
2130
|
+
onChange(newSelectedTypes);
|
|
2131
|
+
}
|
|
1986
2132
|
};
|
|
1987
2133
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1988
|
-
/* @__PURE__ */ jsx(
|
|
1989
|
-
/* @__PURE__ */ jsx(FormGroup, { children:
|
|
2134
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", gutterBottom: true, children: "Type" }),
|
|
2135
|
+
/* @__PURE__ */ jsx(FormGroup, { children: types.map((type) => /* @__PURE__ */ jsx(
|
|
1990
2136
|
FormControlLabel,
|
|
1991
2137
|
{
|
|
1992
2138
|
control: /* @__PURE__ */ jsx(
|
|
@@ -1994,7 +2140,8 @@ var TypeFilter = ({ onChange }) => {
|
|
|
1994
2140
|
{
|
|
1995
2141
|
checked: selectedTypes.includes(type.id),
|
|
1996
2142
|
onChange: () => handleTypeChange(type.id),
|
|
1997
|
-
disabled: type.
|
|
2143
|
+
disabled: type.id === "event",
|
|
2144
|
+
title: type.id === "event" ? "Coming soon! Currently only player and table search are supported." : ""
|
|
1998
2145
|
}
|
|
1999
2146
|
),
|
|
2000
2147
|
label: type.label
|
|
@@ -2005,22 +2152,67 @@ var TypeFilter = ({ onChange }) => {
|
|
|
2005
2152
|
};
|
|
2006
2153
|
var TypeFilter_default = TypeFilter;
|
|
2007
2154
|
var FiltersContainer = ({
|
|
2155
|
+
initialSelectedTypes = [],
|
|
2156
|
+
initialSelectedTags,
|
|
2157
|
+
initialTextSearch,
|
|
2158
|
+
includeExpiredTables = false,
|
|
2008
2159
|
onTypeChange,
|
|
2009
2160
|
onTagChange,
|
|
2161
|
+
onTextSearchChange,
|
|
2162
|
+
onIncludeExpiredTablesChange,
|
|
2010
2163
|
onSubmit,
|
|
2011
|
-
tags
|
|
2164
|
+
tags,
|
|
2165
|
+
searchTypes
|
|
2012
2166
|
}) => {
|
|
2167
|
+
const [selectedTypes, setSelectedTypes] = React7.useState(initialSelectedTypes);
|
|
2168
|
+
useEffect(() => {
|
|
2169
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2170
|
+
}, [initialSelectedTypes]);
|
|
2171
|
+
const handleTypeChange = (types) => {
|
|
2172
|
+
setSelectedTypes(types);
|
|
2173
|
+
if (onTypeChange) {
|
|
2174
|
+
onTypeChange(types);
|
|
2175
|
+
}
|
|
2176
|
+
};
|
|
2013
2177
|
return /* @__PURE__ */ jsxs(Box2, { children: [
|
|
2014
|
-
/* @__PURE__ */ jsx(
|
|
2015
|
-
|
|
2178
|
+
/* @__PURE__ */ jsx(
|
|
2179
|
+
TypeFilter_default,
|
|
2180
|
+
{
|
|
2181
|
+
types: searchTypes,
|
|
2182
|
+
initialSelectedTypes,
|
|
2183
|
+
onChange: handleTypeChange
|
|
2184
|
+
}
|
|
2185
|
+
),
|
|
2186
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
2187
|
+
/* @__PURE__ */ jsx(
|
|
2188
|
+
TextSearchCard_default,
|
|
2189
|
+
{
|
|
2190
|
+
selectedTypes,
|
|
2191
|
+
initialTextSearch,
|
|
2192
|
+
onChange: onTextSearchChange
|
|
2193
|
+
}
|
|
2194
|
+
),
|
|
2195
|
+
(selectedTypes.includes("table") || selectedTypes.includes("event")) && /* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
2016
2196
|
/* @__PURE__ */ jsx(
|
|
2017
2197
|
TagsFilter_default,
|
|
2018
2198
|
{
|
|
2019
2199
|
tags,
|
|
2200
|
+
initialSelectedTags,
|
|
2020
2201
|
onChange: onTagChange
|
|
2021
2202
|
}
|
|
2022
2203
|
),
|
|
2023
|
-
/* @__PURE__ */ jsx(
|
|
2204
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
2205
|
+
selectedTypes.includes("table") && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2206
|
+
/* @__PURE__ */ jsx(
|
|
2207
|
+
ExpiredTablesFilter_default,
|
|
2208
|
+
{
|
|
2209
|
+
includeExpiredTables,
|
|
2210
|
+
onChange: onIncludeExpiredTablesChange || (() => {
|
|
2211
|
+
})
|
|
2212
|
+
}
|
|
2213
|
+
),
|
|
2214
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } })
|
|
2215
|
+
] }),
|
|
2024
2216
|
/* @__PURE__ */ jsx(Box2, { sx: { display: "flex", justifyContent: "center", mt: 2 }, children: /* @__PURE__ */ jsx(
|
|
2025
2217
|
Button7,
|
|
2026
2218
|
{
|
|
@@ -2078,16 +2270,75 @@ var SearchResultCard_default = SearchResultCard;
|
|
|
2078
2270
|
function SearchPageLayout({
|
|
2079
2271
|
results,
|
|
2080
2272
|
title = "Search Results",
|
|
2273
|
+
initialSelectedTypes = [],
|
|
2274
|
+
initialSelectedTags = {
|
|
2275
|
+
mustHave: [],
|
|
2276
|
+
mustNotHave: [],
|
|
2277
|
+
shouldHaveAtLeastOne: []
|
|
2278
|
+
},
|
|
2279
|
+
initialTextSearch = {
|
|
2280
|
+
query: "",
|
|
2281
|
+
titleOnly: false
|
|
2282
|
+
},
|
|
2283
|
+
includeExpiredTables: initialIncludeExpiredTables = false,
|
|
2081
2284
|
onTypeChange,
|
|
2082
2285
|
onTagChange,
|
|
2286
|
+
onTextSearchChange,
|
|
2287
|
+
onIncludeExpiredTablesChange,
|
|
2083
2288
|
onSubmit,
|
|
2084
2289
|
onResultClick,
|
|
2290
|
+
onPacketChange,
|
|
2291
|
+
pagination,
|
|
2085
2292
|
validTags,
|
|
2086
|
-
allTags
|
|
2293
|
+
allTags,
|
|
2294
|
+
searchTypes,
|
|
2295
|
+
isLoading = false
|
|
2087
2296
|
}) {
|
|
2088
|
-
"use client";
|
|
2089
2297
|
const theme = useTheme();
|
|
2090
2298
|
const isMobile = useMediaQuery(theme.breakpoints.down("md"));
|
|
2299
|
+
const [selectedTypes, setSelectedTypes] = useState(initialSelectedTypes);
|
|
2300
|
+
const [selectedTags, setSelectedTags] = useState(initialSelectedTags);
|
|
2301
|
+
const [textSearch, setTextSearch] = useState(initialTextSearch);
|
|
2302
|
+
const [includeExpiredTables, setIncludeExpiredTables] = useState(initialIncludeExpiredTables);
|
|
2303
|
+
useEffect(() => {
|
|
2304
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2305
|
+
}, [initialSelectedTypes]);
|
|
2306
|
+
useEffect(() => {
|
|
2307
|
+
setSelectedTags(initialSelectedTags);
|
|
2308
|
+
}, [initialSelectedTags]);
|
|
2309
|
+
useEffect(() => {
|
|
2310
|
+
setTextSearch(initialTextSearch);
|
|
2311
|
+
}, [initialTextSearch]);
|
|
2312
|
+
useEffect(() => {
|
|
2313
|
+
setIncludeExpiredTables(initialIncludeExpiredTables);
|
|
2314
|
+
}, [initialIncludeExpiredTables]);
|
|
2315
|
+
const handleTypeChange = (types) => {
|
|
2316
|
+
setSelectedTypes(types);
|
|
2317
|
+
if (onTypeChange) onTypeChange(types);
|
|
2318
|
+
};
|
|
2319
|
+
const handleTagChange = (tags) => {
|
|
2320
|
+
setSelectedTags(tags);
|
|
2321
|
+
if (onTagChange) onTagChange(tags);
|
|
2322
|
+
};
|
|
2323
|
+
const handleTextSearchChange = (ts) => {
|
|
2324
|
+
setTextSearch(ts);
|
|
2325
|
+
if (onTextSearchChange) onTextSearchChange(ts);
|
|
2326
|
+
};
|
|
2327
|
+
const handleIncludeExpiredTablesChange = (include) => {
|
|
2328
|
+
setIncludeExpiredTables(include);
|
|
2329
|
+
if (onIncludeExpiredTablesChange) onIncludeExpiredTablesChange(include);
|
|
2330
|
+
};
|
|
2331
|
+
const handleSubmit = () => {
|
|
2332
|
+
const currentCriteria = {
|
|
2333
|
+
selectedTypes,
|
|
2334
|
+
selectedTags,
|
|
2335
|
+
textSearch,
|
|
2336
|
+
includeExpiredTables
|
|
2337
|
+
};
|
|
2338
|
+
if (onSubmit) {
|
|
2339
|
+
onSubmit(currentCriteria);
|
|
2340
|
+
}
|
|
2341
|
+
};
|
|
2091
2342
|
return /* @__PURE__ */ jsxs(Box2, { sx: { padding: 2 }, children: [
|
|
2092
2343
|
/* @__PURE__ */ jsx(Card10, { sx: { marginBottom: 2 }, children: /* @__PURE__ */ jsx(
|
|
2093
2344
|
CardHeader4,
|
|
@@ -2118,10 +2369,17 @@ function SearchPageLayout({
|
|
|
2118
2369
|
/* @__PURE__ */ jsx(CardContent10, { children: /* @__PURE__ */ jsx(
|
|
2119
2370
|
FiltersContainer_default,
|
|
2120
2371
|
{
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2372
|
+
initialSelectedTypes: selectedTypes,
|
|
2373
|
+
initialSelectedTags: selectedTags,
|
|
2374
|
+
initialTextSearch: textSearch,
|
|
2375
|
+
includeExpiredTables,
|
|
2376
|
+
onTypeChange: handleTypeChange,
|
|
2377
|
+
onTagChange: handleTagChange,
|
|
2378
|
+
onTextSearchChange: handleTextSearchChange,
|
|
2379
|
+
onIncludeExpiredTablesChange: handleIncludeExpiredTablesChange,
|
|
2380
|
+
onSubmit: handleSubmit,
|
|
2381
|
+
tags: validTags,
|
|
2382
|
+
searchTypes
|
|
2125
2383
|
}
|
|
2126
2384
|
) })
|
|
2127
2385
|
] }) }),
|
|
@@ -2138,10 +2396,12 @@ function SearchPageLayout({
|
|
|
2138
2396
|
}
|
|
2139
2397
|
}
|
|
2140
2398
|
),
|
|
2141
|
-
/* @__PURE__ */ jsx(CardContent10, { children: /* @__PURE__ */ jsx(
|
|
2399
|
+
/* @__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
2400
|
ResultsContainer_default,
|
|
2143
2401
|
{
|
|
2144
2402
|
results,
|
|
2403
|
+
pagination,
|
|
2404
|
+
onPacketChange,
|
|
2145
2405
|
onResultClick,
|
|
2146
2406
|
tags: allTags
|
|
2147
2407
|
}
|
|
@@ -2696,6 +2956,6 @@ var renderEditableTags = function(selectedTags, allTags, onToggleTag) {
|
|
|
2696
2956
|
};
|
|
2697
2957
|
var TablePageLayout_default = TablePageLayout;
|
|
2698
2958
|
|
|
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 };
|
|
2959
|
+
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
2960
|
//# sourceMappingURL=index.mjs.map
|
|
2701
2961
|
//# sourceMappingURL=index.mjs.map
|