Skip to content

Commit 9628ef9

Browse files
authored
Merge pull request #6 from EnjoyBacon7/dev
Dev
2 parents 23b5181 + e0728a8 commit 9628ef9

File tree

8 files changed

+81
-32
lines changed

8 files changed

+81
-32
lines changed

web/src/App.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@ import Col from 'react-bootstrap/Col';
55
import {
66
createBrowserRouter,
77
RouterProvider,
8-
useNavigate,
98
} from "react-router-dom";
109

1110
// Local imports
1211
import CbRoot from './routes/CbRoot';
1312
import ErrorPage from './routes/error-page';
14-
1513
import CbVersion from './components/CbVersion';
1614
import { NotificationProvider } from './components/CbToastsContext';
1715
import CbToastsContainer from './components/CbToastsContainer';

web/src/components/CbFiles.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,20 @@ import InputGroup from 'react-bootstrap/InputGroup';
1414
// ------------------------------------------------------------------
1515
// Files card parent component
1616
// ------------------------------------------------------------------
17-
export function CbFiles({ fileInfo, viewMode, loadFiles }) {
17+
export function CbFiles({ fileInfo, viewMode, loadFiles, searchTerms }) {
1818

1919
const [components, setComponents] = useState([]);
2020

2121
useEffect(() => {
22+
var filteredfileInfo = fileInfo;
23+
if (searchTerms) {
24+
filteredfileInfo = fileInfo.filter((item) => {
25+
return item.toLowerCase().includes(searchTerms.toLowerCase());
26+
});
27+
}
28+
2229
if (viewMode === "gallery") {
23-
const newComponents = fileInfo.map((item) => (
30+
const newComponents = filteredfileInfo.map((item) => (
2431
<CbFileGallery fileName={item} loadFiles={loadFiles} />
2532
));
2633

@@ -30,7 +37,7 @@ export function CbFiles({ fileInfo, viewMode, loadFiles }) {
3037
</Row>
3138
);
3239
} else if (viewMode === "list") {
33-
const newComponents = fileInfo.map((item) => (
40+
const newComponents = filteredfileInfo.map((item) => (
3441
<CbFileList fileName={item} loadFiles={loadFiles} />
3542
));
3643
setComponents(

web/src/components/CbHeader.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,20 @@ export function CbHeader(props) {
99
const navigate = useNavigate();
1010

1111
useEffect(() => {
12-
const theme = localStorage.getItem("theme");
13-
theme && setTheme(theme);
12+
const darkTheme = window.matchMedia("(prefers-color-scheme: dark)")
13+
if (darkTheme.matches) {
14+
setTheme("dark");
15+
} else {
16+
setTheme("light");
17+
}
1418
}, []);
1519

20+
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (e) => {
21+
const newColorScheme = e.matches ? "dark" : "light";
22+
setTheme(newColorScheme);
23+
});
24+
1625
useEffect(() => {
17-
localStorage.setItem("theme", theme);
1826
document.documentElement.setAttribute("data-bs-theme", theme);
1927
}, [theme]);
2028

web/src/components/CbShareNav.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,22 @@ import ToggleButton from 'react-bootstrap/ToggleButton';
22
import FormControl from 'react-bootstrap/FormControl';
33
import InputGroup from 'react-bootstrap/InputGroup';
44

5-
export function CbShareNav({ changeViewMode, viewMode }) {
5+
export function CbShareNav({ changeViewMode, viewMode, setSearchTerms }) {
6+
7+
function handleChange(e) {
8+
setSearchTerms(e.target.value)
9+
}
10+
11+
function handleSubmit() {
12+
console.log('submitting');
13+
}
614

715
return (
816
<div>
917
<InputGroup className="mt-3">
1018
<FormControl
19+
onChange={handleChange}
20+
onSubmit={handleSubmit}
1121
placeholder='Search Here'
1222
aria-label="file search field"
1323
/>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// System imports
2+
import React, { useState } from "react";
3+
import { useNavigate, useParams } from "react-router-dom";
4+
import Form from "react-bootstrap/Form";
5+
6+
export function CbShareSearch() {
7+
8+
// Useful hooks
9+
const [shareId, setShareId] = useState(useParams().shareId);
10+
const navigate = useNavigate();
11+
12+
// Evaluate entered shareId
13+
function handleChange(e) {
14+
setShareId(e.target.value);
15+
}
16+
17+
// Redirect on submit
18+
function handleRedirect() {
19+
navigate(`/share/${encodeURIComponent(shareId)}`);
20+
}
21+
22+
return (
23+
<Form className="mt-3" onChange={handleChange} onSubmit={handleRedirect}>
24+
<Form.Group>
25+
<Form.Control type="text" placeholder="Enter Share ID to Retrieve an Existing Share" />
26+
</Form.Group>
27+
</Form>
28+
)
29+
}
30+
31+
export default CbShareSearch;

web/src/components/CbVersion.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ export function CbVersion() {
2222
onMouseLeave={handleMouseLeave}>
2323
<Card.Body>
2424
<Card.Text className='text-center'>
25-
Version <a href='http://www.staggeringbeauty.com' style={{textDecoration: 'none'}}>🦄</a>.0.1.2
25+
26+
Version <a href='http://www.staggeringbeauty.com' style={{textDecoration: 'none'}}>🦄</a>.0.1.3
27+
2628
</Card.Text>
2729
</Card.Body>
2830
</Card>

web/src/routes/CbRoot.js

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,27 @@
1+
// -------------------------------------------------------------------------
2+
// Root element called by App.js. Handles main views
3+
// -------------------------------------------------------------------------
4+
15
// System imports
2-
import React, { useState } from "react";
6+
import React, { useState, useEffect } from "react";
37
import { useNavigate, useParams } from "react-router-dom";
4-
import { useEffect } from "react";
5-
import Form from "react-bootstrap/Form";
68

79
// Local imports
810
import CbUpload from "../components/CbUpload";
911
import CbHeader from "../components/CbHeader";
1012
import CbShareNav from "../components/CbShareNav";
1113
import CbFiles from "../components/CbFiles";
14+
import CbShareSearch from "../components/CbShareSearch";
1215

1316
// Root Component
14-
export function CbRoot( { isHome } ) {
17+
export function CbRoot({ isHome }) {
1518

1619
// Useful hooks
17-
const [shareId, setShareId] = useState(useParams().shareId);
1820
const navigate = useNavigate();
1921
// Hooks if in share
2022
const [viewMode, setViewMode] = useState("list");
2123
const [fileInfo, setFileInfo] = useState([]);
22-
23-
// Evaluate entered shareId
24-
function handleChange(e) {
25-
setShareId(e.target.value);
26-
}
27-
28-
// Redirect on submit
29-
function handleRedirect() {
30-
navigate(`/share/${encodeURIComponent(shareId)}`);
31-
}
24+
const [searchTerms, setSearchTerms] = useState(null);
3225

3326
function loadFiles() {
3427
const shareId_forLoad = window.location.pathname.split('/')[2]; // Use useRef instead?
@@ -63,15 +56,11 @@ export function CbRoot( { isHome } ) {
6356
<CbHeader />
6457
<CbUpload loadFiles={loadFiles} />
6558
{isHome ?
66-
<Form className="mt-3" onChange={handleChange} onSubmit={handleRedirect}>
67-
<Form.Group>
68-
<Form.Control type="text" placeholder="Enter Share ID to Retrieve an Existing Share" />
69-
</Form.Group>
70-
</Form>
59+
<CbShareSearch />
7160
:
7261
<div>
73-
<CbShareNav changeViewMode={setViewMode} viewMode={viewMode} />
74-
<CbFiles fileInfo={fileInfo} viewMode={viewMode} loadFiles={loadFiles} />
62+
<CbShareNav changeViewMode={setViewMode} viewMode={viewMode} setSearchTerms={setSearchTerms}/>
63+
<CbFiles fileInfo={fileInfo} viewMode={viewMode} loadFiles={loadFiles} searchTerms={searchTerms} />
7564
</div>
7665
}
7766
</div>

web/src/routes/error-page.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
// --------------------------------------------------------------
2+
// Error page displayed when a route fails to load
3+
// --------------------------------------------------------------
4+
15
import { useRouteError } from "react-router-dom";
26

37
export default function ErrorPage() {

0 commit comments

Comments
 (0)