Skip to content

Commit

Permalink
fix(slider-input): remove lockLimit
Browse files Browse the repository at this point in the history
  • Loading branch information
fulcanellee committed Jan 21, 2025
1 parent fa60a94 commit 43f5612
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 49 deletions.
8 changes: 8 additions & 0 deletions .changeset/long-doors-destroy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'@alfalab/core-components-slider-input': major
---

Удален пропс `lockLimit`, который был добавлен в `core-components@48.0`<br/>
Данный пропс использовался для установки значений в пределах указанных min/max границ при `blur` событии.
Было обнаружено, что значения в компоненте могут вести себя непредсказуемо если одновременно использовать onBlur, lockLimit, а также при мутации передаваемого value.<br/>
Чтобы реализовать установку значения по границам - используйте обработчик `onBlur`.
48 changes: 0 additions & 48 deletions packages/slider-input/src/Component.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import React, {
ChangeEvent,
cloneElement,
ComponentType,
FocusEvent,
forwardRef,
Fragment,
isValidElement,
Expand Down Expand Up @@ -38,14 +37,6 @@ export type SliderInputProps = Omit<
*/
max?: number;

/**
* Предотвращает ввод числа если оно больше или меньше допустимого.
* При событии blur установится число по верхней границе, если оно больше допустимого, и наоборот - по нижней границе, если число меньше допустимого.
* @default false
* @deprecated Обработайте установку лимитов самостоятельно в событии onBlur. Пропс будет удален в версии core-components@49.0
*/
lockLimit?: boolean;

/**
* Массив подписей к слайдеру
*/
Expand Down Expand Up @@ -163,7 +154,6 @@ export const SliderInput = forwardRef<HTMLInputElement, SliderInputProps>(
min = 0,
max = 100,
step = 1,
lockLimit = false,
block,
steps = [],
sliderValue = +value,
Expand Down Expand Up @@ -212,43 +202,6 @@ export const SliderInput = forwardRef<HTMLInputElement, SliderInputProps>(
[getValidInputValue, onChange, onInputChange],
);

const handleInputBlur = useCallback(
(event: FocusEvent<HTMLInputElement>) => {
const { value: inputValue } = event.target as HTMLInputElement;
const validValue = getValidInputValue(inputValue);

const getEventPayloadValue = (payload: number | '') => {
if (payload > max) {
return max;
}

if (payload < min) {
return min;
}

return '';
};

if (lockLimit) {
if (onChange) {
onChange(null, {
value: getEventPayloadValue(validValue),
});
}
if (onInputChange) {
onInputChange(null, {
value: getEventPayloadValue(validValue),
});
}
}

if (restProps.onBlur) {
restProps.onBlur(event);
}
},
[getValidInputValue, lockLimit, max, min, onChange, onInputChange, restProps],
);

return (
<div
className={cn(
Expand All @@ -270,7 +223,6 @@ export const SliderInput = forwardRef<HTMLInputElement, SliderInputProps>(
ref={ref}
value={value.toString()}
onChange={handleInputChange}
onBlur={handleInputBlur}
block={true}
size={size}
label={label}
Expand Down
1 change: 0 additions & 1 deletion packages/slider-input/src/docs/Component.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ export const slider_input: Story = {
info={text('info', '')}
error={text('error', '')}
readOnly={boolean('readOnly', false)}
lockLimit={boolean('lockLimit', false)}
/>
);
},
Expand Down

0 comments on commit 43f5612

Please sign in to comment.