@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.cjs
CHANGED
|
@@ -15,24 +15,30 @@ var Grid8 = require('@mui/material/Grid');
|
|
|
15
15
|
var Card10 = require('@mui/material/Card');
|
|
16
16
|
var CardContent10 = require('@mui/material/CardContent');
|
|
17
17
|
var CardHeader4 = require('@mui/material/CardHeader');
|
|
18
|
-
var
|
|
18
|
+
var Divider3 = require('@mui/material/Divider');
|
|
19
|
+
var Typography4 = require('@mui/material/Typography');
|
|
20
|
+
var Pagination = require('@mui/material/Pagination');
|
|
19
21
|
var Avatar = require('@mui/material/Avatar');
|
|
20
|
-
var
|
|
22
|
+
var Chip2 = require('@mui/material/Chip');
|
|
23
|
+
var LinearProgress = require('@mui/material/LinearProgress');
|
|
24
|
+
var PersonIcon = require('@mui/icons-material/Person');
|
|
25
|
+
var SupervisorAccountIcon = require('@mui/icons-material/SupervisorAccount');
|
|
26
|
+
var TableRestaurantIcon = require('@mui/icons-material/TableRestaurant');
|
|
21
27
|
var CalendarTodayIcon = require('@mui/icons-material/CalendarToday');
|
|
22
28
|
var LocationOnIcon = require('@mui/icons-material/LocationOn');
|
|
23
29
|
var EventIcon = require('@mui/icons-material/Event');
|
|
24
30
|
var Autocomplete = require('@mui/material/Autocomplete');
|
|
25
31
|
var Popper = require('@mui/material/Popper');
|
|
26
|
-
var
|
|
32
|
+
var FormControlLabel = require('@mui/material/FormControlLabel');
|
|
33
|
+
var Checkbox = require('@mui/material/Checkbox');
|
|
27
34
|
var FormControl2 = require('@mui/material/FormControl');
|
|
28
35
|
var RadioGroup = require('@mui/material/RadioGroup');
|
|
29
|
-
var FormControlLabel = require('@mui/material/FormControlLabel');
|
|
30
36
|
var Radio = require('@mui/material/Radio');
|
|
31
37
|
var TextField4 = require('@mui/material/TextField');
|
|
32
38
|
var FormGroup = require('@mui/material/FormGroup');
|
|
33
|
-
var Checkbox = require('@mui/material/Checkbox');
|
|
34
39
|
var Button7 = require('@mui/material/Button');
|
|
35
40
|
var SearchIcon = require('@mui/icons-material/Search');
|
|
41
|
+
var CircularProgress3 = require('@mui/material/CircularProgress');
|
|
36
42
|
var Image2 = require('next/image');
|
|
37
43
|
var ListIcon = require('@mui/icons-material/List');
|
|
38
44
|
var SaveIcon = require('@mui/icons-material/Save');
|
|
@@ -51,24 +57,30 @@ var Grid8__default = /*#__PURE__*/_interopDefault(Grid8);
|
|
|
51
57
|
var Card10__default = /*#__PURE__*/_interopDefault(Card10);
|
|
52
58
|
var CardContent10__default = /*#__PURE__*/_interopDefault(CardContent10);
|
|
53
59
|
var CardHeader4__default = /*#__PURE__*/_interopDefault(CardHeader4);
|
|
54
|
-
var
|
|
60
|
+
var Divider3__default = /*#__PURE__*/_interopDefault(Divider3);
|
|
61
|
+
var Typography4__default = /*#__PURE__*/_interopDefault(Typography4);
|
|
62
|
+
var Pagination__default = /*#__PURE__*/_interopDefault(Pagination);
|
|
55
63
|
var Avatar__default = /*#__PURE__*/_interopDefault(Avatar);
|
|
56
|
-
var
|
|
64
|
+
var Chip2__default = /*#__PURE__*/_interopDefault(Chip2);
|
|
65
|
+
var LinearProgress__default = /*#__PURE__*/_interopDefault(LinearProgress);
|
|
66
|
+
var PersonIcon__default = /*#__PURE__*/_interopDefault(PersonIcon);
|
|
67
|
+
var SupervisorAccountIcon__default = /*#__PURE__*/_interopDefault(SupervisorAccountIcon);
|
|
68
|
+
var TableRestaurantIcon__default = /*#__PURE__*/_interopDefault(TableRestaurantIcon);
|
|
57
69
|
var CalendarTodayIcon__default = /*#__PURE__*/_interopDefault(CalendarTodayIcon);
|
|
58
70
|
var LocationOnIcon__default = /*#__PURE__*/_interopDefault(LocationOnIcon);
|
|
59
71
|
var EventIcon__default = /*#__PURE__*/_interopDefault(EventIcon);
|
|
60
72
|
var Autocomplete__default = /*#__PURE__*/_interopDefault(Autocomplete);
|
|
61
73
|
var Popper__default = /*#__PURE__*/_interopDefault(Popper);
|
|
62
|
-
var
|
|
74
|
+
var FormControlLabel__default = /*#__PURE__*/_interopDefault(FormControlLabel);
|
|
75
|
+
var Checkbox__default = /*#__PURE__*/_interopDefault(Checkbox);
|
|
63
76
|
var FormControl2__default = /*#__PURE__*/_interopDefault(FormControl2);
|
|
64
77
|
var RadioGroup__default = /*#__PURE__*/_interopDefault(RadioGroup);
|
|
65
|
-
var FormControlLabel__default = /*#__PURE__*/_interopDefault(FormControlLabel);
|
|
66
78
|
var Radio__default = /*#__PURE__*/_interopDefault(Radio);
|
|
67
79
|
var TextField4__default = /*#__PURE__*/_interopDefault(TextField4);
|
|
68
80
|
var FormGroup__default = /*#__PURE__*/_interopDefault(FormGroup);
|
|
69
|
-
var Checkbox__default = /*#__PURE__*/_interopDefault(Checkbox);
|
|
70
81
|
var Button7__default = /*#__PURE__*/_interopDefault(Button7);
|
|
71
82
|
var SearchIcon__default = /*#__PURE__*/_interopDefault(SearchIcon);
|
|
83
|
+
var CircularProgress3__default = /*#__PURE__*/_interopDefault(CircularProgress3);
|
|
72
84
|
var Image2__default = /*#__PURE__*/_interopDefault(Image2);
|
|
73
85
|
var ListIcon__default = /*#__PURE__*/_interopDefault(ListIcon);
|
|
74
86
|
var SaveIcon__default = /*#__PURE__*/_interopDefault(SaveIcon);
|
|
@@ -975,6 +987,14 @@ var generateLink = function(link) {
|
|
|
975
987
|
link.text
|
|
976
988
|
);
|
|
977
989
|
};
|
|
990
|
+
var NextGameLabel = ({ nextGameTime }) => {
|
|
991
|
+
const date = typeof nextGameTime === "string" ? new Date(nextGameTime) : nextGameTime;
|
|
992
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(material.Typography, { variant: "caption", sx: { display: "block", mb: 1, color: "primary.main", fontWeight: "bold" }, children: [
|
|
993
|
+
"Next Game: ",
|
|
994
|
+
date.toLocaleString()
|
|
995
|
+
] });
|
|
996
|
+
};
|
|
997
|
+
var NextGameLabel_default = NextGameLabel;
|
|
978
998
|
var BaseSearchResultCard = ({
|
|
979
999
|
result,
|
|
980
1000
|
onClick,
|
|
@@ -982,13 +1002,19 @@ var BaseSearchResultCard = ({
|
|
|
982
1002
|
icon,
|
|
983
1003
|
tags
|
|
984
1004
|
}) => {
|
|
985
|
-
const handleClick = () => {
|
|
1005
|
+
const handleClick = (e) => {
|
|
986
1006
|
if (onClick) {
|
|
987
|
-
|
|
1007
|
+
if (e.ctrlKey || e.metaKey || e.shiftKey) {
|
|
1008
|
+
e.stopPropagation();
|
|
1009
|
+
const url = `/${result.type}/${result.id}`;
|
|
1010
|
+
window.open(url, "_blank");
|
|
1011
|
+
} else {
|
|
1012
|
+
onClick(result.id);
|
|
1013
|
+
}
|
|
988
1014
|
}
|
|
989
1015
|
};
|
|
990
1016
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
991
|
-
|
|
1017
|
+
Card10__default.default,
|
|
992
1018
|
{
|
|
993
1019
|
elevation: 6,
|
|
994
1020
|
sx: {
|
|
@@ -1001,48 +1027,22 @@ var BaseSearchResultCard = ({
|
|
|
1001
1027
|
},
|
|
1002
1028
|
marginBottom: 2
|
|
1003
1029
|
},
|
|
1004
|
-
onClick: handleClick,
|
|
1005
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1006
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1007
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1008
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1030
|
+
onClick: (e) => handleClick(e),
|
|
1031
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(CardContent10__default.default, { sx: { display: "flex", alignItems: "flex-start" }, children: [
|
|
1032
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { mr: 2, display: "flex", alignItems: "center", pt: 0.5 }, children: icon }),
|
|
1033
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { flex: 1 }, children: [
|
|
1034
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "h6", sx: { mb: 1 }, children: result.title }),
|
|
1035
|
+
result.nextGameTime && /* @__PURE__ */ jsxRuntime.jsx(NextGameLabel_default, { nextGameTime: result.nextGameTime }),
|
|
1036
|
+
result.type === "table" && result.shortDescription ? /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body2", sx: { mb: 1 }, children: result.shortDescription }) : null,
|
|
1009
1037
|
children,
|
|
1010
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
}, children: (() => {
|
|
1019
|
-
const MAX_VISIBLE = 5;
|
|
1020
|
-
const tagObjs = result.tags.map((tagId) => tags.find((t) => t.id === tagId)).filter((t) => Boolean(t));
|
|
1021
|
-
const visible = tagObjs.slice(0, MAX_VISIBLE);
|
|
1022
|
-
const hiddenCount = Math.max(tagObjs.length - visible.length, 0);
|
|
1023
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1024
|
-
visible.map((tag) => generateTagsDisplay(tag)),
|
|
1025
|
-
hiddenCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1026
|
-
"span",
|
|
1027
|
-
{
|
|
1028
|
-
className: "inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined",
|
|
1029
|
-
style: {
|
|
1030
|
-
marginTop: "6px",
|
|
1031
|
-
marginRight: "6px",
|
|
1032
|
-
marginBottom: "6px",
|
|
1033
|
-
background: "#9e9e9e",
|
|
1034
|
-
color: "white",
|
|
1035
|
-
textShadow: "black 0.2em 0.2em 0.4em"
|
|
1036
|
-
},
|
|
1037
|
-
children: [
|
|
1038
|
-
"+",
|
|
1039
|
-
hiddenCount,
|
|
1040
|
-
" more"
|
|
1041
|
-
]
|
|
1042
|
-
}
|
|
1043
|
-
)
|
|
1044
|
-
] });
|
|
1045
|
-
})() }) })
|
|
1038
|
+
result.type === "table" ? /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body1", children: (() => {
|
|
1039
|
+
var _a, _b;
|
|
1040
|
+
const full = (_b = (_a = result.fullDescription) != null ? _a : result.description) != null ? _b : "";
|
|
1041
|
+
if (typeof full !== "string") return "";
|
|
1042
|
+
const text = full || "";
|
|
1043
|
+
return text.length > 200 ? `${text.slice(0, 200).trimEnd()}...` : text;
|
|
1044
|
+
})() }) : /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body1", children: result.description }),
|
|
1045
|
+
result.tags && result.tags.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { mt: 1, display: "flex", flexWrap: "wrap", gap: 1 }, children: renderTagsFromIds(result.tags, tags) })
|
|
1046
1046
|
] })
|
|
1047
1047
|
] })
|
|
1048
1048
|
}
|
|
@@ -1097,21 +1097,60 @@ var PlayerResultCard = ({
|
|
|
1097
1097
|
return /* @__PURE__ */ jsxRuntime.jsx(BaseSearchResultCard_default, { result, onClick, icon: playerIcon, tags });
|
|
1098
1098
|
};
|
|
1099
1099
|
var PlayerResultCard_default = PlayerResultCard;
|
|
1100
|
-
var TableResultCard = ({
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1100
|
+
var TableResultCard = ({
|
|
1101
|
+
result,
|
|
1102
|
+
onClick,
|
|
1103
|
+
tags
|
|
1104
|
+
}) => {
|
|
1105
|
+
const rawCapacity = result.capacity;
|
|
1106
|
+
const hasDefinedCapacity = typeof rawCapacity === "number" && Number.isFinite(rawCapacity) && rawCapacity > 0;
|
|
1107
|
+
const capacity = hasDefinedCapacity ? rawCapacity : 0;
|
|
1108
|
+
const activePlayers = typeof result.numPlayers === "number" ? result.numPlayers : 0;
|
|
1109
|
+
const availableSlots = Math.max(capacity - activePlayers, 0);
|
|
1110
|
+
const hasDM = typeof result.hasDM === "boolean" ? result.hasDM : Boolean(result.dungeonMaster);
|
|
1111
|
+
const occupancyPercentage = hasDefinedCapacity ? activePlayers / capacity * 100 : 100;
|
|
1112
|
+
const tableIcon = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1113
|
+
TableRestaurantIcon__default.default,
|
|
1114
|
+
{
|
|
1115
|
+
sx: {
|
|
1116
|
+
fontSize: 40,
|
|
1117
|
+
color: "primary.main"
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
);
|
|
1121
|
+
return /* @__PURE__ */ jsxRuntime.jsx(BaseSearchResultCard_default, { result, onClick, icon: tableIcon, tags, children: /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
|
|
1122
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: [
|
|
1123
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
|
|
1124
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Players:" }),
|
|
1125
|
+
" ",
|
|
1126
|
+
hasDefinedCapacity ? `${activePlayers}/${capacity}` : activePlayers
|
|
1111
1127
|
] }),
|
|
1112
|
-
|
|
1128
|
+
typeof hasDM === "boolean" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1129
|
+
Chip2__default.default,
|
|
1130
|
+
{
|
|
1131
|
+
icon: hasDM ? /* @__PURE__ */ jsxRuntime.jsx(SupervisorAccountIcon__default.default, {}) : /* @__PURE__ */ jsxRuntime.jsx(PersonIcon__default.default, {}),
|
|
1132
|
+
label: hasDM ? "DM Present" : "No DM",
|
|
1133
|
+
color: hasDM ? "success" : "warning",
|
|
1134
|
+
size: "small"
|
|
1135
|
+
}
|
|
1136
|
+
)
|
|
1113
1137
|
] }),
|
|
1114
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1138
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1139
|
+
LinearProgress__default.default,
|
|
1140
|
+
{
|
|
1141
|
+
variant: "determinate",
|
|
1142
|
+
value: occupancyPercentage,
|
|
1143
|
+
sx: {
|
|
1144
|
+
height: 10,
|
|
1145
|
+
borderRadius: 5,
|
|
1146
|
+
backgroundColor: "#e0e0e0",
|
|
1147
|
+
"& .MuiLinearProgress-bar": {
|
|
1148
|
+
backgroundColor: hasDefinedCapacity ? availableSlots > 0 ? "#4caf50" : "#f44336" : "#2196f3"
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
),
|
|
1153
|
+
hasDefinedCapacity && /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body2", sx: { mt: 0.5, textAlign: "right" }, children: availableSlots > 0 ? `${availableSlots} slot${availableSlots !== 1 ? "s" : ""} available` : "Table full" })
|
|
1115
1154
|
] }) });
|
|
1116
1155
|
};
|
|
1117
1156
|
var TableResultCard_default = TableResultCard;
|
|
@@ -1130,20 +1169,42 @@ var EventResultCard = ({
|
|
|
1130
1169
|
try {
|
|
1131
1170
|
const date = new Date(dateString);
|
|
1132
1171
|
return date.toLocaleDateString("en-US", options);
|
|
1133
|
-
} catch {
|
|
1172
|
+
} catch (error) {
|
|
1134
1173
|
return dateString;
|
|
1135
1174
|
}
|
|
1136
1175
|
};
|
|
1137
1176
|
const formattedDate = result.date ? formatDate(result.date) : "Date TBD";
|
|
1138
1177
|
const location = result.location || "Location TBD";
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1178
|
+
const eventIcon = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1179
|
+
EventIcon__default.default,
|
|
1180
|
+
{
|
|
1181
|
+
sx: {
|
|
1182
|
+
fontSize: 40,
|
|
1183
|
+
color: "primary.main"
|
|
1184
|
+
}
|
|
1185
|
+
}
|
|
1186
|
+
);
|
|
1187
|
+
return /* @__PURE__ */ jsxRuntime.jsx(BaseSearchResultCard_default, { result, onClick, icon: eventIcon, tags, children: /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
|
|
1188
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", alignItems: "center", mb: 1 }, children: [
|
|
1189
|
+
/* @__PURE__ */ jsxRuntime.jsx(CalendarTodayIcon__default.default, { sx: { mr: 1, color: "primary.main" } }),
|
|
1190
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
|
|
1191
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Date:" }),
|
|
1192
|
+
" ",
|
|
1193
|
+
formattedDate
|
|
1194
|
+
] })
|
|
1195
|
+
] }),
|
|
1196
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", alignItems: "center" }, children: [
|
|
1197
|
+
/* @__PURE__ */ jsxRuntime.jsx(LocationOnIcon__default.default, { sx: { mr: 1, color: "primary.main" } }),
|
|
1198
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
|
|
1199
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Location:" }),
|
|
1200
|
+
" ",
|
|
1201
|
+
location
|
|
1202
|
+
] })
|
|
1143
1203
|
] }),
|
|
1144
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1145
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1146
|
-
|
|
1204
|
+
result.organizer && /* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", sx: { mt: 1 }, children: [
|
|
1205
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Organizer:" }),
|
|
1206
|
+
" ",
|
|
1207
|
+
result.organizer
|
|
1147
1208
|
] })
|
|
1148
1209
|
] }) });
|
|
1149
1210
|
};
|
|
@@ -1151,9 +1212,11 @@ var EventResultCard_default = EventResultCard;
|
|
|
1151
1212
|
var ResultsContainer = ({
|
|
1152
1213
|
results,
|
|
1153
1214
|
onResultClick,
|
|
1154
|
-
tags
|
|
1215
|
+
tags,
|
|
1216
|
+
pagination,
|
|
1217
|
+
onPacketChange
|
|
1155
1218
|
}) => {
|
|
1156
|
-
if (results.length === 0 || !results.map) {
|
|
1219
|
+
if (!results || results.length === 0 || !results.map) {
|
|
1157
1220
|
return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { textAlign: "center", py: 4 }, children: "No results found. Try adjusting your filters." });
|
|
1158
1221
|
}
|
|
1159
1222
|
const onPlayerClick = (id) => {
|
|
@@ -1165,43 +1228,68 @@ var ResultsContainer = ({
|
|
|
1165
1228
|
const onEventClick = (id) => {
|
|
1166
1229
|
onResultClick == null ? void 0 : onResultClick(id, "event");
|
|
1167
1230
|
};
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1231
|
+
const handlePacketChange = (_event, packet) => {
|
|
1232
|
+
onPacketChange == null ? void 0 : onPacketChange(packet);
|
|
1233
|
+
};
|
|
1234
|
+
const startResult = pagination ? (pagination.currentPacket - 1) * pagination.packetSize + 1 : 1;
|
|
1235
|
+
const endResult = pagination ? Math.min(pagination.currentPacket * pagination.packetSize, pagination.totalResults) : results.length;
|
|
1236
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", flexDirection: "column", gap: 2 }, children: [
|
|
1237
|
+
pagination && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", color: "text.secondary", children: [
|
|
1238
|
+
"Showing ",
|
|
1239
|
+
startResult,
|
|
1240
|
+
"-",
|
|
1241
|
+
endResult,
|
|
1242
|
+
" of ",
|
|
1243
|
+
pagination.totalResults,
|
|
1244
|
+
" results"
|
|
1245
|
+
] }) }),
|
|
1246
|
+
results.map((result, index) => {
|
|
1247
|
+
switch (result.type) {
|
|
1248
|
+
case "player":
|
|
1249
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1250
|
+
PlayerResultCard_default,
|
|
1251
|
+
{
|
|
1252
|
+
result,
|
|
1253
|
+
onClick: onPlayerClick,
|
|
1254
|
+
tags
|
|
1255
|
+
},
|
|
1256
|
+
result.id
|
|
1257
|
+
);
|
|
1258
|
+
case "table":
|
|
1259
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1260
|
+
TableResultCard_default,
|
|
1261
|
+
{
|
|
1262
|
+
result,
|
|
1263
|
+
onClick: onTableClick,
|
|
1264
|
+
tags
|
|
1265
|
+
},
|
|
1266
|
+
result.id
|
|
1267
|
+
);
|
|
1268
|
+
case "event":
|
|
1269
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1270
|
+
EventResultCard_default,
|
|
1271
|
+
{
|
|
1272
|
+
result,
|
|
1273
|
+
onClick: onEventClick,
|
|
1274
|
+
tags
|
|
1275
|
+
},
|
|
1276
|
+
result.id
|
|
1277
|
+
);
|
|
1278
|
+
default:
|
|
1279
|
+
console.error(`Unknown result type: ${result.type}`);
|
|
1280
|
+
return null;
|
|
1281
|
+
}
|
|
1282
|
+
}),
|
|
1283
|
+
pagination && pagination.totalPackets > 1 && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", justifyContent: "center", mt: 4 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1284
|
+
Pagination__default.default,
|
|
1285
|
+
{
|
|
1286
|
+
count: pagination.totalPackets,
|
|
1287
|
+
page: pagination.currentPacket,
|
|
1288
|
+
onChange: handlePacketChange,
|
|
1289
|
+
color: "primary"
|
|
1290
|
+
}
|
|
1291
|
+
) })
|
|
1292
|
+
] });
|
|
1205
1293
|
};
|
|
1206
1294
|
var ResultsContainer_default = ResultsContainer;
|
|
1207
1295
|
var ScrollableResultsList = ({
|
|
@@ -1219,21 +1307,14 @@ var TablesScrollableList = ({
|
|
|
1219
1307
|
results,
|
|
1220
1308
|
tags,
|
|
1221
1309
|
maxHeight,
|
|
1222
|
-
onResultClick
|
|
1223
|
-
sortBy = "availability"
|
|
1310
|
+
onResultClick
|
|
1224
1311
|
}) => {
|
|
1225
1312
|
const tables = (results || []).filter((r) => (r == null ? void 0 : r.type) === "table");
|
|
1226
|
-
const getAvailableSlots = (r) => {
|
|
1227
|
-
const capacity = typeof r.capacity === "number" ? r.capacity : 0;
|
|
1228
|
-
const playersCount = typeof r.numPlayers === "number" ? r.numPlayers : 0;
|
|
1229
|
-
return Math.max(capacity - playersCount, 0);
|
|
1230
|
-
};
|
|
1231
|
-
const sortedTables = sortBy === "availability" ? [...tables].sort((a, b) => getAvailableSlots(b) - getAvailableSlots(a)) : tables;
|
|
1232
1313
|
const handleClick = (id) => onResultClick == null ? void 0 : onResultClick(id);
|
|
1233
1314
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1234
1315
|
ScrollableResultsList_default,
|
|
1235
1316
|
{
|
|
1236
|
-
results:
|
|
1317
|
+
results: tables,
|
|
1237
1318
|
tags,
|
|
1238
1319
|
maxHeight,
|
|
1239
1320
|
onResultClick: (id, type) => {
|
|
@@ -1251,8 +1332,8 @@ var EventTablesCard = ({
|
|
|
1251
1332
|
}) => {
|
|
1252
1333
|
return /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { elevation: 6, sx: { width: "100%", boxShadow: "0px 8px 24px rgba(0, 0, 0, 0.15)" }, children: [
|
|
1253
1334
|
/* @__PURE__ */ jsxRuntime.jsx(CardHeader4__default.default, { title: "Tables" }),
|
|
1254
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1255
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardContent10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(TablesScrollableList_default, { results: tables, tags, maxHeight, onResultClick: onTableClick
|
|
1335
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, {}),
|
|
1336
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardContent10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(TablesScrollableList_default, { results: tables, tags, maxHeight, onResultClick: onTableClick }) })
|
|
1256
1337
|
] });
|
|
1257
1338
|
};
|
|
1258
1339
|
var EventTablesCard_default = EventTablesCard;
|
|
@@ -1812,6 +1893,26 @@ function PlayerPageLayout({
|
|
|
1812
1893
|
] }) })
|
|
1813
1894
|
] }) }) });
|
|
1814
1895
|
}
|
|
1896
|
+
var ExpiredTablesFilter = ({
|
|
1897
|
+
includeExpiredTables,
|
|
1898
|
+
onChange
|
|
1899
|
+
}) => {
|
|
1900
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { mt: 2 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1901
|
+
FormControlLabel__default.default,
|
|
1902
|
+
{
|
|
1903
|
+
control: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1904
|
+
Checkbox__default.default,
|
|
1905
|
+
{
|
|
1906
|
+
checked: includeExpiredTables,
|
|
1907
|
+
onChange: (e) => onChange(e.target.checked),
|
|
1908
|
+
color: "primary"
|
|
1909
|
+
}
|
|
1910
|
+
),
|
|
1911
|
+
label: "Show expired tables"
|
|
1912
|
+
}
|
|
1913
|
+
) });
|
|
1914
|
+
};
|
|
1915
|
+
var ExpiredTablesFilter_default = ExpiredTablesFilter;
|
|
1815
1916
|
var SORT_OPTIONS = [
|
|
1816
1917
|
{ id: "relevance", label: "Relevance" },
|
|
1817
1918
|
{ id: "newest", label: "Newest" },
|
|
@@ -1825,7 +1926,7 @@ var SortOptions = ({
|
|
|
1825
1926
|
onChange == null ? void 0 : onChange(event.target.value);
|
|
1826
1927
|
};
|
|
1827
1928
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1828
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1929
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "h6", gutterBottom: true, children: "Sort By" }),
|
|
1829
1930
|
/* @__PURE__ */ jsxRuntime.jsx(FormControl2__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(RadioGroup__default.default, { defaultValue: defaultValue2, onChange: handleSortChange, children: SORT_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1830
1931
|
FormControlLabel__default.default,
|
|
1831
1932
|
{
|
|
@@ -1840,11 +1941,19 @@ var SortOptions = ({
|
|
|
1840
1941
|
var SortOptions_default = SortOptions;
|
|
1841
1942
|
var TagsFilter = ({
|
|
1842
1943
|
onChange,
|
|
1843
|
-
tags: Tags = []
|
|
1944
|
+
tags: Tags = [],
|
|
1945
|
+
initialSelectedTags
|
|
1844
1946
|
}) => {
|
|
1845
|
-
const [mustHaveTags, setMustHaveTags] = React7__default.default.useState([]);
|
|
1846
|
-
const [mustNotHaveTags, setMustNotHaveTags] = React7__default.default.useState([]);
|
|
1847
|
-
const [shouldHaveAtLeastOneTags, setShouldHaveAtLeastOneTags] = React7__default.default.useState([]);
|
|
1947
|
+
const [mustHaveTags, setMustHaveTags] = React7__default.default.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.mustHave) || []);
|
|
1948
|
+
const [mustNotHaveTags, setMustNotHaveTags] = React7__default.default.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.mustNotHave) || []);
|
|
1949
|
+
const [shouldHaveAtLeastOneTags, setShouldHaveAtLeastOneTags] = React7__default.default.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.shouldHaveAtLeastOne) || []);
|
|
1950
|
+
React7__default.default.useEffect(() => {
|
|
1951
|
+
if (initialSelectedTags) {
|
|
1952
|
+
setMustHaveTags(initialSelectedTags.mustHave || []);
|
|
1953
|
+
setMustNotHaveTags(initialSelectedTags.mustNotHave || []);
|
|
1954
|
+
setShouldHaveAtLeastOneTags(initialSelectedTags.shouldHaveAtLeastOne || []);
|
|
1955
|
+
}
|
|
1956
|
+
}, [initialSelectedTags]);
|
|
1848
1957
|
Tags = !!Tags ? Tags : [];
|
|
1849
1958
|
const [inputValues, setInputValues] = React7__default.default.useState({
|
|
1850
1959
|
mustHave: "",
|
|
@@ -1854,7 +1963,7 @@ var TagsFilter = ({
|
|
|
1854
1963
|
const tagOptions = React7__default.default.useMemo(() => {
|
|
1855
1964
|
console.log("available tags: " + JSON.stringify(Tags));
|
|
1856
1965
|
console.log(!Tags);
|
|
1857
|
-
if (!Tags || Tags.length
|
|
1966
|
+
if (!Tags || Tags.length === 0 || !Tags.map) return [];
|
|
1858
1967
|
return Tags.map((tag) => ({
|
|
1859
1968
|
value: tag.id,
|
|
1860
1969
|
label: tag.label
|
|
@@ -1886,7 +1995,7 @@ var TagsFilter = ({
|
|
|
1886
1995
|
};
|
|
1887
1996
|
const renderSelectedTags = (selectedTags, category) => {
|
|
1888
1997
|
const tagValues = [];
|
|
1889
|
-
if (!Tags || Tags.length
|
|
1998
|
+
if (!Tags || Tags.length === 0 || !Tags.map) return null;
|
|
1890
1999
|
Tags.forEach((tag) => {
|
|
1891
2000
|
if (selectedTags.includes(tag.id)) {
|
|
1892
2001
|
tagValues.push(tag);
|
|
@@ -1895,27 +2004,11 @@ var TagsFilter = ({
|
|
|
1895
2004
|
if (tagValues.length === 0) {
|
|
1896
2005
|
return null;
|
|
1897
2006
|
}
|
|
1898
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", flexWrap: "wrap", gap: 1, mb: 2 }, children: tagValues.map((tag) => /* @__PURE__ */ jsxRuntime.
|
|
1899
|
-
|
|
2007
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", flexWrap: "wrap", gap: 1, mb: 2 }, children: tagValues.map((tag) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2008
|
+
Chip,
|
|
1900
2009
|
{
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
background: tag.color || "#bfbcbb",
|
|
1904
|
-
color: "white",
|
|
1905
|
-
textShadow: "black 0.2em 0.2em 0.4em"
|
|
1906
|
-
},
|
|
1907
|
-
children: [
|
|
1908
|
-
tag.label,
|
|
1909
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1910
|
-
"button",
|
|
1911
|
-
{
|
|
1912
|
-
type: "button",
|
|
1913
|
-
onClick: () => handleTagChange(tag.id, category),
|
|
1914
|
-
className: "ml-2 text-red-500 bg-white bg-opacity-50 rounded-full outline-black outline-2 font-outlined",
|
|
1915
|
-
children: "\xD7"
|
|
1916
|
-
}
|
|
1917
|
-
)
|
|
1918
|
-
]
|
|
2010
|
+
tag,
|
|
2011
|
+
removeCallback: (tagId) => handleTagChange(tagId, category)
|
|
1919
2012
|
},
|
|
1920
2013
|
tag.id
|
|
1921
2014
|
)) });
|
|
@@ -1923,7 +2016,7 @@ var TagsFilter = ({
|
|
|
1923
2016
|
const createTagSelector = (category, label) => {
|
|
1924
2017
|
const selectedTags = category === "mustHave" ? mustHaveTags : category === "mustNotHave" ? mustNotHaveTags : shouldHaveAtLeastOneTags;
|
|
1925
2018
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1926
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2019
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "subtitle1", gutterBottom: true, sx: { mt: 2 }, children: label }),
|
|
1927
2020
|
renderSelectedTags(selectedTags, category),
|
|
1928
2021
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1929
2022
|
Autocomplete__default.default,
|
|
@@ -1976,11 +2069,11 @@ var TagsFilter = ({
|
|
|
1976
2069
|
] });
|
|
1977
2070
|
};
|
|
1978
2071
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1979
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2072
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "h6", gutterBottom: true, children: "Tags" }),
|
|
1980
2073
|
createTagSelector("mustHave", "Must Have Tags"),
|
|
1981
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2074
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } }),
|
|
1982
2075
|
createTagSelector("mustNotHave", "Must Not Have Tags"),
|
|
1983
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2076
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } }),
|
|
1984
2077
|
createTagSelector("shouldHaveAtLeastOne", "Should Contain At Least One Tag")
|
|
1985
2078
|
] });
|
|
1986
2079
|
};
|
|
@@ -2010,21 +2103,80 @@ var CustomPopper2 = (props) => {
|
|
|
2010
2103
|
);
|
|
2011
2104
|
};
|
|
2012
2105
|
var TagsFilter_default = TagsFilter;
|
|
2013
|
-
var
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2106
|
+
var TextSearchCard = ({ onChange, selectedTypes, initialTextSearch }) => {
|
|
2107
|
+
const [query, setQuery] = React7__default.default.useState((initialTextSearch == null ? void 0 : initialTextSearch.query) || "");
|
|
2108
|
+
const [titleOnly, setTitleOnly] = React7__default.default.useState((initialTextSearch == null ? void 0 : initialTextSearch.titleOnly) || false);
|
|
2109
|
+
React7.useEffect(() => {
|
|
2110
|
+
if (initialTextSearch) {
|
|
2111
|
+
setQuery(initialTextSearch.query || "");
|
|
2112
|
+
setTitleOnly(initialTextSearch.titleOnly || false);
|
|
2113
|
+
}
|
|
2114
|
+
}, [initialTextSearch]);
|
|
2115
|
+
const shouldShow = selectedTypes.includes("table") || selectedTypes.includes("event");
|
|
2116
|
+
if (!shouldShow) {
|
|
2117
|
+
return null;
|
|
2118
|
+
}
|
|
2119
|
+
const handleQueryChange = (e) => {
|
|
2120
|
+
const newQuery = e.target.value;
|
|
2121
|
+
setQuery(newQuery);
|
|
2122
|
+
if (onChange) {
|
|
2123
|
+
onChange({ query: newQuery, titleOnly });
|
|
2124
|
+
}
|
|
2125
|
+
};
|
|
2126
|
+
const handleTitleOnlyChange = (e) => {
|
|
2127
|
+
const newTitleOnly = e.target.checked;
|
|
2128
|
+
setTitleOnly(newTitleOnly);
|
|
2129
|
+
if (onChange) {
|
|
2130
|
+
onChange({ query, titleOnly: newTitleOnly });
|
|
2131
|
+
}
|
|
2132
|
+
};
|
|
2133
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2134
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "h6", gutterBottom: true, children: "Text Search" }),
|
|
2135
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
|
|
2136
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2137
|
+
TextField4__default.default,
|
|
2138
|
+
{
|
|
2139
|
+
fullWidth: true,
|
|
2140
|
+
label: "Search in title and description",
|
|
2141
|
+
variant: "outlined",
|
|
2142
|
+
value: query,
|
|
2143
|
+
onChange: handleQueryChange,
|
|
2144
|
+
placeholder: "Enter search terms...",
|
|
2145
|
+
sx: { mb: 1 }
|
|
2146
|
+
}
|
|
2147
|
+
),
|
|
2148
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2149
|
+
FormControlLabel__default.default,
|
|
2150
|
+
{
|
|
2151
|
+
control: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2152
|
+
Checkbox__default.default,
|
|
2153
|
+
{
|
|
2154
|
+
checked: titleOnly,
|
|
2155
|
+
onChange: handleTitleOnlyChange
|
|
2156
|
+
}
|
|
2157
|
+
),
|
|
2158
|
+
label: "Search in title only"
|
|
2159
|
+
}
|
|
2160
|
+
)
|
|
2161
|
+
] })
|
|
2162
|
+
] });
|
|
2163
|
+
};
|
|
2164
|
+
var TextSearchCard_default = TextSearchCard;
|
|
2165
|
+
var TypeFilter = ({ types, initialSelectedTypes = [], onChange }) => {
|
|
2166
|
+
const [selectedTypes, setSelectedTypes] = React7__default.default.useState(initialSelectedTypes);
|
|
2167
|
+
React7.useEffect(() => {
|
|
2168
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2169
|
+
}, [initialSelectedTypes]);
|
|
2020
2170
|
const handleTypeChange = (typeId) => {
|
|
2021
2171
|
const newSelectedTypes = selectedTypes.includes(typeId) ? selectedTypes.filter((id) => id !== typeId) : [...selectedTypes, typeId];
|
|
2022
2172
|
setSelectedTypes(newSelectedTypes);
|
|
2023
|
-
|
|
2173
|
+
if (onChange) {
|
|
2174
|
+
onChange(newSelectedTypes);
|
|
2175
|
+
}
|
|
2024
2176
|
};
|
|
2025
2177
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2026
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2027
|
-
/* @__PURE__ */ jsxRuntime.jsx(FormGroup__default.default, { children:
|
|
2178
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "h6", gutterBottom: true, children: "Type" }),
|
|
2179
|
+
/* @__PURE__ */ jsxRuntime.jsx(FormGroup__default.default, { children: types.map((type) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2028
2180
|
FormControlLabel__default.default,
|
|
2029
2181
|
{
|
|
2030
2182
|
control: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2032,7 +2184,8 @@ var TypeFilter = ({ onChange }) => {
|
|
|
2032
2184
|
{
|
|
2033
2185
|
checked: selectedTypes.includes(type.id),
|
|
2034
2186
|
onChange: () => handleTypeChange(type.id),
|
|
2035
|
-
disabled: type.
|
|
2187
|
+
disabled: type.id === "event",
|
|
2188
|
+
title: type.id === "event" ? "Coming soon! Currently only player and table search are supported." : ""
|
|
2036
2189
|
}
|
|
2037
2190
|
),
|
|
2038
2191
|
label: type.label
|
|
@@ -2043,22 +2196,67 @@ var TypeFilter = ({ onChange }) => {
|
|
|
2043
2196
|
};
|
|
2044
2197
|
var TypeFilter_default = TypeFilter;
|
|
2045
2198
|
var FiltersContainer = ({
|
|
2199
|
+
initialSelectedTypes = [],
|
|
2200
|
+
initialSelectedTags,
|
|
2201
|
+
initialTextSearch,
|
|
2202
|
+
includeExpiredTables = false,
|
|
2046
2203
|
onTypeChange,
|
|
2047
2204
|
onTagChange,
|
|
2205
|
+
onTextSearchChange,
|
|
2206
|
+
onIncludeExpiredTablesChange,
|
|
2048
2207
|
onSubmit,
|
|
2049
|
-
tags
|
|
2208
|
+
tags,
|
|
2209
|
+
searchTypes
|
|
2050
2210
|
}) => {
|
|
2211
|
+
const [selectedTypes, setSelectedTypes] = React7__default.default.useState(initialSelectedTypes);
|
|
2212
|
+
React7.useEffect(() => {
|
|
2213
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2214
|
+
}, [initialSelectedTypes]);
|
|
2215
|
+
const handleTypeChange = (types) => {
|
|
2216
|
+
setSelectedTypes(types);
|
|
2217
|
+
if (onTypeChange) {
|
|
2218
|
+
onTypeChange(types);
|
|
2219
|
+
}
|
|
2220
|
+
};
|
|
2051
2221
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { children: [
|
|
2052
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2053
|
-
|
|
2222
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2223
|
+
TypeFilter_default,
|
|
2224
|
+
{
|
|
2225
|
+
types: searchTypes,
|
|
2226
|
+
initialSelectedTypes,
|
|
2227
|
+
onChange: handleTypeChange
|
|
2228
|
+
}
|
|
2229
|
+
),
|
|
2230
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } }),
|
|
2231
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2232
|
+
TextSearchCard_default,
|
|
2233
|
+
{
|
|
2234
|
+
selectedTypes,
|
|
2235
|
+
initialTextSearch,
|
|
2236
|
+
onChange: onTextSearchChange
|
|
2237
|
+
}
|
|
2238
|
+
),
|
|
2239
|
+
(selectedTypes.includes("table") || selectedTypes.includes("event")) && /* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } }),
|
|
2054
2240
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2055
2241
|
TagsFilter_default,
|
|
2056
2242
|
{
|
|
2057
2243
|
tags,
|
|
2244
|
+
initialSelectedTags,
|
|
2058
2245
|
onChange: onTagChange
|
|
2059
2246
|
}
|
|
2060
2247
|
),
|
|
2061
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2248
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } }),
|
|
2249
|
+
selectedTypes.includes("table") && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2250
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2251
|
+
ExpiredTablesFilter_default,
|
|
2252
|
+
{
|
|
2253
|
+
includeExpiredTables,
|
|
2254
|
+
onChange: onIncludeExpiredTablesChange || (() => {
|
|
2255
|
+
})
|
|
2256
|
+
}
|
|
2257
|
+
),
|
|
2258
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } })
|
|
2259
|
+
] }),
|
|
2062
2260
|
/* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", justifyContent: "center", mt: 2 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2063
2261
|
Button7__default.default,
|
|
2064
2262
|
{
|
|
@@ -2116,16 +2314,75 @@ var SearchResultCard_default = SearchResultCard;
|
|
|
2116
2314
|
function SearchPageLayout({
|
|
2117
2315
|
results,
|
|
2118
2316
|
title = "Search Results",
|
|
2317
|
+
initialSelectedTypes = [],
|
|
2318
|
+
initialSelectedTags = {
|
|
2319
|
+
mustHave: [],
|
|
2320
|
+
mustNotHave: [],
|
|
2321
|
+
shouldHaveAtLeastOne: []
|
|
2322
|
+
},
|
|
2323
|
+
initialTextSearch = {
|
|
2324
|
+
query: "",
|
|
2325
|
+
titleOnly: false
|
|
2326
|
+
},
|
|
2327
|
+
includeExpiredTables: initialIncludeExpiredTables = false,
|
|
2119
2328
|
onTypeChange,
|
|
2120
2329
|
onTagChange,
|
|
2330
|
+
onTextSearchChange,
|
|
2331
|
+
onIncludeExpiredTablesChange,
|
|
2121
2332
|
onSubmit,
|
|
2122
2333
|
onResultClick,
|
|
2334
|
+
onPacketChange,
|
|
2335
|
+
pagination,
|
|
2123
2336
|
validTags,
|
|
2124
|
-
allTags
|
|
2337
|
+
allTags,
|
|
2338
|
+
searchTypes,
|
|
2339
|
+
isLoading = false
|
|
2125
2340
|
}) {
|
|
2126
|
-
"use client";
|
|
2127
2341
|
const theme = material.useTheme();
|
|
2128
2342
|
const isMobile = material.useMediaQuery(theme.breakpoints.down("md"));
|
|
2343
|
+
const [selectedTypes, setSelectedTypes] = React7.useState(initialSelectedTypes);
|
|
2344
|
+
const [selectedTags, setSelectedTags] = React7.useState(initialSelectedTags);
|
|
2345
|
+
const [textSearch, setTextSearch] = React7.useState(initialTextSearch);
|
|
2346
|
+
const [includeExpiredTables, setIncludeExpiredTables] = React7.useState(initialIncludeExpiredTables);
|
|
2347
|
+
React7.useEffect(() => {
|
|
2348
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2349
|
+
}, [initialSelectedTypes]);
|
|
2350
|
+
React7.useEffect(() => {
|
|
2351
|
+
setSelectedTags(initialSelectedTags);
|
|
2352
|
+
}, [initialSelectedTags]);
|
|
2353
|
+
React7.useEffect(() => {
|
|
2354
|
+
setTextSearch(initialTextSearch);
|
|
2355
|
+
}, [initialTextSearch]);
|
|
2356
|
+
React7.useEffect(() => {
|
|
2357
|
+
setIncludeExpiredTables(initialIncludeExpiredTables);
|
|
2358
|
+
}, [initialIncludeExpiredTables]);
|
|
2359
|
+
const handleTypeChange = (types) => {
|
|
2360
|
+
setSelectedTypes(types);
|
|
2361
|
+
if (onTypeChange) onTypeChange(types);
|
|
2362
|
+
};
|
|
2363
|
+
const handleTagChange = (tags) => {
|
|
2364
|
+
setSelectedTags(tags);
|
|
2365
|
+
if (onTagChange) onTagChange(tags);
|
|
2366
|
+
};
|
|
2367
|
+
const handleTextSearchChange = (ts) => {
|
|
2368
|
+
setTextSearch(ts);
|
|
2369
|
+
if (onTextSearchChange) onTextSearchChange(ts);
|
|
2370
|
+
};
|
|
2371
|
+
const handleIncludeExpiredTablesChange = (include) => {
|
|
2372
|
+
setIncludeExpiredTables(include);
|
|
2373
|
+
if (onIncludeExpiredTablesChange) onIncludeExpiredTablesChange(include);
|
|
2374
|
+
};
|
|
2375
|
+
const handleSubmit = () => {
|
|
2376
|
+
const currentCriteria = {
|
|
2377
|
+
selectedTypes,
|
|
2378
|
+
selectedTags,
|
|
2379
|
+
textSearch,
|
|
2380
|
+
includeExpiredTables
|
|
2381
|
+
};
|
|
2382
|
+
if (onSubmit) {
|
|
2383
|
+
onSubmit(currentCriteria);
|
|
2384
|
+
}
|
|
2385
|
+
};
|
|
2129
2386
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { padding: 2 }, children: [
|
|
2130
2387
|
/* @__PURE__ */ jsxRuntime.jsx(Card10__default.default, { sx: { marginBottom: 2 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2131
2388
|
CardHeader4__default.default,
|
|
@@ -2156,10 +2413,17 @@ function SearchPageLayout({
|
|
|
2156
2413
|
/* @__PURE__ */ jsxRuntime.jsx(CardContent10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2157
2414
|
FiltersContainer_default,
|
|
2158
2415
|
{
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2416
|
+
initialSelectedTypes: selectedTypes,
|
|
2417
|
+
initialSelectedTags: selectedTags,
|
|
2418
|
+
initialTextSearch: textSearch,
|
|
2419
|
+
includeExpiredTables,
|
|
2420
|
+
onTypeChange: handleTypeChange,
|
|
2421
|
+
onTagChange: handleTagChange,
|
|
2422
|
+
onTextSearchChange: handleTextSearchChange,
|
|
2423
|
+
onIncludeExpiredTablesChange: handleIncludeExpiredTablesChange,
|
|
2424
|
+
onSubmit: handleSubmit,
|
|
2425
|
+
tags: validTags,
|
|
2426
|
+
searchTypes
|
|
2163
2427
|
}
|
|
2164
2428
|
) })
|
|
2165
2429
|
] }) }),
|
|
@@ -2176,10 +2440,12 @@ function SearchPageLayout({
|
|
|
2176
2440
|
}
|
|
2177
2441
|
}
|
|
2178
2442
|
),
|
|
2179
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardContent10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2443
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardContent10__default.default, { children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", justifyContent: "center", py: 8 }, children: /* @__PURE__ */ jsxRuntime.jsx(CircularProgress3__default.default, { size: 60, thickness: 4 }) }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2180
2444
|
ResultsContainer_default,
|
|
2181
2445
|
{
|
|
2182
2446
|
results,
|
|
2447
|
+
pagination,
|
|
2448
|
+
onPacketChange,
|
|
2183
2449
|
onResultClick,
|
|
2184
2450
|
tags: allTags
|
|
2185
2451
|
}
|
|
@@ -2747,11 +3013,13 @@ exports.EventEditProvider = EventEditProvider;
|
|
|
2747
3013
|
exports.EventPageLayout = EventPageLayout;
|
|
2748
3014
|
exports.EventResultCard = EventResultCard_default;
|
|
2749
3015
|
exports.EventTablesCard = EventTablesCard_default;
|
|
3016
|
+
exports.ExpiredTablesFilter = ExpiredTablesFilter_default;
|
|
2750
3017
|
exports.FiltersContainer = FiltersContainer_default;
|
|
2751
3018
|
exports.GameTableProvider = GameTableProvider;
|
|
2752
3019
|
exports.ModalContext = ModalContext;
|
|
2753
3020
|
exports.ModalProvider = ModalProvider_default;
|
|
2754
3021
|
exports.NextGameCountdown = NextGameCountdown;
|
|
3022
|
+
exports.NextGameLabel = NextGameLabel_default;
|
|
2755
3023
|
exports.PlayerDetailsCard = PlayerDetailsCard_default;
|
|
2756
3024
|
exports.PlayerDisplayCard = PlayerDisplayCard_default;
|
|
2757
3025
|
exports.PlayerHighlightsCard = PlayerHighlightsCard;
|
|
@@ -2772,6 +3040,7 @@ exports.TableResultCard = TableResultCard_default;
|
|
|
2772
3040
|
exports.TablesScrollableList = TablesScrollableList_default;
|
|
2773
3041
|
exports.TagEditor = TagEditor;
|
|
2774
3042
|
exports.TagsFilter = TagsFilter_default;
|
|
3043
|
+
exports.TextSearchCard = TextSearchCard_default;
|
|
2775
3044
|
exports.TypeFilter = TypeFilter_default;
|
|
2776
3045
|
exports.generateTagsDisplay = generateTagsDisplay;
|
|
2777
3046
|
exports.renderTagsFromIds = renderTagsFromIds;
|