mimir-ui-kit 1.27.2 → 1.27.4
Sign up to get free protection for your applications and to get access to all the features.
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
|
)
|