playing aroudn with scroll and overflow in the sidepanel

This commit is contained in:
talksik
2022-05-18 08:08:47 -05:00
parent bed932875a
commit 6a3aa13223
4 changed files with 50 additions and 26 deletions
@@ -51,7 +51,7 @@ type BroadcastersMap = {
[lineId: string]: string[]; [lineId: string]: string[];
}; };
interface IRealTimeRoomProvider { interface ITerminalProvider {
roomsMap: LineIdToMasterLine; roomsMap: LineIdToMasterLine;
selectedLineId?: string; selectedLineId?: string;
@@ -63,7 +63,7 @@ interface IRealTimeRoomProvider {
handleShowNewChannelForm?: (showOrHide: 'show' | 'hide') => void; handleShowNewChannelForm?: (showOrHide: 'show' | 'hide') => void;
} }
const RealTimeRoomContext = React.createContext<IRealTimeRoomProvider>({ const TerminalContext = React.createContext<ITerminalProvider>({
roomsMap: {}, roomsMap: {},
showNewChannelForm: false, showNewChannelForm: false,
@@ -110,7 +110,7 @@ const RealTimeRoomContext = React.createContext<IRealTimeRoomProvider>({
// TODO: many of this can be done in a HOC like <Terminal /> but it doesn't matter, they both just // TODO: many of this can be done in a HOC like <Terminal /> but it doesn't matter, they both just
// re-render, just make sure to pass in lighter props to children like main panel or lineRow // re-render, just make sure to pass in lighter props to children like main panel or lineRow
export function RealTimeRoomProvider({ children }: { children: React.ReactChild }) { export function TerminalProvider({ children }: { children: React.ReactChild }) {
const { rooms } = useRooms(); const { rooms } = useRooms();
const { user } = useAuth(); const { user } = useAuth();
const { $ws } = useSockets(); const { $ws } = useSockets();
@@ -348,7 +348,7 @@ export function RealTimeRoomProvider({ children }: { children: React.ReactChild
useKeyPressEvent('Escape', clearMind); useKeyPressEvent('Escape', clearMind);
return ( return (
<RealTimeRoomContext.Provider <TerminalContext.Provider
value={{ value={{
roomsMap: roomMap, roomsMap: roomMap,
handleSelectLine, handleSelectLine,
@@ -358,19 +358,17 @@ export function RealTimeRoomProvider({ children }: { children: React.ReactChild
handleShowNewChannelForm, handleShowNewChannelForm,
}} }}
> >
<div className="flex flex-col flex-1"> <div className="flex flex-row flex-1 h-full w-full">
<div className="flex flex-row flex-1"> <SidePanel />
<SidePanel />
{desktopMode === 'mainApp' && <MainPanel />} {desktopMode === 'mainApp' && <MainPanel />}
</div>
</div> </div>
{children} {children}
</RealTimeRoomContext.Provider> </TerminalContext.Provider>
); );
} }
export default function useTerminalProvider() { export default function useTerminalProvider() {
return useContext(RealTimeRoomContext); return useContext(TerminalContext);
} }
+23 -1
View File
@@ -11,7 +11,9 @@ body {
} }
#root { #root {
@apply flex flex-col flex-1; height: inherit;
width: inherit;
display: flex;
padding: 0 !important; padding: 0 !important;
font-family: 'IBM Plex Sans', sans-serif; font-family: 'IBM Plex Sans', sans-serif;
} }
@@ -47,3 +49,23 @@ button {
.ant-modal-footer { .ant-modal-footer {
padding: 0 !important; padding: 0 !important;
} }
/* custom scrollbar */
::-webkit-scrollbar {
width: 20px;
}
::-webkit-scrollbar-track {
background-color: transparent;
}
::-webkit-scrollbar-thumb {
background-color: #d6dee1;
border-radius: 20px;
border: 6px solid transparent;
background-clip: content-box;
}
::-webkit-scrollbar-thumb:hover {
background-color: #a8bbbf;
}
+3 -3
View File
@@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import { Toaster } from 'react-hot-toast'; import { Toaster } from 'react-hot-toast';
import { RoomsProvider } from '../providers/RoomsProvider'; import { RoomsProvider } from '../providers/RoomsProvider';
import { RealTimeRoomProvider } from '../providers/TerminalProvider'; import { TerminalProvider } from '../providers/TerminalProvider';
import { AuthProvider } from '../providers/AuthProvider'; import { AuthProvider } from '../providers/AuthProvider';
import { ElectronProvider } from '../providers/ElectronProvider'; import { ElectronProvider } from '../providers/ElectronProvider';
import { SocketProvider } from '../providers/SocketProvider'; import { SocketProvider } from '../providers/SocketProvider';
@@ -16,9 +16,9 @@ export default function ElectronApp() {
<SocketProvider> <SocketProvider>
<RoomsProvider> <RoomsProvider>
<StreamProvider> <StreamProvider>
<RealTimeRoomProvider> <TerminalProvider>
<></> <></>
</RealTimeRoomProvider> </TerminalProvider>
</StreamProvider> </StreamProvider>
</RoomsProvider> </RoomsProvider>
</SocketProvider> </SocketProvider>
@@ -49,7 +49,10 @@ export default function SidePanel() {
}, [handleShowNewChannelForm]); }, [handleShowNewChannelForm]);
return ( return (
<div className="flex flex-col w-[350px] relative group border-r border-r-gray-200 shadow-xl bg-white z-20"> <div
className="flex flex-col w-[350px] relative group
border-r border-r-gray-200 shadow-xl bg-white z-20 overflow-y-auto"
>
<NavBar /> <NavBar />
<div className="flex flex-row p-4 items-center bg-gray-100 gap-2"> <div className="flex flex-row p-4 items-center bg-gray-100 gap-2">
@@ -96,7 +99,7 @@ export default function SidePanel() {
)} )}
{/* rest of the lines */} {/* rest of the lines */}
<div className={'flex flex-col'}> <div className={'flex flex-col flex-1 overflow-y-auto'}>
{initialRoomsFetch.loading ? ( {initialRoomsFetch.loading ? (
<Skeleton /> <Skeleton />
) : ( ) : (
@@ -112,17 +115,18 @@ export default function SidePanel() {
)} )}
</div> </div>
{/* user control panel */}
<div <div
className="absolute bottom-4 left-4" className="bg-gray-100
onKeyDown={() => { border-t border-t-gray-200 p-4 shadow-2xl z-50 w-full"
//
}}
onClick={() => {
console.log('opening main app');
}}
role="presentation"
> >
<NoTextLogo type="small" /> <button
onClick={() => {
console.log('opening main app');
}}
>
<NoTextLogo type="small" />
</button>
</div> </div>
</div> </div>
); );