@alfalab/core-components-steps 1.1.0
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/Component.d.ts +89 -0
- package/Component.js +59 -0
- package/components/step/Component.d.ts +70 -0
- package/components/step/Component.js +126 -0
- package/components/step/index.css +151 -0
- package/components/step/index.d.ts +1 -0
- package/components/step/index.js +17 -0
- package/components/step-indicator/Component.d.ts +6 -0
- package/components/step-indicator/Component.js +22 -0
- package/components/step-indicator/index.css +4 -0
- package/components/step-indicator/index.d.ts +1 -0
- package/components/step-indicator/index.js +12 -0
- package/cssm/Component.d.ts +89 -0
- package/cssm/Component.js +60 -0
- package/cssm/components/step/Component.d.ts +70 -0
- package/cssm/components/step/Component.js +126 -0
- package/cssm/components/step/index.d.ts +1 -0
- package/cssm/components/step/index.js +19 -0
- package/cssm/components/step/index.module.css +150 -0
- package/cssm/components/step-indicator/Component.d.ts +6 -0
- package/cssm/components/step-indicator/Component.js +21 -0
- package/cssm/components/step-indicator/index.d.ts +1 -0
- package/cssm/components/step-indicator/index.js +13 -0
- package/cssm/components/step-indicator/index.module.css +3 -0
- package/cssm/index.d.ts +1 -0
- package/cssm/index.js +21 -0
- package/cssm/index.module.css +17 -0
- package/esm/Component.d.ts +89 -0
- package/esm/Component.js +50 -0
- package/esm/components/step/Component.d.ts +70 -0
- package/esm/components/step/Component.js +117 -0
- package/esm/components/step/index.css +151 -0
- package/esm/components/step/index.d.ts +1 -0
- package/esm/components/step/index.js +9 -0
- package/esm/components/step-indicator/Component.d.ts +6 -0
- package/esm/components/step-indicator/Component.js +13 -0
- package/esm/components/step-indicator/index.css +4 -0
- package/esm/components/step-indicator/index.d.ts +1 -0
- package/esm/components/step-indicator/index.js +4 -0
- package/esm/index.css +18 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.js +10 -0
- package/index.css +18 -0
- package/index.d.ts +1 -0
- package/index.js +18 -0
- package/modern/Component.d.ts +89 -0
- package/modern/Component.js +48 -0
- package/modern/components/step/Component.d.ts +70 -0
- package/modern/components/step/Component.js +85 -0
- package/modern/components/step/index.css +151 -0
- package/modern/components/step/index.d.ts +1 -0
- package/modern/components/step/index.js +9 -0
- package/modern/components/step-indicator/Component.d.ts +6 -0
- package/modern/components/step-indicator/Component.js +12 -0
- package/modern/components/step-indicator/index.css +4 -0
- package/modern/components/step-indicator/index.d.ts +1 -0
- package/modern/components/step-indicator/index.js +4 -0
- package/modern/index.css +18 -0
- package/modern/index.d.ts +1 -0
- package/modern/index.js +10 -0
- package/package.json +25 -0
- package/send-stats.js +82 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var cn = require('classnames');
|
|
7
|
+
var components_step_Component = require('./components/step/Component.js');
|
|
8
|
+
require('@alfalab/hooks');
|
|
9
|
+
require('@alfalab/icons-glyph/CheckmarkCircleMIcon');
|
|
10
|
+
require('@alfalab/icons-glyph/ExclamationCircleMIcon');
|
|
11
|
+
require('@alfalab/icons-glyph/ClockMIcon');
|
|
12
|
+
require('@alfalab/core-components-badge/cssm');
|
|
13
|
+
require('./components/step-indicator/index.module.css');
|
|
14
|
+
require('./components/step-indicator/Component.js');
|
|
15
|
+
require('./components/step/index.module.css');
|
|
16
|
+
var styles = require('./index.module.css');
|
|
17
|
+
|
|
18
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
19
|
+
|
|
20
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
21
|
+
var cn__default = /*#__PURE__*/_interopDefaultLegacy(cn);
|
|
22
|
+
var styles__default = /*#__PURE__*/_interopDefaultLegacy(styles);
|
|
23
|
+
|
|
24
|
+
var Steps = function (_a) {
|
|
25
|
+
var _b;
|
|
26
|
+
var className = _a.className, children = _a.children, _c = _a.defaultActiveStep, defaultActiveStep = _c === void 0 ? 1 : _c, activeStepProp = _a.activeStep, _d = _a.isMarkCompletedSteps, isMarkCompletedSteps = _d === void 0 ? true : _d, _e = _a.isVerticalAlign, isVerticalAlign = _e === void 0 ? false : _e, _f = _a.ordered, ordered = _f === void 0 ? true : _f, _g = _a.interactive, interactive = _g === void 0 ? true : _g, checkIsStepDisabled = _a.checkIsStepDisabled, checkIsStepError = _a.checkIsStepError, checkIsStepWarning = _a.checkIsStepWarning, checkIsStepWaiting = _a.checkIsStepWaiting, checkIsStepPositive = _a.checkIsStepPositive, checkIsStepCustom = _a.checkIsStepCustom, onChange = _a.onChange, dataTestId = _a.dataTestId;
|
|
27
|
+
var _h = React.useState(activeStepProp || defaultActiveStep), activeStep = _h[0], setActiveStep = _h[1];
|
|
28
|
+
var stepsLength = React__default['default'].Children.count(children);
|
|
29
|
+
React.useEffect(function () {
|
|
30
|
+
if (activeStepProp) {
|
|
31
|
+
setActiveStep(activeStepProp);
|
|
32
|
+
}
|
|
33
|
+
}, [activeStepProp]);
|
|
34
|
+
var handleStepClick = function (stepNumber) {
|
|
35
|
+
setActiveStep(stepNumber);
|
|
36
|
+
if (onChange) {
|
|
37
|
+
onChange(stepNumber);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
if (!stepsLength)
|
|
41
|
+
return null;
|
|
42
|
+
return (React__default['default'].createElement("div", { className: cn__default['default'](className, styles__default['default'].component, (_b = {},
|
|
43
|
+
_b[styles__default['default'].vertical] = isVerticalAlign,
|
|
44
|
+
_b)), "data-test-id": dataTestId }, React__default['default'].Children.map(children, function (step, index) {
|
|
45
|
+
var stepNumber = index + 1;
|
|
46
|
+
var isSelected = stepNumber === activeStep;
|
|
47
|
+
var isStepCompleted = isMarkCompletedSteps && stepNumber < activeStep;
|
|
48
|
+
var disabled = checkIsStepDisabled ? checkIsStepDisabled(stepNumber) : false;
|
|
49
|
+
var isPositive = checkIsStepPositive ? checkIsStepPositive(stepNumber) : false;
|
|
50
|
+
var isError = checkIsStepError ? checkIsStepError(stepNumber) : false;
|
|
51
|
+
var isWarning = checkIsStepWarning ? checkIsStepWarning(stepNumber) : false;
|
|
52
|
+
var isWaiting = checkIsStepWaiting ? checkIsStepWaiting(stepNumber) : false;
|
|
53
|
+
var customStepIndicator = checkIsStepCustom && checkIsStepCustom(stepNumber);
|
|
54
|
+
var isNotLastStep = stepsLength !== stepNumber;
|
|
55
|
+
var isInteractive = !disabled && interactive;
|
|
56
|
+
return (React__default['default'].createElement(components_step_Component.Step, { stepNumber: stepNumber, isSelected: isSelected, isStepCompleted: isStepCompleted, disabled: disabled, isPositive: isPositive, isError: isError, isWarning: isWarning, isWaiting: isWaiting, customStepIndicator: customStepIndicator, onClick: handleStepClick, ordered: ordered, interactive: isInteractive, isVerticalAlign: isVerticalAlign, isNotLastStep: isNotLastStep, key: stepNumber }, step));
|
|
57
|
+
})));
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
exports.Steps = Steps;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
import { StepIndicatorProps } from "../step-indicator/index";
|
|
5
|
+
type StepProps = {
|
|
6
|
+
/**
|
|
7
|
+
* Название шага
|
|
8
|
+
*/
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
/**
|
|
11
|
+
* Номер шага
|
|
12
|
+
*/
|
|
13
|
+
stepNumber: number;
|
|
14
|
+
/**
|
|
15
|
+
* Маркер того, что текущий шаг выбран
|
|
16
|
+
*/
|
|
17
|
+
isSelected: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Маркер того, что текущий шаг доступен для клика
|
|
20
|
+
*/
|
|
21
|
+
disabled: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Управление отображением номера шага
|
|
24
|
+
*/
|
|
25
|
+
ordered?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Включение / отключение интерактивности шагов
|
|
28
|
+
*/
|
|
29
|
+
interactive?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Маркер того, что текущий шаг находится в состоянии "Positive"
|
|
32
|
+
*/
|
|
33
|
+
isPositive: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Маркер того, что текущий шаг находится в состоянии "Error"
|
|
36
|
+
*/
|
|
37
|
+
isError: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Маркер того, что текущий шаг находится в состоянии "Warning"
|
|
40
|
+
*/
|
|
41
|
+
isWarning: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Маркер того, что текущий шаг находится в состоянии "Waiting"
|
|
44
|
+
*/
|
|
45
|
+
isWaiting: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Маркер того, что текущий шаг нужно пометить как завершенный
|
|
48
|
+
*/
|
|
49
|
+
isStepCompleted: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Свойства кастомного индикатора текущего шага
|
|
52
|
+
*/
|
|
53
|
+
customStepIndicator?: StepIndicatorProps;
|
|
54
|
+
/**
|
|
55
|
+
* Управление ориентацией компонента
|
|
56
|
+
* @default false
|
|
57
|
+
*/
|
|
58
|
+
isVerticalAlign?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Указывает, является ли текущий шаг последним в списке
|
|
61
|
+
*/
|
|
62
|
+
isNotLastStep?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Обработчик нажатия на текущей шаг
|
|
65
|
+
* @param stepNumber - номер шага
|
|
66
|
+
*/
|
|
67
|
+
onClick: (stepNumber: number) => void;
|
|
68
|
+
};
|
|
69
|
+
declare const Step: React.FC<StepProps>;
|
|
70
|
+
export { StepProps, Step };
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var cn = require('classnames');
|
|
7
|
+
var hooks = require('@alfalab/hooks');
|
|
8
|
+
var CheckmarkCircleMIcon = require('@alfalab/icons-glyph/CheckmarkCircleMIcon');
|
|
9
|
+
var ExclamationCircleMIcon = require('@alfalab/icons-glyph/ExclamationCircleMIcon');
|
|
10
|
+
var ClockMIcon = require('@alfalab/icons-glyph/ClockMIcon');
|
|
11
|
+
require('@alfalab/core-components-badge/cssm');
|
|
12
|
+
require('../step-indicator/index.module.css');
|
|
13
|
+
var components_stepIndicator_Component = require('../step-indicator/Component.js');
|
|
14
|
+
var styles = require('./index.module.css');
|
|
15
|
+
|
|
16
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
17
|
+
|
|
18
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
19
|
+
var cn__default = /*#__PURE__*/_interopDefaultLegacy(cn);
|
|
20
|
+
var styles__default = /*#__PURE__*/_interopDefaultLegacy(styles);
|
|
21
|
+
|
|
22
|
+
/*! *****************************************************************************
|
|
23
|
+
Copyright (c) Microsoft Corporation.
|
|
24
|
+
|
|
25
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
26
|
+
purpose with or without fee is hereby granted.
|
|
27
|
+
|
|
28
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
29
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
30
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
31
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
32
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
33
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
34
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
35
|
+
***************************************************************************** */
|
|
36
|
+
var __assign = function () {
|
|
37
|
+
__assign = Object.assign || function __assign(t) {
|
|
38
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
39
|
+
s = arguments[i];
|
|
40
|
+
for (var p in s)
|
|
41
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
42
|
+
t[p] = s[p];
|
|
43
|
+
}
|
|
44
|
+
return t;
|
|
45
|
+
};
|
|
46
|
+
return __assign.apply(this, arguments);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
var Step = function (_a) {
|
|
50
|
+
var _b, _c, _d, _e;
|
|
51
|
+
var children = _a.children, stepNumber = _a.stepNumber, isSelected = _a.isSelected, disabled = _a.disabled, ordered = _a.ordered, isPositive = _a.isPositive, isError = _a.isError, isWarning = _a.isWarning, isWaiting = _a.isWaiting, customStepIndicator = _a.customStepIndicator, isStepCompleted = _a.isStepCompleted, onClick = _a.onClick, interactive = _a.interactive, isVerticalAlign = _a.isVerticalAlign, isNotLastStep = _a.isNotLastStep;
|
|
52
|
+
var stepRef = React.useRef(null);
|
|
53
|
+
var focused = hooks.useFocus(stepRef, 'keyboard')[0];
|
|
54
|
+
var handleButtonClick = function () {
|
|
55
|
+
if (!disabled && onClick) {
|
|
56
|
+
onClick(stepNumber);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
var handleTextClick = function (e) {
|
|
60
|
+
if (!interactive) {
|
|
61
|
+
e.stopPropagation();
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
var handleKeyDown = function (event) {
|
|
65
|
+
if (event.key === 'Enter') {
|
|
66
|
+
handleButtonClick();
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
var getStepIndicator = function () {
|
|
70
|
+
if (customStepIndicator) {
|
|
71
|
+
return React__default['default'].createElement(components_stepIndicator_Component.StepIndicator, __assign({}, customStepIndicator));
|
|
72
|
+
}
|
|
73
|
+
if (isError) {
|
|
74
|
+
return React__default['default'].createElement(components_stepIndicator_Component.StepIndicator, { iconColor: 'negative', content: React__default['default'].createElement(ExclamationCircleMIcon.ExclamationCircleMIcon, null) });
|
|
75
|
+
}
|
|
76
|
+
if (isWarning) {
|
|
77
|
+
return React__default['default'].createElement(components_stepIndicator_Component.StepIndicator, { iconColor: 'attention', content: React__default['default'].createElement(ExclamationCircleMIcon.ExclamationCircleMIcon, null) });
|
|
78
|
+
}
|
|
79
|
+
if (isWaiting) {
|
|
80
|
+
return React__default['default'].createElement(components_stepIndicator_Component.StepIndicator, { iconColor: 'secondary', content: React__default['default'].createElement(ClockMIcon.ClockMIcon, null) });
|
|
81
|
+
}
|
|
82
|
+
if (isPositive) {
|
|
83
|
+
return React__default['default'].createElement(components_stepIndicator_Component.StepIndicator, { iconColor: 'positive', content: React__default['default'].createElement(CheckmarkCircleMIcon.CheckmarkCircleMIcon, null) });
|
|
84
|
+
}
|
|
85
|
+
if (isStepCompleted) {
|
|
86
|
+
return React__default['default'].createElement(components_stepIndicator_Component.StepIndicator, { iconColor: 'positive', content: React__default['default'].createElement(CheckmarkCircleMIcon.CheckmarkCircleMIcon, null), className: styles__default['default'].completedIndicator });
|
|
87
|
+
}
|
|
88
|
+
if (!ordered) {
|
|
89
|
+
return (React__default['default'].createElement("div", { className: styles__default['default'].checkbox },
|
|
90
|
+
React__default['default'].createElement("span", { className: styles__default['default'].dot })));
|
|
91
|
+
}
|
|
92
|
+
return stepNumber;
|
|
93
|
+
};
|
|
94
|
+
var renderDash = function () {
|
|
95
|
+
var _a;
|
|
96
|
+
return (React__default['default'].createElement("div", { className: cn__default['default'](styles__default['default'].dash, (_a = {},
|
|
97
|
+
_a[styles__default['default'].vertical] = isVerticalAlign,
|
|
98
|
+
_a[styles__default['default'].completed] = isStepCompleted,
|
|
99
|
+
_a)) }));
|
|
100
|
+
};
|
|
101
|
+
return (React__default['default'].createElement("div", { role: 'button', tabIndex: 0, ref: stepRef, className: cn__default['default'](styles__default['default'].step, (_b = {},
|
|
102
|
+
_b[styles__default['default'].completed] = isStepCompleted,
|
|
103
|
+
_b[styles__default['default'].error] = isError,
|
|
104
|
+
_b[styles__default['default'].selected] = isSelected,
|
|
105
|
+
_b[styles__default['default'].disabled] = disabled,
|
|
106
|
+
_b[styles__default['default'].focused] = focused,
|
|
107
|
+
_b[styles__default['default'].vertical] = isVerticalAlign,
|
|
108
|
+
_b[styles__default['default'].interactive] = interactive,
|
|
109
|
+
_b)), onClick: handleButtonClick, onKeyDown: handleKeyDown },
|
|
110
|
+
React__default['default'].createElement("div", { className: cn__default['default'](styles__default['default'].indicator, (_c = {},
|
|
111
|
+
_c[styles__default['default'].vertical] = isVerticalAlign,
|
|
112
|
+
_c[styles__default['default'].interactive] = interactive,
|
|
113
|
+
_c)) },
|
|
114
|
+
React__default['default'].createElement("div", { className: cn__default['default'](styles__default['default'].option, (_d = {},
|
|
115
|
+
_d[styles__default['default'].unordered] = !ordered,
|
|
116
|
+
_d[styles__default['default'].vertical] = isVerticalAlign,
|
|
117
|
+
_d[styles__default['default'].error] = isError,
|
|
118
|
+
_d)) }, getStepIndicator()),
|
|
119
|
+
isNotLastStep && isVerticalAlign && renderDash()),
|
|
120
|
+
React__default['default'].createElement("div", { className: cn__default['default'](styles__default['default'].text, (_e = {},
|
|
121
|
+
_e[styles__default['default'].interactive] = interactive,
|
|
122
|
+
_e)), onClick: handleTextClick }, children),
|
|
123
|
+
isNotLastStep && !isVerticalAlign && renderDash()));
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
exports.Step = Step;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Component";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('react');
|
|
6
|
+
require('classnames');
|
|
7
|
+
var components_step_Component = require('./Component.js');
|
|
8
|
+
require('@alfalab/hooks');
|
|
9
|
+
require('@alfalab/icons-glyph/CheckmarkCircleMIcon');
|
|
10
|
+
require('@alfalab/icons-glyph/ExclamationCircleMIcon');
|
|
11
|
+
require('@alfalab/icons-glyph/ClockMIcon');
|
|
12
|
+
require('@alfalab/core-components-badge/cssm');
|
|
13
|
+
require('../step-indicator/index.module.css');
|
|
14
|
+
require('../step-indicator/Component.js');
|
|
15
|
+
require('./index.module.css');
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
exports.Step = components_step_Component.Step;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--color-light-border-link: #007aff;
|
|
3
|
+
--color-light-border-primary: #dbdee1;
|
|
4
|
+
--color-light-graphic-positive: #2fc26e;
|
|
5
|
+
--color-light-graphic-primary: #0b1f35;
|
|
6
|
+
--color-light-graphic-primary-inverted: #fff;
|
|
7
|
+
--color-light-graphic-quaternary: #dbdee1;
|
|
8
|
+
--color-light-text-primary: #0b1f35;
|
|
9
|
+
--color-light-bg-primary-inverted-alpha-7: rgba(11, 31, 53, 0.07);
|
|
10
|
+
--color-light-bg-primary-inverted-alpha-15: rgba(11, 31, 53, 0.15);
|
|
11
|
+
}
|
|
12
|
+
:root {
|
|
13
|
+
|
|
14
|
+
/* Hard */
|
|
15
|
+
|
|
16
|
+
/* Up */
|
|
17
|
+
|
|
18
|
+
/* Hard up */
|
|
19
|
+
}
|
|
20
|
+
:root {
|
|
21
|
+
--gap-3xs: 2px;
|
|
22
|
+
--gap-2xs: 4px;
|
|
23
|
+
--gap-xs: 8px;
|
|
24
|
+
}
|
|
25
|
+
:root {
|
|
26
|
+
--focus-color: var(--color-light-border-link);
|
|
27
|
+
}
|
|
28
|
+
:root {
|
|
29
|
+
--steps-option-svg-color: var(--color-light-graphic-positive);
|
|
30
|
+
--steps-dash-border: 2px solid var(--color-light-graphic-positive);
|
|
31
|
+
}
|
|
32
|
+
.step {
|
|
33
|
+
display: flex;
|
|
34
|
+
outline: none
|
|
35
|
+
}
|
|
36
|
+
.step:not(.vertical) {
|
|
37
|
+
align-items: center;
|
|
38
|
+
}
|
|
39
|
+
.step.interactive:not(.disabled):hover {
|
|
40
|
+
cursor: pointer;
|
|
41
|
+
}
|
|
42
|
+
.step.disabled:hover .text {
|
|
43
|
+
background: unset;
|
|
44
|
+
}
|
|
45
|
+
.step.disabled .indicator {
|
|
46
|
+
cursor: unset;
|
|
47
|
+
}
|
|
48
|
+
.indicator {
|
|
49
|
+
cursor: pointer;
|
|
50
|
+
display: flex;
|
|
51
|
+
align-items: center;
|
|
52
|
+
margin-right: var(--gap-2xs)
|
|
53
|
+
}
|
|
54
|
+
.indicator.vertical {
|
|
55
|
+
flex-direction: column;
|
|
56
|
+
margin-right: var(--gap-xs);
|
|
57
|
+
}
|
|
58
|
+
.option {
|
|
59
|
+
font-size: 14px;
|
|
60
|
+
line-height: 20px;
|
|
61
|
+
font-weight: 700;
|
|
62
|
+
|
|
63
|
+
display: flex;
|
|
64
|
+
align-items: center;
|
|
65
|
+
justify-content: center;
|
|
66
|
+
color: var(--color-light-graphic-primary);
|
|
67
|
+
background: var(--color-light-graphic-quaternary);
|
|
68
|
+
min-width: 24px;
|
|
69
|
+
height: 24px;
|
|
70
|
+
border-radius: 50%
|
|
71
|
+
}
|
|
72
|
+
.option.vertical {
|
|
73
|
+
margin-top: var(--gap-xs);
|
|
74
|
+
}
|
|
75
|
+
.dash {
|
|
76
|
+
flex: 1 1 auto;
|
|
77
|
+
min-width: 24px;
|
|
78
|
+
border-top: 2px solid var(--color-light-border-primary);
|
|
79
|
+
margin-right: var(--gap-xs)
|
|
80
|
+
}
|
|
81
|
+
.dash.completed {
|
|
82
|
+
border-top: var(--steps-dash-border);
|
|
83
|
+
}
|
|
84
|
+
.dash.vertical {
|
|
85
|
+
min-width: unset;
|
|
86
|
+
min-height: 24px;
|
|
87
|
+
margin-right: 0;
|
|
88
|
+
margin-top: var(--gap-xs);
|
|
89
|
+
border-left: 2px solid var(--color-light-border-primary);
|
|
90
|
+
border-top: none;
|
|
91
|
+
}
|
|
92
|
+
.dash.completed.vertical {
|
|
93
|
+
border-left: var(--steps-dash-border);
|
|
94
|
+
}
|
|
95
|
+
.text {
|
|
96
|
+
font-size: 16px;
|
|
97
|
+
line-height: 24px;
|
|
98
|
+
font-weight: 400;
|
|
99
|
+
|
|
100
|
+
transition: background 0.2s;
|
|
101
|
+
padding: var(--gap-xs);
|
|
102
|
+
color: var(--color-light-text-primary);
|
|
103
|
+
border-radius: var(--gap-xs);
|
|
104
|
+
height: min-content
|
|
105
|
+
}
|
|
106
|
+
.text.interactive:not(.disabled):hover {
|
|
107
|
+
background: var(--color-light-bg-primary-inverted-alpha-7);
|
|
108
|
+
}
|
|
109
|
+
.text.interactive:not(.disabled):active {
|
|
110
|
+
background: var(--color-light-bg-primary-inverted-alpha-15);
|
|
111
|
+
}
|
|
112
|
+
.focused {
|
|
113
|
+
outline: var(--gap-3xs) solid var(--focus-color);
|
|
114
|
+
outline-offset: var(--gap-3xs);
|
|
115
|
+
}
|
|
116
|
+
.selected .text {
|
|
117
|
+
color: var(--color-light-graphic-primary);
|
|
118
|
+
}
|
|
119
|
+
.selected .option {
|
|
120
|
+
color: var(--color-light-graphic-primary-inverted);
|
|
121
|
+
background: var(--color-light-graphic-primary);
|
|
122
|
+
}
|
|
123
|
+
.checkbox {
|
|
124
|
+
display: flex;
|
|
125
|
+
justify-content: center;
|
|
126
|
+
align-items: center;
|
|
127
|
+
border-radius: 50%;
|
|
128
|
+
width: 20px;
|
|
129
|
+
height: 20px;
|
|
130
|
+
border: 2px solid var(--color-light-graphic-quaternary);
|
|
131
|
+
}
|
|
132
|
+
.dot {
|
|
133
|
+
width: 10px;
|
|
134
|
+
height: 10px;
|
|
135
|
+
border-radius: 50%;
|
|
136
|
+
background: var(--color-light-graphic-quaternary);
|
|
137
|
+
}
|
|
138
|
+
.selected .checkbox {
|
|
139
|
+
border: 2px solid var(--color-light-graphic-primary)
|
|
140
|
+
}
|
|
141
|
+
.selected .checkbox .dot {
|
|
142
|
+
background: var(--color-light-graphic-primary);
|
|
143
|
+
}
|
|
144
|
+
.option:not(.error).unordered {
|
|
145
|
+
background: unset;
|
|
146
|
+
}
|
|
147
|
+
.completedIndicator > [class*='positive'] {
|
|
148
|
+
color: var(--steps-option-svg-color);
|
|
149
|
+
background-color: var(--steps-option-svg-color);
|
|
150
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { BadgeProps } from "@alfalab/core-components-badge";
|
|
4
|
+
type StepIndicatorProps = Pick<BadgeProps, 'content' | 'iconColor' | 'className'>;
|
|
5
|
+
declare const StepIndicator: React.FC<StepIndicatorProps>;
|
|
6
|
+
export { StepIndicatorProps, StepIndicator };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var cn = require('classnames');
|
|
7
|
+
var coreComponentsBadge = require('@alfalab/core-components-badge/cssm');
|
|
8
|
+
var styles = require('./index.module.css');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
|
+
|
|
12
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
13
|
+
var cn__default = /*#__PURE__*/_interopDefaultLegacy(cn);
|
|
14
|
+
var styles__default = /*#__PURE__*/_interopDefaultLegacy(styles);
|
|
15
|
+
|
|
16
|
+
var StepIndicator = function (_a) {
|
|
17
|
+
var content = _a.content, iconColor = _a.iconColor, className = _a.className;
|
|
18
|
+
return (React__default['default'].createElement(coreComponentsBadge.Badge, { size: 'l', view: 'icon', iconColor: iconColor, className: cn__default['default'](styles__default['default'].component, className), content: content }));
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.StepIndicator = StepIndicator;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Component";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('react');
|
|
6
|
+
require('classnames');
|
|
7
|
+
require('@alfalab/core-components-badge/cssm');
|
|
8
|
+
require('./index.module.css');
|
|
9
|
+
var components_stepIndicator_Component = require('./Component.js');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
exports.StepIndicator = components_stepIndicator_Component.StepIndicator;
|
package/cssm/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Component";
|
package/cssm/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('react');
|
|
6
|
+
require('classnames');
|
|
7
|
+
require('./components/step/Component.js');
|
|
8
|
+
require('@alfalab/hooks');
|
|
9
|
+
require('@alfalab/icons-glyph/CheckmarkCircleMIcon');
|
|
10
|
+
require('@alfalab/icons-glyph/ExclamationCircleMIcon');
|
|
11
|
+
require('@alfalab/icons-glyph/ClockMIcon');
|
|
12
|
+
require('@alfalab/core-components-badge/cssm');
|
|
13
|
+
require('./components/step-indicator/index.module.css');
|
|
14
|
+
require('./components/step-indicator/Component.js');
|
|
15
|
+
require('./components/step/index.module.css');
|
|
16
|
+
require('./index.module.css');
|
|
17
|
+
var Component = require('./Component.js');
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
exports.Steps = Component.Steps;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
import { StepIndicatorProps } from "./components/step-indicator/index";
|
|
5
|
+
type StepsProps = {
|
|
6
|
+
/**
|
|
7
|
+
* Дополнительный класс
|
|
8
|
+
*/
|
|
9
|
+
className?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Дочерние элементы
|
|
12
|
+
*/
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
/**
|
|
15
|
+
* Активный шаг, указанный по умолчанию
|
|
16
|
+
* @default 1
|
|
17
|
+
*/
|
|
18
|
+
defaultActiveStep?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Активный шаг
|
|
21
|
+
*/
|
|
22
|
+
activeStep?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Управление возможностью отключения пометки пройденного шага
|
|
25
|
+
* @default true
|
|
26
|
+
*/
|
|
27
|
+
isMarkCompletedSteps?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Управление ориентацией компонента
|
|
30
|
+
* @default false
|
|
31
|
+
*/
|
|
32
|
+
isVerticalAlign?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Управление отображением номера шага
|
|
35
|
+
*/
|
|
36
|
+
ordered?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Включение / отключение интерактивности шагов
|
|
39
|
+
*/
|
|
40
|
+
interactive?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Кастомный метод для управления состоянием disabled шага и
|
|
43
|
+
* возможностью перехода на этот шаг
|
|
44
|
+
* @param stepNumber - номер шага
|
|
45
|
+
* @return Флаг состояния disabled
|
|
46
|
+
*/
|
|
47
|
+
checkIsStepDisabled?: (stepNumber: number) => boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Кастомный метод для управления состоянием шага error
|
|
50
|
+
* @param stepNumber - номер шага
|
|
51
|
+
* @return Флаг состояния error
|
|
52
|
+
*/
|
|
53
|
+
checkIsStepError?: (stepNumber: number) => boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Кастомный метод для управления состоянием шага warning
|
|
56
|
+
* @param stepNumber - номер шага
|
|
57
|
+
* @return Флаг состояния warning
|
|
58
|
+
*/
|
|
59
|
+
checkIsStepWarning?: (stepNumber: number) => boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Кастомный метод для управления состоянием шага waiting
|
|
62
|
+
* @param stepNumber - номер шага
|
|
63
|
+
* @return Флаг состояния waiting
|
|
64
|
+
*/
|
|
65
|
+
checkIsStepWaiting?: (stepNumber: number) => boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Кастомный метод для управления состоянием шага positive
|
|
68
|
+
* @param stepNumber - номер шага
|
|
69
|
+
* @return Флаг состояния positive
|
|
70
|
+
*/
|
|
71
|
+
checkIsStepPositive?: (stepNumber: number) => boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Кастомный метод для установки кастомного индикатора шага
|
|
74
|
+
* @param stepNumber - номер шага
|
|
75
|
+
* @return Объект StepIndicatorProps { className, content, iconColor }
|
|
76
|
+
*/
|
|
77
|
+
checkIsStepCustom?: (stepNumber: number) => StepIndicatorProps;
|
|
78
|
+
/**
|
|
79
|
+
* Обработчик клика на шаг
|
|
80
|
+
* @param stepNumber - номер активного шага
|
|
81
|
+
*/
|
|
82
|
+
onChange?: (stepNumber: number) => void;
|
|
83
|
+
/**
|
|
84
|
+
* Идентификатор для систем автоматизированного тестирования
|
|
85
|
+
*/
|
|
86
|
+
dataTestId?: string;
|
|
87
|
+
};
|
|
88
|
+
declare const Steps: React.FC<StepsProps>;
|
|
89
|
+
export { StepsProps, Steps };
|
package/esm/Component.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
import { Step } from './components/step/Component.js';
|
|
4
|
+
import '@alfalab/hooks';
|
|
5
|
+
import '@alfalab/icons-glyph/CheckmarkCircleMIcon';
|
|
6
|
+
import '@alfalab/icons-glyph/ExclamationCircleMIcon';
|
|
7
|
+
import '@alfalab/icons-glyph/ClockMIcon';
|
|
8
|
+
import '@alfalab/core-components-badge/esm';
|
|
9
|
+
import './components/step-indicator/Component.js';
|
|
10
|
+
|
|
11
|
+
var styles = {"component":"steps__component_rm960","vertical":"steps__vertical_rm960"};
|
|
12
|
+
require('./index.css')
|
|
13
|
+
|
|
14
|
+
var Steps = function (_a) {
|
|
15
|
+
var _b;
|
|
16
|
+
var className = _a.className, children = _a.children, _c = _a.defaultActiveStep, defaultActiveStep = _c === void 0 ? 1 : _c, activeStepProp = _a.activeStep, _d = _a.isMarkCompletedSteps, isMarkCompletedSteps = _d === void 0 ? true : _d, _e = _a.isVerticalAlign, isVerticalAlign = _e === void 0 ? false : _e, _f = _a.ordered, ordered = _f === void 0 ? true : _f, _g = _a.interactive, interactive = _g === void 0 ? true : _g, checkIsStepDisabled = _a.checkIsStepDisabled, checkIsStepError = _a.checkIsStepError, checkIsStepWarning = _a.checkIsStepWarning, checkIsStepWaiting = _a.checkIsStepWaiting, checkIsStepPositive = _a.checkIsStepPositive, checkIsStepCustom = _a.checkIsStepCustom, onChange = _a.onChange, dataTestId = _a.dataTestId;
|
|
17
|
+
var _h = useState(activeStepProp || defaultActiveStep), activeStep = _h[0], setActiveStep = _h[1];
|
|
18
|
+
var stepsLength = React.Children.count(children);
|
|
19
|
+
useEffect(function () {
|
|
20
|
+
if (activeStepProp) {
|
|
21
|
+
setActiveStep(activeStepProp);
|
|
22
|
+
}
|
|
23
|
+
}, [activeStepProp]);
|
|
24
|
+
var handleStepClick = function (stepNumber) {
|
|
25
|
+
setActiveStep(stepNumber);
|
|
26
|
+
if (onChange) {
|
|
27
|
+
onChange(stepNumber);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
if (!stepsLength)
|
|
31
|
+
return null;
|
|
32
|
+
return (React.createElement("div", { className: cn(className, styles.component, (_b = {},
|
|
33
|
+
_b[styles.vertical] = isVerticalAlign,
|
|
34
|
+
_b)), "data-test-id": dataTestId }, React.Children.map(children, function (step, index) {
|
|
35
|
+
var stepNumber = index + 1;
|
|
36
|
+
var isSelected = stepNumber === activeStep;
|
|
37
|
+
var isStepCompleted = isMarkCompletedSteps && stepNumber < activeStep;
|
|
38
|
+
var disabled = checkIsStepDisabled ? checkIsStepDisabled(stepNumber) : false;
|
|
39
|
+
var isPositive = checkIsStepPositive ? checkIsStepPositive(stepNumber) : false;
|
|
40
|
+
var isError = checkIsStepError ? checkIsStepError(stepNumber) : false;
|
|
41
|
+
var isWarning = checkIsStepWarning ? checkIsStepWarning(stepNumber) : false;
|
|
42
|
+
var isWaiting = checkIsStepWaiting ? checkIsStepWaiting(stepNumber) : false;
|
|
43
|
+
var customStepIndicator = checkIsStepCustom && checkIsStepCustom(stepNumber);
|
|
44
|
+
var isNotLastStep = stepsLength !== stepNumber;
|
|
45
|
+
var isInteractive = !disabled && interactive;
|
|
46
|
+
return (React.createElement(Step, { stepNumber: stepNumber, isSelected: isSelected, isStepCompleted: isStepCompleted, disabled: disabled, isPositive: isPositive, isError: isError, isWarning: isWarning, isWaiting: isWaiting, customStepIndicator: customStepIndicator, onClick: handleStepClick, ordered: ordered, interactive: isInteractive, isVerticalAlign: isVerticalAlign, isNotLastStep: isNotLastStep, key: stepNumber }, step));
|
|
47
|
+
})));
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export { Steps };
|