+
Homework #11
{/*should work (должно работать)*/}
-
-
- {value1}
-
-
-
-
-
-
- {value1}
-
-
-
- {value2}
-
+
+
+
+ {value1}
+
+
+
+ {value1}
+
+ {value2}
+
+
)
diff --git a/src/s2-homeworks/hw11/common/c7-SuperRange/SuperRange.module.css b/src/s2-homeworks/hw11/common/c7-SuperRange/SuperRange.module.css
deleted file mode 100644
index 2d49ab4..0000000
--- a/src/s2-homeworks/hw11/common/c7-SuperRange/SuperRange.module.css
+++ /dev/null
@@ -1,21 +0,0 @@
-.range {
- appearance: none;
- width: 160px;
-
- outline: none;
- border-radius: 3px;
- background: #99ff99;
-}
-
-.range::-webkit-slider-thumb {
- appearance: none;
- position: relative;
- width: 16px;
- height: 16px;
- top: 3px;
- margin-top: -6px;
-
- background: red;
- cursor: pointer;
- z-index: 2;
-}
diff --git a/src/s2-homeworks/hw11/common/c7-SuperRange/SuperRange.tsx b/src/s2-homeworks/hw11/common/c7-SuperRange/SuperRange.tsx
index 5103e06..66d1139 100644
--- a/src/s2-homeworks/hw11/common/c7-SuperRange/SuperRange.tsx
+++ b/src/s2-homeworks/hw11/common/c7-SuperRange/SuperRange.tsx
@@ -1,47 +1,41 @@
-import React, {
- ChangeEvent,
- DetailedHTMLProps,
- InputHTMLAttributes,
-} from 'react'
-import s from './SuperRange.module.css'
+import React from 'react'
+import { Slider, SliderProps } from '@mui/material'
-// тип пропсов обычного инпута
-type DefaultInputPropsType = DetailedHTMLProps<
- InputHTMLAttributes
,
- HTMLInputElement
->
-
-// здесь мы говорим что у нашего инпута будут такие же пропсы как у обычного инпута
+// здесь мы говорим что у нашего слайдера будут такие же пропсы как у обычного mui слайдера
// (чтоб не писать value: string, onChange: ...; они уже все описаны в DefaultInputPropsType)
-type SuperRangePropsType = DefaultInputPropsType & {
- // и + ещё пропсы которых нет в стандартном инпуте
- onChangeRange?: (value: number) => void
-}
+type SuperRangePropsType = SliderProps
const SuperRange: React.FC = ({
- type, // достаём и игнорируем чтоб нельзя было задать другой тип инпута
- onChange,
- onChangeRange,
- className,
-
...restProps // все остальные пропсы попадут в объект restProps
}) => {
- const onChangeCallback = (e: ChangeEvent) => {
- onChange && onChange(e) // сохраняем старую функциональность
-
- onChangeRange && onChangeRange(+e.currentTarget.value)
- }
-
- const finalRangeClassName = `${s.range} ${className ? className : ''}`
-
- // взять одинарный ползунок из материал-юай и повесить на него ид
return (
<>
-
>
diff --git a/src/s2-homeworks/hw11/common/c8-SuperDoubleRange/SuperDoubleRange.tsx b/src/s2-homeworks/hw11/common/c8-SuperDoubleRange/SuperDoubleRange.tsx
deleted file mode 100644
index f39d87a..0000000
--- a/src/s2-homeworks/hw11/common/c8-SuperDoubleRange/SuperDoubleRange.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import React, { DetailedHTMLProps, InputHTMLAttributes } from 'react'
-import SuperRange from '../c7-SuperRange/SuperRange'
-
-type DefaultInputPropsType = DetailedHTMLProps<
- InputHTMLAttributes,
- HTMLInputElement
->
-
-type SuperDoubleRangePropsType = Omit & {
- onChangeRange?: (value: [number, number]) => void
- value?: [number, number]
- // min, max, step, disable, ...
-}
-
-const SuperDoubleRange: React.FC = ({
- onChangeRange,
- value,
- // min, max, step, disable, ...
- ...restProps
-}) => {
- // сделать самому, можно подключать библиотеки
- const [value1, value2] = value || [-1, -1]
-
- const change1 = (n: number) => {
- if (n <= value2) onChangeRange?.([n, value2])
- }
- const change2 = (n: number) => {
- if (value1 <= n) onChangeRange?.([value1, n])
- }
-
- // взять двойной ползунок из материал-юай и повесить на него ид
- return (
-
-
-
-
- )
-}
-
-export default SuperDoubleRange