diff --git a/frontend/src/components/shared/sliderWithInput/SliderWithInput.tsx b/frontend/src/components/shared/sliderWithInput/SliderWithInput.tsx new file mode 100644 index 000000000..e8e504ded --- /dev/null +++ b/frontend/src/components/shared/sliderWithInput/SliderWithInput.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import { Slider, Text, Group, NumberInput } from '@mantine/core'; + +interface Props { + label: string; + value: number; + onChange: (value: number) => void; + disabled?: boolean; + min?: number; + max?: number; + step?: number; +} + +export default function SliderWithInput({ + label, + value, + onChange, + disabled, + min = 0, + max = 200, + step = 1, +}: Props) { + return ( +
+ {label}: {Math.round(value)}% + +
+ +
+ onChange(Number(v) || 0)} + min={min} + max={max} + step={step} + disabled={disabled} + style={{ width: 90 }} + /> +
+
+ ); +} + + diff --git a/frontend/src/components/tools/adjustContrast/AdjustContrastBasicSettings.tsx b/frontend/src/components/tools/adjustContrast/AdjustContrastBasicSettings.tsx index 8a376c8de..6993186bb 100644 --- a/frontend/src/components/tools/adjustContrast/AdjustContrastBasicSettings.tsx +++ b/frontend/src/components/tools/adjustContrast/AdjustContrastBasicSettings.tsx @@ -1,7 +1,8 @@ import React from 'react'; -import { Stack, Slider, Text, Group, NumberInput } from '@mantine/core'; +import { Stack } from '@mantine/core'; import { useTranslation } from 'react-i18next'; import { AdjustContrastParameters } from '../../../hooks/tools/adjustContrast/useAdjustContrastParameters'; +import SliderWithInput from '../../shared/sliderWithInput/SliderWithInput'; interface Props { parameters: AdjustContrastParameters; @@ -12,31 +13,11 @@ interface Props { export default function AdjustContrastBasicSettings({ parameters, onParameterChange, disabled }: Props) { const { t } = useTranslation(); - const renderSlider = (label: string, value: number, onChange: (v: number) => void) => ( -
- {label}: {Math.round(value)}% - -
- -
- onChange(Number(v) || 0)} - min={0} - max={200} - step={1} - disabled={disabled} - style={{ width: 90 }} - /> -
-
- ); - return ( - {renderSlider(t('adjustContrast.contrast', 'Contrast'), parameters.contrast, (v) => onParameterChange('contrast', v as any))} - {renderSlider(t('adjustContrast.brightness', 'Brightness'), parameters.brightness, (v) => onParameterChange('brightness', v as any))} - {renderSlider(t('adjustContrast.saturation', 'Saturation'), parameters.saturation, (v) => onParameterChange('saturation', v as any))} + onParameterChange('contrast', v as any)} disabled={disabled} /> + onParameterChange('brightness', v as any)} disabled={disabled} /> + onParameterChange('saturation', v as any)} disabled={disabled} /> ); } diff --git a/frontend/src/components/tools/adjustContrast/AdjustContrastColorSettings.tsx b/frontend/src/components/tools/adjustContrast/AdjustContrastColorSettings.tsx index 3d255ed41..0f2722873 100644 --- a/frontend/src/components/tools/adjustContrast/AdjustContrastColorSettings.tsx +++ b/frontend/src/components/tools/adjustContrast/AdjustContrastColorSettings.tsx @@ -1,7 +1,8 @@ import React from 'react'; -import { Stack, Slider, Text, Group, NumberInput } from '@mantine/core'; +import { Stack } from '@mantine/core'; import { useTranslation } from 'react-i18next'; import { AdjustContrastParameters } from '../../../hooks/tools/adjustContrast/useAdjustContrastParameters'; +import SliderWithInput from '../../shared/sliderWithInput/SliderWithInput'; interface Props { parameters: AdjustContrastParameters; @@ -12,31 +13,11 @@ interface Props { export default function AdjustContrastColorSettings({ parameters, onParameterChange, disabled }: Props) { const { t } = useTranslation(); - const renderSlider = (label: string, value: number, onChange: (v: number) => void) => ( -
- {label}: {Math.round(value)}% - -
- -
- onChange(Number(v) || 0)} - min={0} - max={200} - step={1} - disabled={disabled} - style={{ width: 90 }} - /> -
-
- ); - return ( - {renderSlider(t('adjustContrast.red', 'Red'), parameters.red, (v) => onParameterChange('red', v as any))} - {renderSlider(t('adjustContrast.green', 'Green'), parameters.green, (v) => onParameterChange('green', v as any))} - {renderSlider(t('adjustContrast.blue', 'Blue'), parameters.blue, (v) => onParameterChange('blue', v as any))} + onParameterChange('red', v as any)} disabled={disabled} /> + onParameterChange('green', v as any)} disabled={disabled} /> + onParameterChange('blue', v as any)} disabled={disabled} /> ); }