fix(striker-ui): revise inner and expandable panel types

main
Tsu-ba-me 2 years ago committed by digimer
parent 49b157f81b
commit dceeae9c61
  1. 30
      striker-ui/components/Panels/ExpandablePanel.tsx
  2. 22
      striker-ui/components/Panels/InnerPanel.tsx
  3. 10
      striker-ui/types/ExpandablePanel.d.ts
  4. 1
      striker-ui/types/InnerPanel.d.ts

@ -3,7 +3,7 @@ import {
ExpandMore as ExpandMoreIcon, ExpandMore as ExpandMoreIcon,
} from '@mui/icons-material'; } from '@mui/icons-material';
import { Box, IconButton } from '@mui/material'; import { Box, IconButton } from '@mui/material';
import { FC, ReactNode, useMemo, useState } from 'react'; import { FC, useMemo, useState } from 'react';
import { GREY } from '../../lib/consts/DEFAULT_THEME'; import { GREY } from '../../lib/consts/DEFAULT_THEME';
@ -14,31 +14,15 @@ import InnerPanelHeader from './InnerPanelHeader';
import Spinner from '../Spinner'; import Spinner from '../Spinner';
import { BodyText } from '../Text'; import { BodyText } from '../Text';
type ExpandablePanelOptionalProps = {
expandInitially?: boolean;
loading?: boolean;
showHeaderSpinner?: boolean;
};
type ExpandablePanelProps = ExpandablePanelOptionalProps & {
header: ReactNode;
};
const EXPANDABLE_PANEL_DEFAULT_PROPS: Required<ExpandablePanelOptionalProps> = {
expandInitially: false,
loading: false,
showHeaderSpinner: false,
};
const HEADER_SPINNER_LENGTH = '1.2em'; const HEADER_SPINNER_LENGTH = '1.2em';
const ExpandablePanel: FC<ExpandablePanelProps> = ({ const ExpandablePanel: FC<ExpandablePanelProps> = ({
children, children,
expandInitially: expandInitially: isExpandInitially = false,
isExpandInitially = EXPANDABLE_PANEL_DEFAULT_PROPS.expandInitially,
header, header,
loading: isLoading = EXPANDABLE_PANEL_DEFAULT_PROPS.loading, loading: isLoading = false,
showHeaderSpinner: panelProps,
isShowHeaderSpinner = EXPANDABLE_PANEL_DEFAULT_PROPS.showHeaderSpinner, showHeaderSpinner: isShowHeaderSpinner = false,
}) => { }) => {
const [isExpand, setIsExpand] = useState<boolean>(isExpandInitially); const [isExpand, setIsExpand] = useState<boolean>(isExpandInitially);
@ -76,7 +60,7 @@ const ExpandablePanel: FC<ExpandablePanelProps> = ({
); );
return ( return (
<InnerPanel> <InnerPanel {...panelProps}>
<InnerPanelHeader> <InnerPanelHeader>
<FlexBox row> <FlexBox row>
{headerElement} {headerElement}
@ -96,6 +80,4 @@ const ExpandablePanel: FC<ExpandablePanelProps> = ({
); );
}; };
ExpandablePanel.defaultProps = EXPANDABLE_PANEL_DEFAULT_PROPS;
export default ExpandablePanel; export default ExpandablePanel;

@ -1,14 +1,11 @@
import { FC } from 'react'; import { FC, useMemo } from 'react';
import { Box as MUIBox, BoxProps as MUIBoxProps } from '@mui/material'; import { Box as MUIBox, SxProps, Theme } from '@mui/material';
import { BORDER_RADIUS, DIVIDER } from '../../lib/consts/DEFAULT_THEME'; import { BORDER_RADIUS, DIVIDER } from '../../lib/consts/DEFAULT_THEME';
type InnerPanelProps = MUIBoxProps; const InnerPanel: FC<InnerPanelProps> = ({ sx, ...muiBoxRestProps }) => {
const combinedSx = useMemo<SxProps<Theme>>(
const InnerPanel: FC<InnerPanelProps> = ({ sx, ...muiBoxRestProps }) => ( () => ({
<MUIBox
{...{
sx: {
borderWidth: '1px', borderWidth: '1px',
borderRadius: BORDER_RADIUS, borderRadius: BORDER_RADIUS,
borderStyle: 'solid', borderStyle: 'solid',
@ -19,10 +16,11 @@ const InnerPanel: FC<InnerPanelProps> = ({ sx, ...muiBoxRestProps }) => (
position: 'relative', position: 'relative',
...sx, ...sx,
}, }),
...muiBoxRestProps, [sx],
}}
/>
); );
return <MUIBox {...muiBoxRestProps} sx={combinedSx} />;
};
export default InnerPanel; export default InnerPanel;

@ -0,0 +1,10 @@
type ExpandablePanelOptionalProps = {
expandInitially?: boolean;
loading?: boolean;
panelProps?: InnerPanelProps;
showHeaderSpinner?: boolean;
};
type ExpandablePanelProps = ExpandablePanelOptionalProps & {
header: import('react').ReactNode;
};

@ -0,0 +1 @@
type InnerPanelProps = import('@mui/material').BoxProps;
Loading…
Cancel
Save