feat: Refactor style management for inner padding in layout components

- Updated HeaderBar, PageLayout, and SiderBar components to manage inner padding state based on selected items.
- Replaced `isChatPage` state with `shouldInnerPadding` in Style context for better clarity and functionality.
- Enhanced user experience by dynamically adjusting content padding based on navigation selections.
This commit is contained in:
CalciumIon
2024-12-11 23:08:52 +08:00
parent 024cdb08df
commit 28fa77cc92
4 changed files with 8 additions and 6 deletions

View File

@@ -118,8 +118,10 @@ const HeaderBar = () => {
return (
<div onClick={(e) => {
if (props.itemKey === 'home') {
styleDispatch({ type: 'SET_INNER_PADDING', payload: true });
styleDispatch({ type: 'SET_SIDER', payload: true });
} else {
styleDispatch({ type: 'SET_INNER_PADDING', payload: false });
styleDispatch({ type: 'SET_SIDER', payload: false });
}
}}>

View File

@@ -23,7 +23,7 @@ const PageLayout = () => {
</Sider>
<Layout>
<Content
style={{ overflowY: 'auto', padding: styleState.isChatPage? '0': '24px' }}
style={{ overflowY: styleState.shouldInnerPadding?'hidden':'auto', padding: styleState.shouldInnerPadding? '0': '24px' }}
>
<App />
</Content>

View File

@@ -280,9 +280,9 @@ const SiderBar = () => {
items={headerButtons}
onSelect={(key) => {
if (key.itemKey.toString().startsWith('chat')) {
styleDispatch({ type: 'SET_CHAT_PAGE', payload: true });
styleDispatch({ type: 'SET_INNER_PADDING', payload: true });
} else {
styleDispatch({ type: 'SET_CHAT_PAGE', payload: false });
styleDispatch({ type: 'SET_INNER_PADDING', payload: false });
}
setSelectedKeys([key.itemKey]);
}}

View File

@@ -11,7 +11,7 @@ export const StyleProvider = ({ children }) => {
const [state, setState] = useState({
isMobile: false,
showSider: false,
isChatPage: false,
shouldInnerPadding: false,
});
const dispatch = (action) => {
@@ -26,8 +26,8 @@ export const StyleProvider = ({ children }) => {
case 'SET_MOBILE':
setState(prev => ({ ...prev, isMobile: action.payload }));
break;
case 'SET_CHAT_PAGE':
setState(prev => ({ ...prev, isChatPage: action.payload }));
case 'SET_INNER_PADDING':
setState(prev => ({ ...prev, shouldInnerPadding: action.payload }));
break;
default:
setState(prev => ({ ...prev, ...action }));