@snack-uikit/stepper 0.8.38 → 0.8.39
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/CHANGELOG.md +10 -0
- package/README.md +46 -33
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## <small>0.8.39 (2026-01-19)</small>
|
|
7
|
+
|
|
8
|
+
* chore(FF-6693): migrate tests from TestCafe to Playwright ([f32aff8](https://github.com/cloud-ru-tech/snack-uikit/commit/f32aff8))
|
|
9
|
+
* chore(FF-6693): tune test configs ([d194f4d](https://github.com/cloud-ru-tech/snack-uikit/commit/d194f4d))
|
|
10
|
+
* docs(FF-7788): readme update ([e3142b8](https://github.com/cloud-ru-tech/snack-uikit/commit/e3142b8))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
6
16
|
## <small>0.8.38 (2025-11-28)</small>
|
|
7
17
|
|
|
8
18
|
### Only dependencies have been changed
|
package/README.md
CHANGED
|
@@ -1,47 +1,60 @@
|
|
|
1
1
|
# Stepper
|
|
2
2
|
|
|
3
|
-
Компонент отображения состояния пошагового процесса.
|
|
4
|
-
|
|
5
3
|
## Installation
|
|
6
4
|
`npm i @snack-uikit/stepper`
|
|
7
5
|
|
|
8
6
|
[Changelog](./CHANGELOG.md)
|
|
9
7
|
|
|
10
|
-
|
|
8
|
+
## Description
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
- Пакет `@snack-uikit/stepper` предоставляет компонент `Stepper` для отображения состояния пошагового процесса и управления навигацией между шагами.
|
|
11
|
+
- Компонент использует паттерн render prop: принимает функцию-колбек в пропе `children`, которая получает JSX-элемент степпера, методы управления навигацией (`goNext`, `goPrev`) и состояние процесса (`isCompleted`, `currentStepIndex`, `stepCount`).
|
|
12
|
+
- Поддерживает валидацию шагов через асинхронную функцию-валидатор (`validator`), которая вызывается при переходе на следующий шаг и должна вернуть `Promise<boolean>`: при успешной валидации происходит переход, при ошибке шаг остаётся в состоянии отклонения (`rejected`).
|
|
13
|
+
- Каждый шаг может находиться в одном из состояний: `completed` (завершён), `current` (текущий), `loading` (идёт валидация), `waiting` (ожидает выполнения) или `rejected` (отклонён).
|
|
14
|
+
- Позволяет навигироваться между шагами программно через методы API или кликом по шагам: можно перейти на следующий шаг, вернуться на предыдущий, а также кликнуть на завершённый шаг для возврата к нему.
|
|
15
|
+
- Поддерживает отслеживание завершённости всего процесса, сброс состояния валидации для текущего шага и динамическое переопределение валидатора через `setValidator`.
|
|
16
|
+
- Каждый шаг может содержать заголовок (`title`) и описание (`description`), которые отображаются в визуальном представлении степпера.
|
|
17
|
+
- Figma: [`Stepper`](https://www.figma.com/file/jtGxAPvFJOMir7V0eQFukN/Snack-UI-Kit-1.1.0?node-id=41%3A33355&mode=design).
|
|
15
18
|
|
|
19
|
+
## Example
|
|
16
20
|
|
|
17
21
|
```tsx
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
)
|
|
22
|
+
import { Stepper } from '@snack-uikit/stepper';
|
|
23
|
+
|
|
24
|
+
function Example() {
|
|
25
|
+
const steps = [
|
|
26
|
+
{ title: 'First step', description: 'First step long description two lines truncated' },
|
|
27
|
+
{ title: 'Second step', description: 'Second step long description two lines truncated' },
|
|
28
|
+
{ title: 'Third step', description: 'Third step long description two lines truncated' },
|
|
29
|
+
{ title: 'Fourth step', description: 'Fourth step long description two lines truncated' },
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const validator = (currentStepIndex: number, newStepIndex: number) => {
|
|
33
|
+
// Асинхронная валидация текущего шага
|
|
34
|
+
return new Promise<boolean>(resolve => {
|
|
35
|
+
setTimeout(() => {
|
|
36
|
+
resolve(true); // или false при ошибке валидации
|
|
37
|
+
}, 1000);
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<Stepper steps={steps} validator={validator}>
|
|
43
|
+
{({ stepper, isCompleted, goNext, goPrev, resetValidation, currentStepIndex }) => (
|
|
44
|
+
<>
|
|
45
|
+
{stepper}
|
|
46
|
+
<div>
|
|
47
|
+
<button onClick={() => goPrev()}>Назад</button>
|
|
48
|
+
<button onClick={() => goNext()}>Далее</button>
|
|
49
|
+
<button onClick={resetValidation}>Сбросить валидацию</button>
|
|
50
|
+
</div>
|
|
51
|
+
<div>Текущий шаг: {currentStepIndex + 1}</div>
|
|
52
|
+
<div>Процесс завершён: {isCompleted ? 'да' : 'нет'}</div>
|
|
53
|
+
</>
|
|
54
|
+
)}
|
|
55
|
+
</Stepper>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
45
58
|
```
|
|
46
59
|
[//]: DOCUMENTATION_SECTION_START
|
|
47
60
|
[//]: THIS_SECTION_IS_AUTOGENERATED_PLEASE_DONT_EDIT_IT
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"title": "Stepper",
|
|
7
|
-
"version": "0.8.
|
|
7
|
+
"version": "0.8.39",
|
|
8
8
|
"sideEffects": [
|
|
9
9
|
"*.css",
|
|
10
10
|
"*.woff",
|
|
@@ -36,12 +36,12 @@
|
|
|
36
36
|
"license": "Apache-2.0",
|
|
37
37
|
"scripts": {},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@snack-uikit/icons": "0.27.
|
|
40
|
-
"@snack-uikit/loaders": "0.9.
|
|
41
|
-
"@snack-uikit/truncate-string": "0.7.
|
|
42
|
-
"@snack-uikit/typography": "0.8.
|
|
43
|
-
"@snack-uikit/utils": "4.0.
|
|
39
|
+
"@snack-uikit/icons": "0.27.5",
|
|
40
|
+
"@snack-uikit/loaders": "0.9.10",
|
|
41
|
+
"@snack-uikit/truncate-string": "0.7.7",
|
|
42
|
+
"@snack-uikit/typography": "0.8.12",
|
|
43
|
+
"@snack-uikit/utils": "4.0.1",
|
|
44
44
|
"classnames": "2.5.1"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "84371bbf91915f650a852df849cd71d416c5b7b2"
|
|
47
47
|
}
|