Add LayoutProgressBar

This commit is contained in:
Bill 2022-03-23 03:03:32 -04:00
parent b5e876c22b
commit c8ca5d2b82
2 changed files with 32 additions and 0 deletions

View File

@ -0,0 +1,31 @@
import { FC, useMemo } from 'react';
import { Base, BaseProps, Flex } from '..';
interface LayoutProgressBarProps extends BaseProps<HTMLDivElement>
{
text: string;
progress: number;
maxProgress?: number;
}
export const LayoutProgressBar: FC<LayoutProgressBarProps> = props =>
{
const { text = '', progress = 0, maxProgress = 0, position = 'relative', classNames = [], children = null, ...rest } = props;
const getClassNames = useMemo(() =>
{
const newClassNames: string[] = [ 'progress', 'text-black' ];
if(classNames.length) newClassNames.push(...classNames);
return newClassNames;
}, [ classNames ]);
return (
<Base position={ position } classNames={ getClassNames } { ...rest }>
<Flex fit center position="absolute">{ text }</Flex>
<Base className="progress-bar bg-success" style={ { width: (~~((((progress - 0) * (100 - 0)) / (maxProgress - 0)) + 0) + '%') }} />
{ children }
</Base>
);
}

View File

@ -11,6 +11,7 @@ export * from './LayoutMiniCameraView';
export * from './LayoutNotificationAlertView';
export * from './LayoutNotificationBubbleView';
export * from './LayoutPetImageView';
export * from './LayoutProgressBar';
export * from './LayoutRarityLevelView';
export * from './LayoutRoomPreviewerView';
export * from './LayoutRoomThumbnailView';