diff --git a/client/package-lock.json b/client/package-lock.json
index ff37bead2..35fcc32c6 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -1,19 +1,19 @@
{
"name": "foodoasis-client",
- "version": "1.0.81",
+ "version": "1.0.82",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "foodoasis-client",
- "version": "1.0.81",
+ "version": "1.0.82",
"license": "GPL-2.0",
"dependencies": {
"@craco/craco": "^7.0.0",
"@emotion/react": "^11.10.5",
"@emotion/styled": "^11.10.5",
"@mapbox/geo-viewport": "^0.4.1",
- "@mui/icons-material": "^5.11.0",
+ "@mui/icons-material": "^5.16.4",
"@mui/lab": "^5.0.0-alpha.113",
"@mui/material": "^5.11.1",
"@mui/x-data-grid": "^5.17.20",
@@ -1822,9 +1822,9 @@
"integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
},
"node_modules/@babel/runtime": {
- "version": "7.22.10",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz",
- "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==",
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz",
+ "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==",
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
@@ -3285,18 +3285,18 @@
}
},
"node_modules/@mui/icons-material": {
- "version": "5.11.11",
- "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.11.11.tgz",
- "integrity": "sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==",
+ "version": "5.16.4",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.4.tgz",
+ "integrity": "sha512-j9/CWctv6TH6Dou2uR2EH7UOgu79CW/YcozxCYVLJ7l03pCsiOlJ5sBArnWJxJ+nGkFwyL/1d1k8JEPMDR125A==",
"dependencies": {
- "@babel/runtime": "^7.21.0"
+ "@babel/runtime": "^7.23.9"
},
"engines": {
"node": ">=12.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
"@mui/material": "^5.0.0",
diff --git a/client/package.json b/client/package.json
index 76755befa..f31df4f18 100644
--- a/client/package.json
+++ b/client/package.json
@@ -1,7 +1,7 @@
{
"name": "foodoasis-client",
"description": "React Client for Food Oasis",
- "version": "1.0.82",
+ "version": "1.0.83",
"author": "Hack for LA",
"license": "GPL-2.0",
"private": true,
@@ -20,7 +20,7 @@
"@emotion/react": "^11.10.5",
"@emotion/styled": "^11.10.5",
"@mapbox/geo-viewport": "^0.4.1",
- "@mui/icons-material": "^5.11.0",
+ "@mui/icons-material": "^5.16.4",
"@mui/lab": "^5.0.0-alpha.113",
"@mui/material": "^5.11.1",
"@mui/x-data-grid": "^5.17.20",
diff --git a/client/src/App.js b/client/src/App.js
index 114090d02..116b23a11 100644
--- a/client/src/App.js
+++ b/client/src/App.js
@@ -10,6 +10,7 @@ import * as analytics from "../src/services/analytics";
import { AppStateProvider } from "./appReducer";
import SEO from "./components/SEO";
import AppRoutes from "./Routes";
+import { MapProvider } from "react-map-gl";
function App() {
useEffect(() => {
@@ -29,9 +30,11 @@ function App() {
url={window.origin}
description="Food Oasis is a non-profit, volunteer-run directory of free food resources in the Los Angeles area."
/>
-
-
-
+
+
+
+
+
diff --git a/client/src/components/Admin/OrganizationEdit.js b/client/src/components/Admin/OrganizationEdit.js
index 7273ba033..f58d02c90 100644
--- a/client/src/components/Admin/OrganizationEdit.js
+++ b/client/src/components/Admin/OrganizationEdit.js
@@ -51,6 +51,12 @@ const validationSchema = Yup.object().shape({
longitude: Yup.number().required("Longitude is required").min(-180).max(180),
email: Yup.string().email("Invalid email address format"),
hours: Yup.array().of(HourSchema),
+ twitter: Yup.string()
+ .matches(
+ /^https?:\/\/(www\.)?(twitter\.com|x\.com)\/.*/,
+ "Invalid URL, e.g. 'https://twitter.com/ or https://x.com/'"
+ )
+ .required("Full Twitter/X URL is required."),
selectedCategoryIds: Yup.array().min(
1,
"You must select at least one category"
diff --git a/client/src/components/Admin/OrganizationEdit/ContactDetails.js b/client/src/components/Admin/OrganizationEdit/ContactDetails.js
index 2ba585c63..e3ab80f69 100644
--- a/client/src/components/Admin/OrganizationEdit/ContactDetails.js
+++ b/client/src/components/Admin/OrganizationEdit/ContactDetails.js
@@ -64,7 +64,13 @@ export default function ContactDetails({
-
+
+