Skip to content

Commit 5a8b5a6

Browse files
author
Kubit
committed
Include animation to ProgressBar component
1 parent 07acfbe commit 5a8b5a6

File tree

5 files changed

+35
-1
lines changed

5 files changed

+35
-1
lines changed

src/components/progressBar/progressBar.styled.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,18 @@ export const BarStyled = styled.div<ProgressBarStylesType>`
2222
${props => getStyles(props.sizeStyles?.bar)}
2323
`;
2424

25-
export const ProgressBarStyled = styled.div<ProgressBarStylesType & { progressCompleted?: number }>`
25+
export const ProgressBarStyled = styled.div<
26+
ProgressBarStylesType & {
27+
progressCompleted?: number;
28+
progressAnimation?: {
29+
duration?: string;
30+
timingFunction?: string;
31+
};
32+
}
33+
>`
2634
${props => getStyles(props.styles.progressBar)}
2735
${props => getStyles(props.sizeStyles?.progressBar)}
2836
width: ${({ progressCompleted }) => `${progressCompleted}%`};
37+
transition: ${({ progressAnimation }) =>
38+
`width ${progressAnimation?.duration} ${progressAnimation?.timingFunction}`};
2939
`;

src/components/progressBar/progressBarStandAlone.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ const ProgressBarStandaloneComponent = (
5353
/>
5454
<ProgressBarStyled
5555
data-testid={dataTestIdProgressBar}
56+
progressAnimation={props.progressAnimation}
5657
progressCompleted={props.progressCompleted}
5758
sizeStyles={props.sizeStyles}
5859
styles={props.styles}

src/components/progressBar/stories/argtypes.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,17 @@ export const argtypes = (variants: IThemeObjectVariants, themeSelected: string):
9898
category: CATEGORY_CONTROL.CONTENT,
9999
},
100100
},
101+
progressAnimation: {
102+
description: 'Animation in seconds of the progress bar transition',
103+
type: { name: 'object' },
104+
control: { type: 'object' },
105+
table: {
106+
type: {
107+
summary: 'object',
108+
},
109+
category: CATEGORY_CONTROL.MODIFIERS,
110+
},
111+
},
101112
dataTestIdBar: {
102113
control: { type: 'text' },
103114
type: { name: 'string' },

src/components/progressBar/stories/progressBar.stories.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ export const ProgressBar: Story = {
3737
variant: Object.values(variantsObject[themeSelected].ProgressBarVariantType || {})[0] as string,
3838
size: Object.values(variantsObject[themeSelected].ProgressBarSizeType || {})[0] as string,
3939
percentProgressCompleted: 50,
40+
progressAnimation: {
41+
duration: '0s',
42+
timingFunction: 'ease-out',
43+
},
4044
barAriaLabel: 'aria-label-0',
4145
themeArgs: themesObject[themeSelected][STYLES_NAME.PROGRESS_BAR],
4246
},
@@ -47,6 +51,10 @@ export const ProgressBarWithCtv: Story = {
4751
variant: Object.values(variantsObject[themeSelected].ProgressBarVariantType || {})[0] as string,
4852
size: Object.values(variantsObject[themeSelected].ProgressBarSizeType || {})[0] as string,
4953
percentProgressCompleted: 50,
54+
progressAnimation: {
55+
duration: '0s',
56+
timingFunction: 'ease-out',
57+
},
5058
barAriaLabel: 'aria-label-0',
5159
ctv: {
5260
bar: {

src/components/progressBar/types/progressBar.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ export interface IProgressBarStandAlone {
1515
onDragStart?: () => void;
1616
onDragEnd?: () => void;
1717
tooltip?: SliderTooltipType;
18+
progressAnimation?: {
19+
duration?: string;
20+
timingFunction?: string;
21+
};
1822
}
1923

2024
export interface IProgressBar<

0 commit comments

Comments
 (0)