@@ -18,9 +18,9 @@ export type RenderProps = {
1818 */
1919 valueText : string ;
2020 /**
21- * Determines whether the progress bar is indeterminated or not.
21+ * Determines whether the progress bar is indeterminate or not.
2222 */
23- indeterminated : boolean ;
23+ indeterminate : boolean ;
2424} ;
2525
2626export type ClassNameProps = RenderProps ;
@@ -37,7 +37,7 @@ type OwnProps = {
3737 /**
3838 * The current value of the progress bar.
3939 */
40- value : number ;
40+ value : number | "indeterminate" ;
4141 /**
4242 * The minimum allowed value of the progress bar.
4343 * Should not be greater than or equal to `max`.
@@ -52,14 +52,11 @@ type OwnProps = {
5252 * A string value that provides a user-friendly name
5353 * for the current value of the progress bar.
5454 * This is important for screen reader users.
55- */
56- valueText : string ;
57- /**
58- * If `true`, the progress bar value will be indeterminate.
5955 *
60- * @default false;
56+ * If component is indeterminate, it ignores valuetext
57+ * since we don't have any deterministic value.
6158 */
62- indeterminated ?: boolean ;
59+ valueText : string ;
6360 /**
6461 * The label of the component.
6562 */
@@ -89,7 +86,6 @@ const ProgressBarBase = (props: Props, ref: React.Ref<HTMLDivElement>) => {
8986 const {
9087 className : classNameProp ,
9188 children : childrenProp ,
92- indeterminated = false ,
9389 value,
9490 min,
9591 max,
@@ -106,13 +102,19 @@ const ProgressBarBase = (props: Props, ref: React.Ref<HTMLDivElement>) => {
106102 ] . join ( "\n" ) ,
107103 } ) ;
108104
109- const percentageValue = remap ( value , min , max , 0 , 100 ) ;
105+ const isIndeterminate = value === "indeterminate" ;
106+
107+ const numericValue = isIndeterminate ? min : value ;
108+
109+ const percentageValue = isIndeterminate
110+ ? min
111+ : remap ( numericValue , min , max , 0 , 100 ) ;
110112
111113 const renderProps : RenderProps = {
112114 percentageValue,
113- value,
115+ value : numericValue ,
114116 valueText,
115- indeterminated ,
117+ indeterminate : isIndeterminate ,
116118 } ;
117119
118120 const classNameProps : ClassNameProps = renderProps ;
@@ -126,14 +128,14 @@ const ProgressBarBase = (props: Props, ref: React.Ref<HTMLDivElement>) => {
126128 role = "progressbar"
127129 ref = { ref }
128130 className = { className }
129- aria-valuenow = { indeterminated ? undefined : value }
131+ aria-valuenow = { isIndeterminate ? undefined : value }
130132 aria-valuemin = { min }
131133 aria-valuemax = { max }
132- aria-valuetext = { indeterminated ? undefined : valueText }
134+ aria-valuetext = { isIndeterminate ? undefined : valueText }
133135 aria-label = { labelInfo . srOnlyLabel }
134136 aria-labelledby = { labelInfo . labelledBy }
135137 data-slot = { RootSlot }
136- data-indeterminated = { indeterminated ? "" : undefined }
138+ data-indeterminate = { isIndeterminate ? "" : undefined }
137139 >
138140 { children }
139141 </ div >
0 commit comments