@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.
Files changed (3) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +46 -33
  3. 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
- Компонент принимает массив шагов. В проп children принимает render-колбек, в который отдает сам компонент, методы управления и поля состояния.
13
- При вызове метода `goNext` вызывается валидация текущего шага. Функция валидации принимает индекс текущего шага и должна вернуть результат валидации в Promise<boolean>. При успешной валдиции компонент переходит на следующий шаг, а при ошибке остается на текущем.
14
- При вызове метода `goPrev` компонент переходит на предыдущий шаг.
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
- const steps = [
19
- { title: 'Step #1' },
20
- { title: 'Step #2' },
21
- { title: 'Step #3' },
22
- { title: 'Step #4' },
23
- ];
24
-
25
- // ...
26
-
27
- return (
28
- <Stepper steps={steps} validator={validatorFunction}>
29
- {({
30
- stepper, // JSX элемент компонента
31
- isCompleted, // состояние завершенности всей цепочки
32
- goNext, // функция перехода к след. шагу
33
- goPrev, // функция перехода к предыдущему шагу
34
- setValidator, // функция установки валидатора
35
- }) => (
36
- <>
37
- {stepper}
38
-
39
- <button onClick={() => goPrev()}>go back</button>
40
- <button onClick={() => goNext()}>go next</button>
41
- </>
42
- )}
43
- </Stepper>
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.38",
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.4",
40
- "@snack-uikit/loaders": "0.9.9",
41
- "@snack-uikit/truncate-string": "0.7.6",
42
- "@snack-uikit/typography": "0.8.11",
43
- "@snack-uikit/utils": "4.0.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": "6b39e180766635f8190da903bf560d1fbcbfaf52"
46
+ "gitHead": "84371bbf91915f650a852df849cd71d416c5b7b2"
47
47
  }