@mbpockets/shared-ui 0.1.20 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EventPage/index.cjs +208 -121
- package/dist/EventPage/index.cjs.map +1 -1
- package/dist/EventPage/index.mjs +200 -119
- package/dist/EventPage/index.mjs.map +1 -1
- package/dist/EventPage.cjs +208 -121
- package/dist/EventPage.cjs.map +1 -1
- package/dist/EventPage.mjs +200 -119
- package/dist/EventPage.mjs.map +1 -1
- package/dist/PlayerPage/index.cjs.map +1 -1
- package/dist/PlayerPage/index.mjs.map +1 -1
- package/dist/PlayerPage.cjs.map +1 -1
- package/dist/PlayerPage.mjs.map +1 -1
- package/dist/ProfilePage/index.cjs.map +1 -1
- package/dist/ProfilePage/index.mjs.map +1 -1
- package/dist/ProfilePage.cjs.map +1 -1
- package/dist/ProfilePage.mjs.map +1 -1
- package/dist/SearchPage/Filters/index.cjs +149 -43
- package/dist/SearchPage/Filters/index.cjs.map +1 -1
- package/dist/SearchPage/Filters/index.d.cts +1 -2
- package/dist/SearchPage/Filters/index.d.ts +1 -2
- package/dist/SearchPage/Filters/index.mjs +146 -42
- package/dist/SearchPage/Filters/index.mjs.map +1 -1
- package/dist/SearchPage/Filters.cjs +149 -43
- package/dist/SearchPage/Filters.cjs.map +1 -1
- package/dist/SearchPage/Filters.d.cts +38 -3
- package/dist/SearchPage/Filters.d.ts +38 -3
- package/dist/SearchPage/Filters.mjs +146 -42
- package/dist/SearchPage/Filters.mjs.map +1 -1
- package/dist/SearchPage/Results/index.cjs +138 -67
- package/dist/SearchPage/Results/index.cjs.map +1 -1
- package/dist/SearchPage/Results/index.mjs +126 -63
- package/dist/SearchPage/Results/index.mjs.map +1 -1
- package/dist/SearchPage/Results.cjs +138 -67
- package/dist/SearchPage/Results.cjs.map +1 -1
- package/dist/SearchPage/Results.d.cts +21 -12
- package/dist/SearchPage/Results.d.ts +21 -12
- package/dist/SearchPage/Results.mjs +126 -63
- package/dist/SearchPage/Results.mjs.map +1 -1
- package/dist/SearchPage/index.cjs +495 -221
- package/dist/SearchPage/index.cjs.map +1 -1
- package/dist/SearchPage/index.d.cts +1 -1
- package/dist/SearchPage/index.d.ts +1 -1
- package/dist/SearchPage/index.mjs +482 -216
- package/dist/SearchPage/index.mjs.map +1 -1
- package/dist/SearchPage.cjs +495 -221
- package/dist/SearchPage.cjs.map +1 -1
- package/dist/SearchPage.d.cts +78 -7
- package/dist/SearchPage.d.ts +78 -7
- package/dist/SearchPage.mjs +482 -216
- package/dist/SearchPage.mjs.map +1 -1
- package/dist/TablePage/index.cjs +10 -1
- package/dist/TablePage/index.cjs.map +1 -1
- package/dist/TablePage/index.d.cts +2 -2
- package/dist/TablePage/index.d.ts +2 -2
- package/dist/TablePage/index.mjs +10 -2
- package/dist/TablePage/index.mjs.map +1 -1
- package/dist/TablePage.cjs +10 -1
- package/dist/TablePage.cjs.map +1 -1
- package/dist/TablePage.d.cts +7 -2
- package/dist/TablePage.d.ts +7 -2
- package/dist/TablePage.mjs +10 -2
- package/dist/TablePage.mjs.map +1 -1
- package/dist/index.cjs +446 -178
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.mjs +434 -175
- package/dist/index.mjs.map +1 -1
- package/dist/mocks/SearchResults.cjs +22 -15
- package/dist/mocks/SearchResults.cjs.map +1 -1
- package/dist/mocks/SearchResults.d.cts +3 -15
- package/dist/mocks/SearchResults.d.ts +3 -15
- package/dist/mocks/SearchResults.mjs +22 -15
- package/dist/mocks/SearchResults.mjs.map +1 -1
- package/dist/mocks/index.cjs +22 -15
- package/dist/mocks/index.cjs.map +1 -1
- package/dist/mocks/index.d.cts +2 -1
- package/dist/mocks/index.d.ts +2 -1
- package/dist/mocks/index.mjs +22 -15
- package/dist/mocks/index.mjs.map +1 -1
- package/dist/mocks.cjs +22 -15
- package/dist/mocks.cjs.map +1 -1
- package/dist/mocks.d.cts +2 -1
- package/dist/mocks.d.ts +2 -1
- package/dist/mocks.mjs +22 -15
- package/dist/mocks.mjs.map +1 -1
- package/dist/{common → shared}/index.cjs.map +1 -1
- package/dist/{common → shared}/index.d.cts +1 -1
- package/dist/{common → shared}/index.d.ts +1 -1
- package/dist/{common → shared}/index.mjs.map +1 -1
- package/dist/{common.cjs → shared.cjs} +2 -2
- package/dist/{common.cjs.map → shared.cjs.map} +1 -1
- package/dist/{common.css → shared.css} +1 -1
- package/dist/{common.mjs → shared.mjs} +2 -2
- package/dist/{common.mjs.map → shared.mjs.map} +1 -1
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/search.d.cts +23 -1
- package/dist/types/search.d.ts +23 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
- /package/dist/{common → shared}/Modal/index.cjs +0 -0
- /package/dist/{common → shared}/Modal/index.cjs.map +0 -0
- /package/dist/{common → shared}/Modal/index.css +0 -0
- /package/dist/{common → shared}/Modal/index.css.map +0 -0
- /package/dist/{common → shared}/Modal/index.d.cts +0 -0
- /package/dist/{common → shared}/Modal/index.d.ts +0 -0
- /package/dist/{common → shared}/Modal/index.mjs +0 -0
- /package/dist/{common → shared}/Modal/index.mjs.map +0 -0
- /package/dist/{common → shared}/Modal.cjs +0 -0
- /package/dist/{common → shared}/Modal.cjs.map +0 -0
- /package/dist/{common → shared}/Modal.css +0 -0
- /package/dist/{common → shared}/Modal.css.map +0 -0
- /package/dist/{common → shared}/Modal.d.cts +0 -0
- /package/dist/{common → shared}/Modal.d.ts +0 -0
- /package/dist/{common → shared}/Modal.mjs +0 -0
- /package/dist/{common → shared}/Modal.mjs.map +0 -0
- /package/dist/{common → shared}/index.cjs +0 -0
- /package/dist/{common → shared}/index.css +0 -0
- /package/dist/{common → shared}/index.css.map +0 -0
- /package/dist/{common → shared}/index.mjs +0 -0
- /package/dist/{common.css.map → shared.css.map} +0 -0
- /package/dist/{common.d.cts → shared.d.cts} +0 -0
- /package/dist/{common.d.ts → shared.d.ts} +0 -0
package/dist/index.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,21 @@ 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
|
-
// Add some padding to prevent clipping of the leftmost tag
|
|
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
|
+
const text = full || "";
|
|
1042
|
+
return text.length > 200 ? `${text.slice(0, 200).trimEnd()}...` : text;
|
|
1043
|
+
})() }) : /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body1", children: result.description }),
|
|
1044
|
+
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
1045
|
] })
|
|
1047
1046
|
] })
|
|
1048
1047
|
}
|
|
@@ -1097,21 +1096,60 @@ var PlayerResultCard = ({
|
|
|
1097
1096
|
return /* @__PURE__ */ jsxRuntime.jsx(BaseSearchResultCard_default, { result, onClick, icon: playerIcon, tags });
|
|
1098
1097
|
};
|
|
1099
1098
|
var PlayerResultCard_default = PlayerResultCard;
|
|
1100
|
-
var TableResultCard = ({
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1099
|
+
var TableResultCard = ({
|
|
1100
|
+
result,
|
|
1101
|
+
onClick,
|
|
1102
|
+
tags
|
|
1103
|
+
}) => {
|
|
1104
|
+
const rawCapacity = result.capacity;
|
|
1105
|
+
const hasDefinedCapacity = typeof rawCapacity === "number" && Number.isFinite(rawCapacity) && rawCapacity > 0;
|
|
1106
|
+
const capacity = hasDefinedCapacity ? rawCapacity : 0;
|
|
1107
|
+
const activePlayers = typeof result.numPlayers === "number" ? result.numPlayers : 0;
|
|
1108
|
+
const availableSlots = Math.max(capacity - activePlayers, 0);
|
|
1109
|
+
const hasDM = typeof result.hasDM === "boolean" ? result.hasDM : Boolean(result.dungeonMaster);
|
|
1110
|
+
const occupancyPercentage = hasDefinedCapacity ? activePlayers / capacity * 100 : 100;
|
|
1111
|
+
const tableIcon = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1112
|
+
TableRestaurantIcon__default.default,
|
|
1113
|
+
{
|
|
1114
|
+
sx: {
|
|
1115
|
+
fontSize: 40,
|
|
1116
|
+
color: "primary.main"
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
);
|
|
1120
|
+
return /* @__PURE__ */ jsxRuntime.jsx(BaseSearchResultCard_default, { result, onClick, icon: tableIcon, tags, children: /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
|
|
1121
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: [
|
|
1122
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
|
|
1123
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Players:" }),
|
|
1124
|
+
" ",
|
|
1125
|
+
hasDefinedCapacity ? `${activePlayers}/${capacity}` : activePlayers
|
|
1111
1126
|
] }),
|
|
1112
|
-
|
|
1127
|
+
typeof hasDM === "boolean" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1128
|
+
Chip2__default.default,
|
|
1129
|
+
{
|
|
1130
|
+
icon: hasDM ? /* @__PURE__ */ jsxRuntime.jsx(SupervisorAccountIcon__default.default, {}) : /* @__PURE__ */ jsxRuntime.jsx(PersonIcon__default.default, {}),
|
|
1131
|
+
label: hasDM ? "DM Present" : "No DM",
|
|
1132
|
+
color: hasDM ? "success" : "warning",
|
|
1133
|
+
size: "small"
|
|
1134
|
+
}
|
|
1135
|
+
)
|
|
1113
1136
|
] }),
|
|
1114
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1137
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1138
|
+
LinearProgress__default.default,
|
|
1139
|
+
{
|
|
1140
|
+
variant: "determinate",
|
|
1141
|
+
value: occupancyPercentage,
|
|
1142
|
+
sx: {
|
|
1143
|
+
height: 10,
|
|
1144
|
+
borderRadius: 5,
|
|
1145
|
+
backgroundColor: "#e0e0e0",
|
|
1146
|
+
"& .MuiLinearProgress-bar": {
|
|
1147
|
+
backgroundColor: hasDefinedCapacity ? availableSlots > 0 ? "#4caf50" : "#f44336" : "#2196f3"
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
),
|
|
1152
|
+
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
1153
|
] }) });
|
|
1116
1154
|
};
|
|
1117
1155
|
var TableResultCard_default = TableResultCard;
|
|
@@ -1130,20 +1168,42 @@ var EventResultCard = ({
|
|
|
1130
1168
|
try {
|
|
1131
1169
|
const date = new Date(dateString);
|
|
1132
1170
|
return date.toLocaleDateString("en-US", options);
|
|
1133
|
-
} catch {
|
|
1171
|
+
} catch (error) {
|
|
1134
1172
|
return dateString;
|
|
1135
1173
|
}
|
|
1136
1174
|
};
|
|
1137
1175
|
const formattedDate = result.date ? formatDate(result.date) : "Date TBD";
|
|
1138
1176
|
const location = result.location || "Location TBD";
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1177
|
+
const eventIcon = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1178
|
+
EventIcon__default.default,
|
|
1179
|
+
{
|
|
1180
|
+
sx: {
|
|
1181
|
+
fontSize: 40,
|
|
1182
|
+
color: "primary.main"
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
);
|
|
1186
|
+
return /* @__PURE__ */ jsxRuntime.jsx(BaseSearchResultCard_default, { result, onClick, icon: eventIcon, tags, children: /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
|
|
1187
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", alignItems: "center", mb: 1 }, children: [
|
|
1188
|
+
/* @__PURE__ */ jsxRuntime.jsx(CalendarTodayIcon__default.default, { sx: { mr: 1, color: "primary.main" } }),
|
|
1189
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
|
|
1190
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Date:" }),
|
|
1191
|
+
" ",
|
|
1192
|
+
formattedDate
|
|
1193
|
+
] })
|
|
1194
|
+
] }),
|
|
1195
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", alignItems: "center" }, children: [
|
|
1196
|
+
/* @__PURE__ */ jsxRuntime.jsx(LocationOnIcon__default.default, { sx: { mr: 1, color: "primary.main" } }),
|
|
1197
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
|
|
1198
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Location:" }),
|
|
1199
|
+
" ",
|
|
1200
|
+
location
|
|
1201
|
+
] })
|
|
1143
1202
|
] }),
|
|
1144
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1145
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1146
|
-
|
|
1203
|
+
result.organizer && /* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", sx: { mt: 1 }, children: [
|
|
1204
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Organizer:" }),
|
|
1205
|
+
" ",
|
|
1206
|
+
result.organizer
|
|
1147
1207
|
] })
|
|
1148
1208
|
] }) });
|
|
1149
1209
|
};
|
|
@@ -1151,9 +1211,11 @@ var EventResultCard_default = EventResultCard;
|
|
|
1151
1211
|
var ResultsContainer = ({
|
|
1152
1212
|
results,
|
|
1153
1213
|
onResultClick,
|
|
1154
|
-
tags
|
|
1214
|
+
tags,
|
|
1215
|
+
pagination,
|
|
1216
|
+
onPacketChange
|
|
1155
1217
|
}) => {
|
|
1156
|
-
if (results.length === 0 || !results.map) {
|
|
1218
|
+
if (!results || results.length === 0 || !results.map) {
|
|
1157
1219
|
return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { textAlign: "center", py: 4 }, children: "No results found. Try adjusting your filters." });
|
|
1158
1220
|
}
|
|
1159
1221
|
const onPlayerClick = (id) => {
|
|
@@ -1165,43 +1227,68 @@ var ResultsContainer = ({
|
|
|
1165
1227
|
const onEventClick = (id) => {
|
|
1166
1228
|
onResultClick == null ? void 0 : onResultClick(id, "event");
|
|
1167
1229
|
};
|
|
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
|
-
|
|
1230
|
+
const handlePacketChange = (_event, packet) => {
|
|
1231
|
+
onPacketChange == null ? void 0 : onPacketChange(packet);
|
|
1232
|
+
};
|
|
1233
|
+
const startResult = pagination ? (pagination.currentPacket - 1) * pagination.packetSize + 1 : 1;
|
|
1234
|
+
const endResult = pagination ? Math.min(pagination.currentPacket * pagination.packetSize, pagination.totalResults) : results.length;
|
|
1235
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", flexDirection: "column", gap: 2 }, children: [
|
|
1236
|
+
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: [
|
|
1237
|
+
"Showing ",
|
|
1238
|
+
startResult,
|
|
1239
|
+
"-",
|
|
1240
|
+
endResult,
|
|
1241
|
+
" of ",
|
|
1242
|
+
pagination.totalResults,
|
|
1243
|
+
" results"
|
|
1244
|
+
] }) }),
|
|
1245
|
+
results.map((result) => {
|
|
1246
|
+
switch (result.type) {
|
|
1247
|
+
case "player":
|
|
1248
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1249
|
+
PlayerResultCard_default,
|
|
1250
|
+
{
|
|
1251
|
+
result,
|
|
1252
|
+
onClick: onPlayerClick,
|
|
1253
|
+
tags
|
|
1254
|
+
},
|
|
1255
|
+
result.id
|
|
1256
|
+
);
|
|
1257
|
+
case "table":
|
|
1258
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1259
|
+
TableResultCard_default,
|
|
1260
|
+
{
|
|
1261
|
+
result,
|
|
1262
|
+
onClick: onTableClick,
|
|
1263
|
+
tags
|
|
1264
|
+
},
|
|
1265
|
+
result.id
|
|
1266
|
+
);
|
|
1267
|
+
case "event":
|
|
1268
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1269
|
+
EventResultCard_default,
|
|
1270
|
+
{
|
|
1271
|
+
result,
|
|
1272
|
+
onClick: onEventClick,
|
|
1273
|
+
tags
|
|
1274
|
+
},
|
|
1275
|
+
result.id
|
|
1276
|
+
);
|
|
1277
|
+
default:
|
|
1278
|
+
console.error(`Unknown result type: ${result.type}`);
|
|
1279
|
+
return null;
|
|
1280
|
+
}
|
|
1281
|
+
}),
|
|
1282
|
+
pagination && pagination.totalPackets > 1 && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", justifyContent: "center", mt: 4 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1283
|
+
Pagination__default.default,
|
|
1284
|
+
{
|
|
1285
|
+
count: pagination.totalPackets,
|
|
1286
|
+
page: pagination.currentPacket,
|
|
1287
|
+
onChange: handlePacketChange,
|
|
1288
|
+
color: "primary"
|
|
1289
|
+
}
|
|
1290
|
+
) })
|
|
1291
|
+
] });
|
|
1205
1292
|
};
|
|
1206
1293
|
var ResultsContainer_default = ResultsContainer;
|
|
1207
1294
|
var ScrollableResultsList = ({
|
|
@@ -1219,21 +1306,14 @@ var TablesScrollableList = ({
|
|
|
1219
1306
|
results,
|
|
1220
1307
|
tags,
|
|
1221
1308
|
maxHeight,
|
|
1222
|
-
onResultClick
|
|
1223
|
-
sortBy = "availability"
|
|
1309
|
+
onResultClick
|
|
1224
1310
|
}) => {
|
|
1225
1311
|
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
1312
|
const handleClick = (id) => onResultClick == null ? void 0 : onResultClick(id);
|
|
1233
1313
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1234
1314
|
ScrollableResultsList_default,
|
|
1235
1315
|
{
|
|
1236
|
-
results:
|
|
1316
|
+
results: tables,
|
|
1237
1317
|
tags,
|
|
1238
1318
|
maxHeight,
|
|
1239
1319
|
onResultClick: (id, type) => {
|
|
@@ -1251,8 +1331,8 @@ var EventTablesCard = ({
|
|
|
1251
1331
|
}) => {
|
|
1252
1332
|
return /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { elevation: 6, sx: { width: "100%", boxShadow: "0px 8px 24px rgba(0, 0, 0, 0.15)" }, children: [
|
|
1253
1333
|
/* @__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
|
|
1334
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, {}),
|
|
1335
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardContent10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(TablesScrollableList_default, { results: tables, tags, maxHeight, onResultClick: onTableClick }) })
|
|
1256
1336
|
] });
|
|
1257
1337
|
};
|
|
1258
1338
|
var EventTablesCard_default = EventTablesCard;
|
|
@@ -1812,6 +1892,26 @@ function PlayerPageLayout({
|
|
|
1812
1892
|
] }) })
|
|
1813
1893
|
] }) }) });
|
|
1814
1894
|
}
|
|
1895
|
+
var ExpiredTablesFilter = ({
|
|
1896
|
+
includeExpiredTables,
|
|
1897
|
+
onChange
|
|
1898
|
+
}) => {
|
|
1899
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { mt: 2 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1900
|
+
FormControlLabel__default.default,
|
|
1901
|
+
{
|
|
1902
|
+
control: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1903
|
+
Checkbox__default.default,
|
|
1904
|
+
{
|
|
1905
|
+
checked: includeExpiredTables,
|
|
1906
|
+
onChange: (e) => onChange(e.target.checked),
|
|
1907
|
+
color: "primary"
|
|
1908
|
+
}
|
|
1909
|
+
),
|
|
1910
|
+
label: "Show expired tables"
|
|
1911
|
+
}
|
|
1912
|
+
) });
|
|
1913
|
+
};
|
|
1914
|
+
var ExpiredTablesFilter_default = ExpiredTablesFilter;
|
|
1815
1915
|
var SORT_OPTIONS = [
|
|
1816
1916
|
{ id: "relevance", label: "Relevance" },
|
|
1817
1917
|
{ id: "newest", label: "Newest" },
|
|
@@ -1825,7 +1925,7 @@ var SortOptions = ({
|
|
|
1825
1925
|
onChange == null ? void 0 : onChange(event.target.value);
|
|
1826
1926
|
};
|
|
1827
1927
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1828
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1928
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "h6", gutterBottom: true, children: "Sort By" }),
|
|
1829
1929
|
/* @__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
1930
|
FormControlLabel__default.default,
|
|
1831
1931
|
{
|
|
@@ -1840,11 +1940,19 @@ var SortOptions = ({
|
|
|
1840
1940
|
var SortOptions_default = SortOptions;
|
|
1841
1941
|
var TagsFilter = ({
|
|
1842
1942
|
onChange,
|
|
1843
|
-
tags: Tags = []
|
|
1943
|
+
tags: Tags = [],
|
|
1944
|
+
initialSelectedTags
|
|
1844
1945
|
}) => {
|
|
1845
|
-
const [mustHaveTags, setMustHaveTags] = React7__default.default.useState([]);
|
|
1846
|
-
const [mustNotHaveTags, setMustNotHaveTags] = React7__default.default.useState([]);
|
|
1847
|
-
const [shouldHaveAtLeastOneTags, setShouldHaveAtLeastOneTags] = React7__default.default.useState([]);
|
|
1946
|
+
const [mustHaveTags, setMustHaveTags] = React7__default.default.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.mustHave) || []);
|
|
1947
|
+
const [mustNotHaveTags, setMustNotHaveTags] = React7__default.default.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.mustNotHave) || []);
|
|
1948
|
+
const [shouldHaveAtLeastOneTags, setShouldHaveAtLeastOneTags] = React7__default.default.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.shouldHaveAtLeastOne) || []);
|
|
1949
|
+
React7__default.default.useEffect(() => {
|
|
1950
|
+
if (initialSelectedTags) {
|
|
1951
|
+
setMustHaveTags(initialSelectedTags.mustHave || []);
|
|
1952
|
+
setMustNotHaveTags(initialSelectedTags.mustNotHave || []);
|
|
1953
|
+
setShouldHaveAtLeastOneTags(initialSelectedTags.shouldHaveAtLeastOne || []);
|
|
1954
|
+
}
|
|
1955
|
+
}, [initialSelectedTags]);
|
|
1848
1956
|
Tags = !!Tags ? Tags : [];
|
|
1849
1957
|
const [inputValues, setInputValues] = React7__default.default.useState({
|
|
1850
1958
|
mustHave: "",
|
|
@@ -1854,7 +1962,7 @@ var TagsFilter = ({
|
|
|
1854
1962
|
const tagOptions = React7__default.default.useMemo(() => {
|
|
1855
1963
|
console.log("available tags: " + JSON.stringify(Tags));
|
|
1856
1964
|
console.log(!Tags);
|
|
1857
|
-
if (!Tags || Tags.length
|
|
1965
|
+
if (!Tags || Tags.length === 0 || !Tags.map) return [];
|
|
1858
1966
|
return Tags.map((tag) => ({
|
|
1859
1967
|
value: tag.id,
|
|
1860
1968
|
label: tag.label
|
|
@@ -1886,7 +1994,7 @@ var TagsFilter = ({
|
|
|
1886
1994
|
};
|
|
1887
1995
|
const renderSelectedTags = (selectedTags, category) => {
|
|
1888
1996
|
const tagValues = [];
|
|
1889
|
-
if (!Tags || Tags.length
|
|
1997
|
+
if (!Tags || Tags.length === 0 || !Tags.map) return null;
|
|
1890
1998
|
Tags.forEach((tag) => {
|
|
1891
1999
|
if (selectedTags.includes(tag.id)) {
|
|
1892
2000
|
tagValues.push(tag);
|
|
@@ -1895,27 +2003,11 @@ var TagsFilter = ({
|
|
|
1895
2003
|
if (tagValues.length === 0) {
|
|
1896
2004
|
return null;
|
|
1897
2005
|
}
|
|
1898
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", flexWrap: "wrap", gap: 1, mb: 2 }, children: tagValues.map((tag) => /* @__PURE__ */ jsxRuntime.
|
|
1899
|
-
|
|
2006
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", flexWrap: "wrap", gap: 1, mb: 2 }, children: tagValues.map((tag) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2007
|
+
Chip,
|
|
1900
2008
|
{
|
|
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
|
-
]
|
|
2009
|
+
tag,
|
|
2010
|
+
removeCallback: (tagId) => handleTagChange(tagId, category)
|
|
1919
2011
|
},
|
|
1920
2012
|
tag.id
|
|
1921
2013
|
)) });
|
|
@@ -1923,7 +2015,7 @@ var TagsFilter = ({
|
|
|
1923
2015
|
const createTagSelector = (category, label) => {
|
|
1924
2016
|
const selectedTags = category === "mustHave" ? mustHaveTags : category === "mustNotHave" ? mustNotHaveTags : shouldHaveAtLeastOneTags;
|
|
1925
2017
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1926
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2018
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "subtitle1", gutterBottom: true, sx: { mt: 2 }, children: label }),
|
|
1927
2019
|
renderSelectedTags(selectedTags, category),
|
|
1928
2020
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1929
2021
|
Autocomplete__default.default,
|
|
@@ -1976,11 +2068,11 @@ var TagsFilter = ({
|
|
|
1976
2068
|
] });
|
|
1977
2069
|
};
|
|
1978
2070
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1979
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2071
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "h6", gutterBottom: true, children: "Tags" }),
|
|
1980
2072
|
createTagSelector("mustHave", "Must Have Tags"),
|
|
1981
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2073
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } }),
|
|
1982
2074
|
createTagSelector("mustNotHave", "Must Not Have Tags"),
|
|
1983
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2075
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } }),
|
|
1984
2076
|
createTagSelector("shouldHaveAtLeastOne", "Should Contain At Least One Tag")
|
|
1985
2077
|
] });
|
|
1986
2078
|
};
|
|
@@ -2010,21 +2102,80 @@ var CustomPopper2 = (props) => {
|
|
|
2010
2102
|
);
|
|
2011
2103
|
};
|
|
2012
2104
|
var TagsFilter_default = TagsFilter;
|
|
2013
|
-
var
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2105
|
+
var TextSearchCard = ({ onChange, selectedTypes, initialTextSearch }) => {
|
|
2106
|
+
const [query, setQuery] = React7__default.default.useState((initialTextSearch == null ? void 0 : initialTextSearch.query) || "");
|
|
2107
|
+
const [titleOnly, setTitleOnly] = React7__default.default.useState((initialTextSearch == null ? void 0 : initialTextSearch.titleOnly) || false);
|
|
2108
|
+
React7.useEffect(() => {
|
|
2109
|
+
if (initialTextSearch) {
|
|
2110
|
+
setQuery(initialTextSearch.query || "");
|
|
2111
|
+
setTitleOnly(initialTextSearch.titleOnly || false);
|
|
2112
|
+
}
|
|
2113
|
+
}, [initialTextSearch]);
|
|
2114
|
+
const shouldShow = selectedTypes.includes("table") || selectedTypes.includes("event");
|
|
2115
|
+
if (!shouldShow) {
|
|
2116
|
+
return null;
|
|
2117
|
+
}
|
|
2118
|
+
const handleQueryChange = (e) => {
|
|
2119
|
+
const newQuery = e.target.value;
|
|
2120
|
+
setQuery(newQuery);
|
|
2121
|
+
if (onChange) {
|
|
2122
|
+
onChange({ query: newQuery, titleOnly });
|
|
2123
|
+
}
|
|
2124
|
+
};
|
|
2125
|
+
const handleTitleOnlyChange = (e) => {
|
|
2126
|
+
const newTitleOnly = e.target.checked;
|
|
2127
|
+
setTitleOnly(newTitleOnly);
|
|
2128
|
+
if (onChange) {
|
|
2129
|
+
onChange({ query, titleOnly: newTitleOnly });
|
|
2130
|
+
}
|
|
2131
|
+
};
|
|
2132
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2133
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "h6", gutterBottom: true, children: "Text Search" }),
|
|
2134
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
|
|
2135
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2136
|
+
TextField4__default.default,
|
|
2137
|
+
{
|
|
2138
|
+
fullWidth: true,
|
|
2139
|
+
label: "Search in title and description",
|
|
2140
|
+
variant: "outlined",
|
|
2141
|
+
value: query,
|
|
2142
|
+
onChange: handleQueryChange,
|
|
2143
|
+
placeholder: "Enter search terms...",
|
|
2144
|
+
sx: { mb: 1 }
|
|
2145
|
+
}
|
|
2146
|
+
),
|
|
2147
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2148
|
+
FormControlLabel__default.default,
|
|
2149
|
+
{
|
|
2150
|
+
control: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2151
|
+
Checkbox__default.default,
|
|
2152
|
+
{
|
|
2153
|
+
checked: titleOnly,
|
|
2154
|
+
onChange: handleTitleOnlyChange
|
|
2155
|
+
}
|
|
2156
|
+
),
|
|
2157
|
+
label: "Search in title only"
|
|
2158
|
+
}
|
|
2159
|
+
)
|
|
2160
|
+
] })
|
|
2161
|
+
] });
|
|
2162
|
+
};
|
|
2163
|
+
var TextSearchCard_default = TextSearchCard;
|
|
2164
|
+
var TypeFilter = ({ types, initialSelectedTypes = [], onChange }) => {
|
|
2165
|
+
const [selectedTypes, setSelectedTypes] = React7__default.default.useState(initialSelectedTypes);
|
|
2166
|
+
React7.useEffect(() => {
|
|
2167
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2168
|
+
}, [initialSelectedTypes]);
|
|
2020
2169
|
const handleTypeChange = (typeId) => {
|
|
2021
2170
|
const newSelectedTypes = selectedTypes.includes(typeId) ? selectedTypes.filter((id) => id !== typeId) : [...selectedTypes, typeId];
|
|
2022
2171
|
setSelectedTypes(newSelectedTypes);
|
|
2023
|
-
|
|
2172
|
+
if (onChange) {
|
|
2173
|
+
onChange(newSelectedTypes);
|
|
2174
|
+
}
|
|
2024
2175
|
};
|
|
2025
2176
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2026
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2027
|
-
/* @__PURE__ */ jsxRuntime.jsx(FormGroup__default.default, { children:
|
|
2177
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "h6", gutterBottom: true, children: "Type" }),
|
|
2178
|
+
/* @__PURE__ */ jsxRuntime.jsx(FormGroup__default.default, { children: types.map((type) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2028
2179
|
FormControlLabel__default.default,
|
|
2029
2180
|
{
|
|
2030
2181
|
control: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2032,7 +2183,8 @@ var TypeFilter = ({ onChange }) => {
|
|
|
2032
2183
|
{
|
|
2033
2184
|
checked: selectedTypes.includes(type.id),
|
|
2034
2185
|
onChange: () => handleTypeChange(type.id),
|
|
2035
|
-
disabled: type.
|
|
2186
|
+
disabled: type.id === "event",
|
|
2187
|
+
title: type.id === "event" ? "Coming soon! Currently only player and table search are supported." : ""
|
|
2036
2188
|
}
|
|
2037
2189
|
),
|
|
2038
2190
|
label: type.label
|
|
@@ -2043,22 +2195,67 @@ var TypeFilter = ({ onChange }) => {
|
|
|
2043
2195
|
};
|
|
2044
2196
|
var TypeFilter_default = TypeFilter;
|
|
2045
2197
|
var FiltersContainer = ({
|
|
2198
|
+
initialSelectedTypes = [],
|
|
2199
|
+
initialSelectedTags,
|
|
2200
|
+
initialTextSearch,
|
|
2201
|
+
includeExpiredTables = false,
|
|
2046
2202
|
onTypeChange,
|
|
2047
2203
|
onTagChange,
|
|
2204
|
+
onTextSearchChange,
|
|
2205
|
+
onIncludeExpiredTablesChange,
|
|
2048
2206
|
onSubmit,
|
|
2049
|
-
tags
|
|
2207
|
+
tags,
|
|
2208
|
+
searchTypes
|
|
2050
2209
|
}) => {
|
|
2210
|
+
const [selectedTypes, setSelectedTypes] = React7__default.default.useState(initialSelectedTypes);
|
|
2211
|
+
React7.useEffect(() => {
|
|
2212
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2213
|
+
}, [initialSelectedTypes]);
|
|
2214
|
+
const handleTypeChange = (types) => {
|
|
2215
|
+
setSelectedTypes(types);
|
|
2216
|
+
if (onTypeChange) {
|
|
2217
|
+
onTypeChange(types);
|
|
2218
|
+
}
|
|
2219
|
+
};
|
|
2051
2220
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { children: [
|
|
2052
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2053
|
-
|
|
2221
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2222
|
+
TypeFilter_default,
|
|
2223
|
+
{
|
|
2224
|
+
types: searchTypes,
|
|
2225
|
+
initialSelectedTypes,
|
|
2226
|
+
onChange: handleTypeChange
|
|
2227
|
+
}
|
|
2228
|
+
),
|
|
2229
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } }),
|
|
2230
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2231
|
+
TextSearchCard_default,
|
|
2232
|
+
{
|
|
2233
|
+
selectedTypes,
|
|
2234
|
+
initialTextSearch,
|
|
2235
|
+
onChange: onTextSearchChange
|
|
2236
|
+
}
|
|
2237
|
+
),
|
|
2238
|
+
(selectedTypes.includes("table") || selectedTypes.includes("event")) && /* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } }),
|
|
2054
2239
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2055
2240
|
TagsFilter_default,
|
|
2056
2241
|
{
|
|
2057
2242
|
tags,
|
|
2243
|
+
initialSelectedTags,
|
|
2058
2244
|
onChange: onTagChange
|
|
2059
2245
|
}
|
|
2060
2246
|
),
|
|
2061
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2247
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } }),
|
|
2248
|
+
selectedTypes.includes("table") && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2249
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2250
|
+
ExpiredTablesFilter_default,
|
|
2251
|
+
{
|
|
2252
|
+
includeExpiredTables,
|
|
2253
|
+
onChange: onIncludeExpiredTablesChange || (() => {
|
|
2254
|
+
})
|
|
2255
|
+
}
|
|
2256
|
+
),
|
|
2257
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } })
|
|
2258
|
+
] }),
|
|
2062
2259
|
/* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", justifyContent: "center", mt: 2 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2063
2260
|
Button7__default.default,
|
|
2064
2261
|
{
|
|
@@ -2116,16 +2313,75 @@ var SearchResultCard_default = SearchResultCard;
|
|
|
2116
2313
|
function SearchPageLayout({
|
|
2117
2314
|
results,
|
|
2118
2315
|
title = "Search Results",
|
|
2316
|
+
initialSelectedTypes = [],
|
|
2317
|
+
initialSelectedTags = {
|
|
2318
|
+
mustHave: [],
|
|
2319
|
+
mustNotHave: [],
|
|
2320
|
+
shouldHaveAtLeastOne: []
|
|
2321
|
+
},
|
|
2322
|
+
initialTextSearch = {
|
|
2323
|
+
query: "",
|
|
2324
|
+
titleOnly: false
|
|
2325
|
+
},
|
|
2326
|
+
includeExpiredTables: initialIncludeExpiredTables = false,
|
|
2119
2327
|
onTypeChange,
|
|
2120
2328
|
onTagChange,
|
|
2329
|
+
onTextSearchChange,
|
|
2330
|
+
onIncludeExpiredTablesChange,
|
|
2121
2331
|
onSubmit,
|
|
2122
2332
|
onResultClick,
|
|
2333
|
+
onPacketChange,
|
|
2334
|
+
pagination,
|
|
2123
2335
|
validTags,
|
|
2124
|
-
allTags
|
|
2336
|
+
allTags,
|
|
2337
|
+
searchTypes,
|
|
2338
|
+
isLoading = false
|
|
2125
2339
|
}) {
|
|
2126
|
-
"use client";
|
|
2127
2340
|
const theme = material.useTheme();
|
|
2128
2341
|
const isMobile = material.useMediaQuery(theme.breakpoints.down("md"));
|
|
2342
|
+
const [selectedTypes, setSelectedTypes] = React7.useState(initialSelectedTypes);
|
|
2343
|
+
const [selectedTags, setSelectedTags] = React7.useState(initialSelectedTags);
|
|
2344
|
+
const [textSearch, setTextSearch] = React7.useState(initialTextSearch);
|
|
2345
|
+
const [includeExpiredTables, setIncludeExpiredTables] = React7.useState(initialIncludeExpiredTables);
|
|
2346
|
+
React7.useEffect(() => {
|
|
2347
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2348
|
+
}, [initialSelectedTypes]);
|
|
2349
|
+
React7.useEffect(() => {
|
|
2350
|
+
setSelectedTags(initialSelectedTags);
|
|
2351
|
+
}, [initialSelectedTags]);
|
|
2352
|
+
React7.useEffect(() => {
|
|
2353
|
+
setTextSearch(initialTextSearch);
|
|
2354
|
+
}, [initialTextSearch]);
|
|
2355
|
+
React7.useEffect(() => {
|
|
2356
|
+
setIncludeExpiredTables(initialIncludeExpiredTables);
|
|
2357
|
+
}, [initialIncludeExpiredTables]);
|
|
2358
|
+
const handleTypeChange = (types) => {
|
|
2359
|
+
setSelectedTypes(types);
|
|
2360
|
+
if (onTypeChange) onTypeChange(types);
|
|
2361
|
+
};
|
|
2362
|
+
const handleTagChange = (tags) => {
|
|
2363
|
+
setSelectedTags(tags);
|
|
2364
|
+
if (onTagChange) onTagChange(tags);
|
|
2365
|
+
};
|
|
2366
|
+
const handleTextSearchChange = (ts) => {
|
|
2367
|
+
setTextSearch(ts);
|
|
2368
|
+
if (onTextSearchChange) onTextSearchChange(ts);
|
|
2369
|
+
};
|
|
2370
|
+
const handleIncludeExpiredTablesChange = (include) => {
|
|
2371
|
+
setIncludeExpiredTables(include);
|
|
2372
|
+
if (onIncludeExpiredTablesChange) onIncludeExpiredTablesChange(include);
|
|
2373
|
+
};
|
|
2374
|
+
const handleSubmit = () => {
|
|
2375
|
+
const currentCriteria = {
|
|
2376
|
+
selectedTypes,
|
|
2377
|
+
selectedTags,
|
|
2378
|
+
textSearch,
|
|
2379
|
+
includeExpiredTables
|
|
2380
|
+
};
|
|
2381
|
+
if (onSubmit) {
|
|
2382
|
+
onSubmit(currentCriteria);
|
|
2383
|
+
}
|
|
2384
|
+
};
|
|
2129
2385
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { padding: 2 }, children: [
|
|
2130
2386
|
/* @__PURE__ */ jsxRuntime.jsx(Card10__default.default, { sx: { marginBottom: 2 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2131
2387
|
CardHeader4__default.default,
|
|
@@ -2156,10 +2412,17 @@ function SearchPageLayout({
|
|
|
2156
2412
|
/* @__PURE__ */ jsxRuntime.jsx(CardContent10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2157
2413
|
FiltersContainer_default,
|
|
2158
2414
|
{
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2415
|
+
initialSelectedTypes: selectedTypes,
|
|
2416
|
+
initialSelectedTags: selectedTags,
|
|
2417
|
+
initialTextSearch: textSearch,
|
|
2418
|
+
includeExpiredTables,
|
|
2419
|
+
onTypeChange: handleTypeChange,
|
|
2420
|
+
onTagChange: handleTagChange,
|
|
2421
|
+
onTextSearchChange: handleTextSearchChange,
|
|
2422
|
+
onIncludeExpiredTablesChange: handleIncludeExpiredTablesChange,
|
|
2423
|
+
onSubmit: handleSubmit,
|
|
2424
|
+
tags: validTags,
|
|
2425
|
+
searchTypes
|
|
2163
2426
|
}
|
|
2164
2427
|
) })
|
|
2165
2428
|
] }) }),
|
|
@@ -2176,10 +2439,12 @@ function SearchPageLayout({
|
|
|
2176
2439
|
}
|
|
2177
2440
|
}
|
|
2178
2441
|
),
|
|
2179
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardContent10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2442
|
+
/* @__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
2443
|
ResultsContainer_default,
|
|
2181
2444
|
{
|
|
2182
2445
|
results,
|
|
2446
|
+
pagination,
|
|
2447
|
+
onPacketChange,
|
|
2183
2448
|
onResultClick,
|
|
2184
2449
|
tags: allTags
|
|
2185
2450
|
}
|
|
@@ -2747,11 +3012,13 @@ exports.EventEditProvider = EventEditProvider;
|
|
|
2747
3012
|
exports.EventPageLayout = EventPageLayout;
|
|
2748
3013
|
exports.EventResultCard = EventResultCard_default;
|
|
2749
3014
|
exports.EventTablesCard = EventTablesCard_default;
|
|
3015
|
+
exports.ExpiredTablesFilter = ExpiredTablesFilter_default;
|
|
2750
3016
|
exports.FiltersContainer = FiltersContainer_default;
|
|
2751
3017
|
exports.GameTableProvider = GameTableProvider;
|
|
2752
3018
|
exports.ModalContext = ModalContext;
|
|
2753
3019
|
exports.ModalProvider = ModalProvider_default;
|
|
2754
3020
|
exports.NextGameCountdown = NextGameCountdown;
|
|
3021
|
+
exports.NextGameLabel = NextGameLabel_default;
|
|
2755
3022
|
exports.PlayerDetailsCard = PlayerDetailsCard_default;
|
|
2756
3023
|
exports.PlayerDisplayCard = PlayerDisplayCard_default;
|
|
2757
3024
|
exports.PlayerHighlightsCard = PlayerHighlightsCard;
|
|
@@ -2772,6 +3039,7 @@ exports.TableResultCard = TableResultCard_default;
|
|
|
2772
3039
|
exports.TablesScrollableList = TablesScrollableList_default;
|
|
2773
3040
|
exports.TagEditor = TagEditor;
|
|
2774
3041
|
exports.TagsFilter = TagsFilter_default;
|
|
3042
|
+
exports.TextSearchCard = TextSearchCard_default;
|
|
2775
3043
|
exports.TypeFilter = TypeFilter_default;
|
|
2776
3044
|
exports.generateTagsDisplay = generateTagsDisplay;
|
|
2777
3045
|
exports.renderTagsFromIds = renderTagsFromIds;
|