@material-ui/icons#SearchOutlined JavaScript Examples
The following examples show how to use
@material-ui/icons#SearchOutlined.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: SideBar.jsx From soundly with MIT License | 5 votes |
function SideBar() {
const { user, isAuthenticated } = useMoralis();
// console.log("user from sidebar", user, isAuthenticated);
const useStyle = useContext(ThemeContext);
return (
<aside className={"aside-bar"}>
<div className="aside-bar-container">
<div className="profile-wrapper">
<img src={"../profile.png"} alt="profile" className="profile-picture" />
</div>
<SideBarOptions className={"lib-sub"} Icon={HomeOutlined} href={"/home"} title={"Home"} />
<SideBarOptions className={"lib-sub"} Icon={SearchOutlined} href={"/home"} title={"Search"} />
<SideBarOptions className={"lib-sub"} Icon={PlaylistPlay} href={"/home/playlist"} title={"Playlist"} />
{/* {user.get("isVerified") && ( */}
<SideBarOptions className={"lib-sub"} Icon={ExploreOutlined} href={"/home/dashboard"} title={"Dashboard"} />
{/* )} */}
{/* <SideBarOptions className={"lib-sub"} Icon={SearchOutlined} href={"/home/search"} title={"Search"}/> */}
{/*<SideBarOptions className={"lib-sub"} Icon={AlbumIcon} href={"/home/album"} title={"Album"}/>
<SideBarOptions className={"lib-sub"} Icon={EmojiPeopleIcon} href={"/home/artist"} title={"Artist"}/>*/}
</div>
{/* <div className="aside-bar-container playlist">
<p className={"p1"}>
<span>MY PLAYLIST</span>
</p>
<SideBarOptions
className={"lib-sub"}
Icon={PlaylistPlay}
href={"/home/playlist/instrumental"}
title={"Instrumental"}
/>
<SideBarOptions
className={"lib-sub"}
Icon={PlaylistPlay}
href={"/home/playlist/electronic"}
title={"Electronic"}
/>
</div> */}
</aside>
);
}
Example #2
Source File: layout.jsx From animeworldz with MIT License | 4 votes |
function Layout({ window, children }) {
const theme = useTheme();
const classes = useStyles();
const history = useHistory();
const location = useLocation();
const [searchResult, setSearchResult] = useState([]);
const [time, setTime] = useState(new Date().toLocaleTimeString());
const { darkMode, setDarkMode } = useContext(DarkModeContext);
const [keyword, setKeyword] = useState("");
const [mobileOpen, setMobileOpen] = React.useState(false);
useEffect(() => {
setInterval(() => {
setTime(new Date().toLocaleTimeString());
}, 1000);
}, []);
const menuItems = [
{
text: "HomePage",
icon: <HomeRounded />,
path: "/",
},
{
text: "Waifu Pics",
icon: <ImageRounded />,
path: "/waifu",
},
];
const drawer = (
<div>
<div>
<Typography variant="h5" className={classes.title}>
ANIMEWORLD-Z
</Typography>
</div>
<Divider />
<List>
{menuItems.map((menu, i) => (
<ListItem
key={i}
button
onClick={() => history.push(menu.path)}
className={location.pathname === menu.path ? classes.active : null}
>
<ListItemIcon>{menu.icon}</ListItemIcon>
<ListItemText primary={menu.text} />
</ListItem>
))}
</List>
<div className={classes.footer}>
<Typography variant="h6" className={classes.version}>
v2.1
</Typography>
</div>
</div>
);
const handleSwitch = (event) => {
setDarkMode(event.target.checked);
};
const handleSearch = (event) => {
const { value } = event.target;
setKeyword(value);
};
const getSearchAnime = () => {
if (keyword) {
axios
.get(`/api/v1/anime/${keyword}`)
.then((response) => {
setSearchResult(response.data);
})
.catch((err) => console.log(err));
} else {
setSearchResult([]);
}
};
const handleDrawerToggle = () => {
setMobileOpen(!mobileOpen);
};
const handleResetKeyword = () => {
setKeyword("");
};
useEffect(() => {
let timer = setTimeout(() => getSearchAnime(), 1000);
return () => clearTimeout(timer);
}, [keyword]);
const container =
window !== undefined ? () => window().document.body : undefined;
return (
<div className={classes.root}>
<CssBaseline />
{keyword !== "" ? (
<SearchList
results={searchResult}
handleResetKeyword={handleResetKeyword}
/>
) : (
""
)}
<AppBar className={classes.appBar} color="dafault">
<Toolbar>
<IconButton
color="inherit"
aria-label="open drawer"
edge="start"
onClick={handleDrawerToggle}
className={classes.menuButton}
>
<MenuBookRounded />
</IconButton>
<Typography className={classes.time}>{time}</Typography>
<div className={classes.search}>
<div className={classes.searchIcon}>
<SearchOutlined />
</div>
<InputBase
placeholder="Search…"
classes={{
root: classes.inputRoot,
input: classes.inputInput,
}}
inputProps={{ "aria-label": "search" }}
onChange={handleSearch}
value={keyword}
/>
</div>
<Switch checked={darkMode} onChange={handleSwitch} />
</Toolbar>
</AppBar>
<nav className={classes.drawer}>
{/* The implementation can be swapped with js to avoid SEO duplication of links. */}
<Hidden smUp implementation="css">
<Drawer
container={container}
variant="temporary"
anchor={theme.direction === "rtl" ? "right" : "left"}
open={mobileOpen}
onClose={handleDrawerToggle}
classes={{
paper: classes.drawerPaper,
}}
ModalProps={{
keepMounted: true, // Better open performance on mobile.
}}
>
{drawer}
</Drawer>
</Hidden>
<Hidden xsDown implementation="css">
<Drawer
classes={{
paper: classes.drawerPaper,
}}
variant="permanent"
open
>
{drawer}
</Drawer>
</Hidden>
</nav>
<div className={classes.page}>
<div className={classes.toolbar}></div>
{children}
</div>
</div>
);
}
Example #3
Source File: Chat.js From Chathub with MIT License | 4 votes |
function Chat() {
const [input, setInput] = useState("");
const [seed, setSeed] = useState("");
const { roomId } = useParams();
const [roomName, setRoomName] = useState("");
const [messages, setMessages] = useState([]);
const [{ user }] = useStateValue();
const chatBodyRef = useRef(null);
const inputRef = useRef(null);
const [showEmoji, setEMoji] = useState(false);
const [open, setOpen] = useState(false);
const [fileObjects, setFileObjects] = useState([]);
const upload = () => {
if (fileObjects == null) return;
storage
.ref(`/files/${fileObjects}`)
.put(fileObjects)
.on("state_changed", alert("success"), alert);
};
const dialogTitle = () => (
<>
<span>Upload file</span>
<IconButton
style={{ right: "12px", top: "8px", position: "absolute" }}
onClick={() => setOpen(false)}
>
<CloseIcon />
</IconButton>
</>
);
useEffect(() => {
if (roomId) {
db.collection("rooms")
.doc(roomId)
.onSnapshot((snapshot) => setRoomName(snapshot.data().name));
db.collection("rooms")
.doc(roomId)
.collection("messages")
.orderBy("timestamp", "asc")
.onSnapshot((snapshot) =>
setMessages(snapshot.docs.map((doc) => doc.data()))
);
}
}, [roomId]);
useEffect(() => {
setSeed(Math.floor(Math.random() * 5000));
}, [roomId]);
useEffect(() => {
chatBodyRef.current.scrollTop = chatBodyRef.current.scrollHeight;
});
const toggleEMoji = () => {
sEmoji();
};
const sEmoji = (e) => {
setEMoji(!showEmoji);
};
const addEmoji = (e) => {
sEmoji();
let emoji = e.native;
setInput(input + emoji);
};
const sendMessage = (e) => {
e.preventDefault();
db.collection("rooms").doc(roomId).collection("messages").add({
message: input,
name: user.displayName,
timestamp: firebase.firestore.FieldValue.serverTimestamp(),
});
setInput("");
};
const copyToClipBoard = (e) => {
e.preventDefault();
inputRef.current.select();
document.execCommand("copy");
};
return (
<div className="chat">
<div className="chat__header">
<Avatar src={`https://avatars.dicebear.com/api/human/${seed}.svg`} />
<div className="chat__headerInfo">
<h3 className="chat-room-name">{roomName}</h3>
<p className="chat-room-last-seen">
Last seen{" "}
{new Date(
messages[messages.length - 1]?.timestamp?.toDate()
).toUTCString()}
</p>
</div>
<div className="chat__headerRight">
<IconButton>
<SearchOutlined />
</IconButton>
<IconButton onClick={() => setOpen(true)}>
<AttachFile />
</IconButton>
<DropzoneDialogBase
dialogTitle={dialogTitle()}
acceptedFiles={[]}
fileObjects={fileObjects}
cancelButtonText={"cancel"}
submitButtonText={"submit"}
maxFileSize={5000000}
open={open}
onAdd={(newFileObjs) => {
console.log("onAdd", newFileObjs);
setFileObjects([].concat(fileObjects, newFileObjs));
}}
onDelete={(deleteFileObj) => {
console.log("onDelete", deleteFileObj);
}}
onClose={() => setOpen(false)}
onSave={() => {
console.log("onSave", fileObjects);
upload();
setOpen(false);
}}
showPreviews={true}
showFileNamesInPreview={true}
/>
<IconButton>
<MoreVert />
</IconButton>
</div>
</div>
<div className="chat__body" ref={chatBodyRef}>
{messages.map((message) => (
<p
className={`chat__message ${
message.name === user.displayName && "chat__receiver"
}`}
>
<span className="chat__name">{message.name}</span>
{message.message}
{/*{fileObjects.length > 0 && (
<div className="chat__name">
{message.name}
{fileObjects.length}
</div>
)}*/}
<span className="chat__timestamp">
{" "}
{new Date(message.timestamp?.toDate()).toUTCString()}
</span>
</p>
))}
</div>
<div className="chat__footer">
{showEmoji ? (
<Picker onSelect={addEmoji} emojiTooltip={true} title="Chathub" />
) : null}
<button
type="button"
style={{ cursor: "pointer", background: "none" }}
className="toggle-emoji"
onClick={toggleEMoji}
>
<InsertEmoticonIcon />
</button>
<form>
<input
ref={inputRef}
value={input}
onChange={(e) => setInput(e.target.value)}
type="text"
placeholder="Type a message"
/>
<button type="submit" onClick={sendMessage}>
{" "}
Send a Message
</button>
</form>
<Tooltip title="Copy">
<AssignmentIcon onClick={copyToClipBoard} />
</Tooltip>
<MicIcon />
</div>
</div>
);
}
Example #4
Source File: Sidebar.js From Chathub with MIT License | 4 votes |
function Sidebar(props) {
const [rooms, setRooms] = useState([]);
const [anchorEl, setAnchorEl] = React.useState(null);
const [{ user }] = useStateValue();
const dispatch = useStateValue()[1];
useEffect(() => {
const unsubscribe = db.collection("rooms").onSnapshot((snapshot) =>
setRooms(
snapshot.docs.map((doc) => ({
id: doc.id,
data: doc.data(),
}))
)
);
return () => {
unsubscribe();
};
}, []);
const handleClickMore = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = (event) => {
setAnchorEl(null);
};
const handleLogout = (event) => {
auth
.signOut()
.then(() => {
dispatch({
type: actionTypes.SET_USER,
user: null,
})
})
.catch((error) => alert(error.message));
};
const open = Boolean(anchorEl);
return (
<div className="sidebar">
<div className="sidebar__header">
<Avatar src={user?.photoURL} />
<div className="sidebar__headerRight">
<IconButton>
<DonutLargeIcon />
</IconButton>
<IconButton>
<ChatIcon />
</IconButton>
<IconButton onClick={handleClickMore}>
<MoreVertIcon />
</IconButton>
<Menu
anchorEl={anchorEl}
keepMounted
onClose={handleClose}
open={open}
>
<MenuItem key={"logout"} onClick={handleLogout}>
Logout
</MenuItem>
</Menu>
</div>
</div>
<div className="sidebar__search">
<div className="sidebar__searchContainer">
<SearchOutlined />
<input className="inputText" type="text" placeholder="Search or start new chat" />
</div>
</div>
<div className="sidebar__chats">
<SidebarChat addNewChat />
{rooms.map((room) => (
<SidebarChat key={room.id} id={room.id} name={room.data.name} />
))}
</div>
</div>
);
}