From 06e0ecbc1b07914adb2114e74cfca1edf80d6f2c Mon Sep 17 00:00:00 2001 From: Kirill Revenkov <revenkov-k@yandex-team.ru> Date: Sun, 4 Feb 2024 21:56:24 +0300 Subject: [PATCH] feat: add invalidation state and error text --- src/components/Slider/Slider.tsx | 9 ++++++--- src/components/Slider/__stories__/SliderShowcase.tsx | 8 ++++---- src/components/Slider/types.ts | 7 ++++--- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/components/Slider/Slider.tsx b/src/components/Slider/Slider.tsx index 2dd1712d52..b7d86e7b29 100644 --- a/src/components/Slider/Slider.tsx +++ b/src/components/Slider/Slider.tsx @@ -24,7 +24,8 @@ export const Slider = React.forwardRef(function Slider( marksCount = 0, availableValues, hasTooltip = false, - error, + errorText, + validationState, disabled = false, debounceDelay = 0, onBlur, @@ -75,7 +76,7 @@ export const Slider = React.forwardRef(function Slider( }); const styleModifiers = { size, - error: Boolean(error) && !disabled, + error: validationState === 'invalid' && !disabled, disabled, hasTooltip: Boolean(hasTooltip), }; @@ -120,7 +121,9 @@ export const Slider = React.forwardRef(function Slider( : undefined } ></BaseSlider> - {styleModifiers.error && <div className={b('error', {size})}>{error}</div>} + {styleModifiers.error && errorText && ( + <div className={b('error', {size})}>{errorText}</div> + )} </div> ); }); diff --git a/src/components/Slider/__stories__/SliderShowcase.tsx b/src/components/Slider/__stories__/SliderShowcase.tsx index c40433eb2d..7966e9a1d9 100644 --- a/src/components/Slider/__stories__/SliderShowcase.tsx +++ b/src/components/Slider/__stories__/SliderShowcase.tsx @@ -45,10 +45,10 @@ export const SliderShowcase = () => { <ShowcaseBlock title="Range disabled" disabled defaultValue={[20, 40]} /> </div> <div className={blockCn}> - <ShowcaseBlock title="error" error={'Error description'} defaultValue={20} /> + <ShowcaseBlock title="error" errorText={'Error description'} defaultValue={20} /> <ShowcaseBlock title="Range error" - error={'Error description'} + errorText={'Error description'} defaultValue={[20, 40]} /> </div> @@ -69,13 +69,13 @@ export const SliderShowcase = () => { <ShowcaseBlock title="tooltip error" hasTooltip - error={'Error description'} + errorText={'Error description'} defaultValue={20} /> <ShowcaseBlock title="Range tooltip error" hasTooltip - error={'Error description'} + errorText={'Error description'} defaultValue={[20, 40]} /> </div> diff --git a/src/components/Slider/types.ts b/src/components/Slider/types.ts index 59a940f67f..2cf798f52b 100644 --- a/src/components/Slider/types.ts +++ b/src/components/Slider/types.ts @@ -20,8 +20,9 @@ export type SliderProps<ValueType = number | [number, number]> = { hasTooltip?: boolean; disabled?: boolean; - error?: string; - + errorText?: string; + /** Describes the validation state */ + validationState?: 'invalid'; debounceDelay?: number; onFocus?: (e: React.FocusEvent<HTMLDivElement>) => void; onBlur?: (e: React.FocusEvent<HTMLDivElement>) => void; @@ -31,7 +32,7 @@ export type SliderProps<ValueType = number | [number, number]> = { autoFocus?: boolean; tabIndex?: ValueType; - apiRef: BaseSliderRefType; + apiRef: React.RefObject<BaseSliderRefType>; } & Pick<DOMProps, 'className'> & QAProps;