mimir-ui-kit 1.27.2 → 1.27.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
@@ -1,62 +1,62 @@
|
|
1
|
-
# Mimir-ui
|
2
|
-
|
3
|
-
## Установка и запуск проекта
|
4
|
-
|
5
|
-
1. Установите зависимости:
|
6
|
-
```bash
|
7
|
-
npm install
|
8
|
-
```
|
9
|
-
2. Запуск storybook
|
10
|
-
```bash
|
11
|
-
npm run storybook
|
12
|
-
```
|
13
|
-
|
14
|
-
## Сборка проекта
|
15
|
-
|
16
|
-
1. Скрипт для сборки
|
17
|
-
```bash
|
18
|
-
npm run build
|
19
|
-
```
|
20
|
-
|
21
|
-
## Создание нового компонента
|
22
|
-
|
23
|
-
```bash
|
24
|
-
npm run create-component <ComponentName>
|
25
|
-
```
|
26
|
-
|
27
|
-
## Поднятие версии для публикации на npm
|
28
|
-
|
29
|
-
Для поднятия версии пакета перед публикацией на npm используем следующие скрипты:
|
30
|
-
|
31
|
-
1. `patch`: Этот скрипт увеличивает версию пакета на один патч (например, с версии 1.0.0 до 1.0.1). Он автоматически обновляет версию в файле package.json и создает коммит с обновленной версией.
|
32
|
-
|
33
|
-
```bash
|
34
|
-
npm version patch
|
35
|
-
```
|
36
|
-
|
37
|
-
2. `minor`: Этот скрипт увеличивает версию пакета на один минорный уровень (например, с версии 1.0.0 до 1.1.0). Также обновляет версию в package.json и создает коммит.
|
38
|
-
```bash
|
39
|
-
npm version minor
|
40
|
-
```
|
41
|
-
3. `major`: Этот скрипт увеличивает версию пакета на один мажорный уровень (например, с версии 1.0.0 до 2.0.0). Он также обновляет версию в package.json и создает коммит.
|
42
|
-
```bash
|
43
|
-
npm version major
|
44
|
-
```
|
45
|
-
|
46
|
-
## Публикация на npm
|
47
|
-
|
48
|
-
1. Скрипт для публикации на npm:
|
49
|
-
```bash
|
50
|
-
npm publish
|
51
|
-
```
|
52
|
-
|
53
|
-
## Ручная Генерация иконок
|
54
|
-
|
55
|
-
1. Экспортируем с фигмы иконку.
|
56
|
-
2. Добавляем ее в папку svgs.
|
57
|
-
3. Запускаем скрипт:
|
58
|
-
```bash
|
59
|
-
npm run icons
|
60
|
-
```
|
61
|
-
4. Смотрим в папку `icons/components`
|
62
|
-
5. Готово.
|
1
|
+
# Mimir-ui
|
2
|
+
|
3
|
+
## Установка и запуск проекта
|
4
|
+
|
5
|
+
1. Установите зависимости:
|
6
|
+
```bash
|
7
|
+
npm install
|
8
|
+
```
|
9
|
+
2. Запуск storybook
|
10
|
+
```bash
|
11
|
+
npm run storybook
|
12
|
+
```
|
13
|
+
|
14
|
+
## Сборка проекта
|
15
|
+
|
16
|
+
1. Скрипт для сборки
|
17
|
+
```bash
|
18
|
+
npm run build
|
19
|
+
```
|
20
|
+
|
21
|
+
## Создание нового компонента
|
22
|
+
|
23
|
+
```bash
|
24
|
+
npm run create-component <ComponentName>
|
25
|
+
```
|
26
|
+
|
27
|
+
## Поднятие версии для публикации на npm
|
28
|
+
|
29
|
+
Для поднятия версии пакета перед публикацией на npm используем следующие скрипты:
|
30
|
+
|
31
|
+
1. `patch`: Этот скрипт увеличивает версию пакета на один патч (например, с версии 1.0.0 до 1.0.1). Он автоматически обновляет версию в файле package.json и создает коммит с обновленной версией.
|
32
|
+
|
33
|
+
```bash
|
34
|
+
npm version patch
|
35
|
+
```
|
36
|
+
|
37
|
+
2. `minor`: Этот скрипт увеличивает версию пакета на один минорный уровень (например, с версии 1.0.0 до 1.1.0). Также обновляет версию в package.json и создает коммит.
|
38
|
+
```bash
|
39
|
+
npm version minor
|
40
|
+
```
|
41
|
+
3. `major`: Этот скрипт увеличивает версию пакета на один мажорный уровень (например, с версии 1.0.0 до 2.0.0). Он также обновляет версию в package.json и создает коммит.
|
42
|
+
```bash
|
43
|
+
npm version major
|
44
|
+
```
|
45
|
+
|
46
|
+
## Публикация на npm
|
47
|
+
|
48
|
+
1. Скрипт для публикации на npm:
|
49
|
+
```bash
|
50
|
+
npm publish
|
51
|
+
```
|
52
|
+
|
53
|
+
## Ручная Генерация иконок
|
54
|
+
|
55
|
+
1. Экспортируем с фигмы иконку.
|
56
|
+
2. Добавляем ее в папку svgs.
|
57
|
+
3. Запускаем скрипт:
|
58
|
+
```bash
|
59
|
+
npm run icons
|
60
|
+
```
|
61
|
+
4. Смотрим в папку `icons/components`
|
62
|
+
5. Готово.
|
@@ -54,5 +54,21 @@ export type TProps = TCommonStepsProps & Omit<ComponentProps<'div'>, 'onClick'>
|
|
54
54
|
width?: number;
|
55
55
|
height?: number;
|
56
56
|
};
|
57
|
+
/**
|
58
|
+
* Заливать ли элементы цветом той зоны на которую сейчас наведен курсор
|
59
|
+
*/
|
60
|
+
fillByActualZone?: boolean;
|
61
|
+
/**
|
62
|
+
* Коллбек для события наведения на шаг курсором
|
63
|
+
*/
|
64
|
+
onStepMouseEnter?: (idx: number) => void;
|
65
|
+
/**
|
66
|
+
* Коллбэк для события покидания шага курсором
|
67
|
+
*/
|
68
|
+
onStepMouseLeave?: () => void;
|
69
|
+
/**
|
70
|
+
* Передача текущего цвета в родительский компонент
|
71
|
+
*/
|
72
|
+
setParentColor?: (color: string) => void;
|
57
73
|
};
|
58
74
|
export declare const Steps: import('react').ForwardRefExoticComponent<Omit<TProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
|
@@ -40,6 +40,10 @@ const Steps = forwardRef(
|
|
40
40
|
disabled = false,
|
41
41
|
zones = [{ color: "#ff0000", to: quantity }],
|
42
42
|
unselectedColor = "#ffffff",
|
43
|
+
fillByActualZone,
|
44
|
+
onStepMouseEnter,
|
45
|
+
onStepMouseLeave,
|
46
|
+
setParentColor,
|
43
47
|
classNameIconStep,
|
44
48
|
...otherProps
|
45
49
|
} = props;
|
@@ -47,9 +51,18 @@ const Steps = forwardRef(
|
|
47
51
|
const [step2, setStep] = useState(current);
|
48
52
|
const [hoveredStep, setHoveredStep] = useState(null);
|
49
53
|
const stepWasChangedRef = useRef(null);
|
54
|
+
const [currentColor, setCurrentColor] = useState(null);
|
50
55
|
useEffect(() => {
|
51
56
|
setStep(current);
|
52
57
|
}, [current]);
|
58
|
+
useEffect(() => {
|
59
|
+
if (fillByActualZone) {
|
60
|
+
const zone = zones.find((zone2) => zone2.to >= (step2 + 1 || 0));
|
61
|
+
if (zone) {
|
62
|
+
setCurrentColor(zone.color);
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}, []);
|
53
66
|
const handleClick = (idx) => {
|
54
67
|
const clickedStep = idx + DIFF_BETWEEN_STEP_AND_INDEX;
|
55
68
|
stepWasChangedRef.current = true;
|
@@ -64,9 +77,25 @@ const Steps = forwardRef(
|
|
64
77
|
const handleMouseEnter = (evt) => {
|
65
78
|
const hoveredIdx = Number(evt.currentTarget.id.split(ID_SEPARATOR)[1]);
|
66
79
|
setHoveredStep(hoveredIdx);
|
80
|
+
onStepMouseEnter && onStepMouseEnter(hoveredIdx);
|
81
|
+
const zone = zones.find((zone2) => zone2.to >= (hoveredIdx + 1 || 0));
|
82
|
+
if (zone) {
|
83
|
+
setParentColor && setParentColor(zone.color);
|
84
|
+
if (fillByActualZone) {
|
85
|
+
setCurrentColor(zone.color);
|
86
|
+
}
|
87
|
+
}
|
67
88
|
};
|
68
89
|
const handleMouseLeave = () => {
|
69
90
|
setHoveredStep(null);
|
91
|
+
onStepMouseLeave && onStepMouseLeave();
|
92
|
+
const zone = zones.find((zone2) => zone2.to >= (step2 || 0));
|
93
|
+
if (zone) {
|
94
|
+
setParentColor && setParentColor(zone.color);
|
95
|
+
if (fillByActualZone) {
|
96
|
+
setCurrentColor(zone.color);
|
97
|
+
}
|
98
|
+
}
|
70
99
|
};
|
71
100
|
const buttons = Array.from({ length: quantity }, (_, idx) => {
|
72
101
|
var _a, _b;
|
@@ -74,14 +103,22 @@ const Steps = forwardRef(
|
|
74
103
|
while (currentZone < zones.length && zones[currentZone].to <= idx) {
|
75
104
|
currentZone++;
|
76
105
|
}
|
77
|
-
|
106
|
+
let color;
|
107
|
+
if (fillByActualZone && hoveredStep !== null) {
|
108
|
+
color = idx <= hoveredStep ? currentColor : unselectedColor;
|
109
|
+
} else {
|
110
|
+
if (fillByActualZone) {
|
111
|
+
color = step2 > idx ? currentColor : unselectedColor;
|
112
|
+
} else {
|
113
|
+
color = hoveredStep !== null && idx <= hoveredStep ? (_a = zones[currentZone]) == null ? void 0 : _a.color : step2 > idx && hoveredStep === null ? (_b = zones[currentZone]) == null ? void 0 : _b.color : unselectedColor;
|
114
|
+
}
|
115
|
+
}
|
78
116
|
return /* @__PURE__ */ jsx(
|
79
117
|
"button",
|
80
118
|
{
|
81
|
-
type: "button",
|
82
119
|
style: {
|
83
|
-
backgroundColor: resizable2 ? color : void 0,
|
84
|
-
color,
|
120
|
+
backgroundColor: resizable2 ? color !== null ? color : void 0 : void 0,
|
121
|
+
color: color !== null ? color : void 0,
|
85
122
|
height: customSize == null ? void 0 : customSize.height
|
86
123
|
},
|
87
124
|
id: `${idPrefix}${ID_SEPARATOR}${idx}`,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { TCommonVoteProps } from './types';
|
2
|
-
import { TStepsZone } from '../Steps
|
2
|
+
import { TStepsZone } from '../Steps';
|
3
3
|
|
4
4
|
export type TProps = TCommonVoteProps & {
|
5
5
|
/**
|
@@ -76,6 +76,10 @@ export type TProps = TCommonVoteProps & {
|
|
76
76
|
width?: number;
|
77
77
|
height?: number;
|
78
78
|
};
|
79
|
+
/**
|
80
|
+
* Заливать ли элементы цветом той зоны на которую сейчас наведен курсор
|
81
|
+
*/
|
82
|
+
fillByActualZone?: boolean;
|
79
83
|
};
|
80
84
|
export declare const Vote: import('react').ForwardRefExoticComponent<TCommonVoteProps & {
|
81
85
|
/**
|
@@ -152,4 +156,8 @@ export declare const Vote: import('react').ForwardRefExoticComponent<TCommonVote
|
|
152
156
|
width?: number;
|
153
157
|
height?: number;
|
154
158
|
};
|
159
|
+
/**
|
160
|
+
* Заливать ли элементы цветом той зоны на которую сейчас наведен курсор
|
161
|
+
*/
|
162
|
+
fillByActualZone?: boolean;
|
155
163
|
} & import('react').RefAttributes<HTMLDivElement>>;
|
@@ -13,7 +13,6 @@ const cls = {
|
|
13
13
|
score
|
14
14
|
};
|
15
15
|
const Vote = forwardRef((props, ref) => {
|
16
|
-
var _a;
|
17
16
|
const {
|
18
17
|
rootClassName,
|
19
18
|
titleClassName,
|
@@ -35,19 +34,44 @@ const Vote = forwardRef((props, ref) => {
|
|
35
34
|
unselected: "#000000",
|
36
35
|
selected: "#ffffff"
|
37
36
|
},
|
38
|
-
classNameIconStep
|
37
|
+
classNameIconStep,
|
38
|
+
fillByActualZone
|
39
39
|
} = props;
|
40
40
|
const [score2, setScore] = useState(current);
|
41
|
+
const [hoveredScore, setHoveredScore] = useState(null);
|
42
|
+
const [currentColor, setCurrentColor] = useState(unselectedColor);
|
41
43
|
const isZeroStep = score2 === ZERO_STEP;
|
42
44
|
useEffect(() => {
|
43
45
|
setScore(current);
|
44
46
|
}, [current]);
|
47
|
+
useEffect(() => {
|
48
|
+
var _a;
|
49
|
+
const newColor = isZeroStep ? unselectedColor : ((_a = zones == null ? void 0 : zones.find((zone) => score2 <= zone.to)) == null ? void 0 : _a.color) ?? unselectedColor;
|
50
|
+
setCurrentColor(newColor);
|
51
|
+
}, [score2, zones, unselectedColor, isZeroStep]);
|
45
52
|
const handleStepsClick = (step) => {
|
46
53
|
setScore(step);
|
47
54
|
onClick && onClick(step);
|
48
55
|
};
|
49
|
-
const
|
56
|
+
const handleHoverStepEnter = (step) => {
|
57
|
+
setHoveredScore(step + 1);
|
58
|
+
};
|
59
|
+
const handleHoverStepLeave = () => {
|
60
|
+
setHoveredScore(null);
|
61
|
+
};
|
50
62
|
const maxContainerWidth = resizable ? quantity * ((customSize == null ? void 0 : customSize.width) ?? StepSize[size].width) : void 0;
|
63
|
+
let showingScore;
|
64
|
+
let showingScoreBackground;
|
65
|
+
let showingScoreColor;
|
66
|
+
if (hoveredScore) {
|
67
|
+
showingScore = hoveredScore;
|
68
|
+
showingScoreBackground = currentColor;
|
69
|
+
showingScoreColor = scoreTextColor.selected;
|
70
|
+
} else {
|
71
|
+
showingScore = isZeroStep ? ZERO_VALUE : score2;
|
72
|
+
showingScoreBackground = isZeroStep ? unselectedColor : currentColor;
|
73
|
+
showingScoreColor = isZeroStep ? scoreTextColor.unselected : scoreTextColor.selected;
|
74
|
+
}
|
51
75
|
return /* @__PURE__ */ jsxs("div", { className: classNames(cls.container, rootClassName), ref, children: [
|
52
76
|
!withoutTitle && /* @__PURE__ */ jsx("p", { className: classNames(cls.title, titleClassName), children: title2 }),
|
53
77
|
/* @__PURE__ */ jsx(
|
@@ -55,10 +79,10 @@ const Vote = forwardRef((props, ref) => {
|
|
55
79
|
{
|
56
80
|
className: classNames(cls.score, scoreClassName),
|
57
81
|
style: {
|
58
|
-
backgroundColor,
|
59
|
-
color:
|
82
|
+
backgroundColor: showingScoreBackground,
|
83
|
+
color: showingScoreColor
|
60
84
|
},
|
61
|
-
children:
|
85
|
+
children: showingScore
|
62
86
|
}
|
63
87
|
),
|
64
88
|
/* @__PURE__ */ jsx(
|
@@ -77,8 +101,12 @@ const Vote = forwardRef((props, ref) => {
|
|
77
101
|
resizable,
|
78
102
|
disabled,
|
79
103
|
onClick: handleStepsClick,
|
104
|
+
onStepMouseEnter: handleHoverStepEnter,
|
105
|
+
onStepMouseLeave: handleHoverStepLeave,
|
106
|
+
setParentColor: setCurrentColor,
|
80
107
|
zones,
|
81
108
|
unselectedColor,
|
109
|
+
fillByActualZone,
|
82
110
|
classNameIconStep
|
83
111
|
}
|
84
112
|
)
|