@megafon/ui-shared 8.0.5 → 8.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.
Files changed (33) hide show
  1. package/dist/es/components/Property/Property.d.ts +3 -42
  2. package/dist/es/components/Property/Property.js +6 -137
  3. package/dist/es/components/Stepper/Stepper.css +1 -0
  4. package/dist/es/components/Stepper/Stepper.d.ts +48 -0
  5. package/dist/es/components/Stepper/Stepper.js +140 -0
  6. package/dist/es/components/Stepper/StepperItem.css +1 -0
  7. package/dist/es/components/Stepper/StepperItem.d.ts +50 -0
  8. package/dist/es/components/Stepper/StepperItem.js +89 -0
  9. package/dist/es/index.d.ts +2 -1
  10. package/dist/es/index.js +2 -1
  11. package/dist/lib/components/Property/Property.d.ts +3 -42
  12. package/dist/lib/components/Property/Property.js +5 -136
  13. package/dist/lib/components/Stepper/Stepper.css +1 -0
  14. package/dist/lib/components/Stepper/Stepper.d.ts +48 -0
  15. package/dist/lib/components/Stepper/Stepper.js +149 -0
  16. package/dist/lib/components/Stepper/StepperItem.css +1 -0
  17. package/dist/lib/components/Stepper/StepperItem.d.ts +50 -0
  18. package/dist/lib/components/Stepper/StepperItem.js +98 -0
  19. package/dist/lib/index.d.ts +2 -1
  20. package/dist/lib/index.js +14 -7
  21. package/package.json +5 -5
  22. package/dist/es/components/Property/Property.css +0 -1
  23. package/dist/es/components/Property/PropertyDescription.css +0 -1
  24. package/dist/es/components/Property/PropertyDescription.d.ts +0 -6
  25. package/dist/es/components/Property/PropertyDescription.js +0 -43
  26. package/dist/es/components/Property/types.d.ts +0 -22
  27. package/dist/es/components/Property/types.js +0 -1
  28. package/dist/lib/components/Property/Property.css +0 -1
  29. package/dist/lib/components/Property/PropertyDescription.css +0 -1
  30. package/dist/lib/components/Property/PropertyDescription.d.ts +0 -6
  31. package/dist/lib/components/Property/PropertyDescription.js +0 -53
  32. package/dist/lib/components/Property/types.d.ts +0 -22
  33. package/dist/lib/components/Property/types.js +0 -5
@@ -4,147 +4,16 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.testIdPrefix = exports["default"] = void 0;
8
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- require("core-js/modules/es.symbol.js");
10
- require("core-js/modules/es.symbol.description.js");
11
- require("core-js/modules/es.array.map.js");
7
+ exports["default"] = void 0;
12
8
  var React = _interopRequireWildcard(require("react"));
13
9
  var _uiCore = require("@megafon/ui-core");
14
10
  var _uiHelpers = require("@megafon/ui-helpers");
15
- var _getColumnConfig = require("../../helpers/getColumnConfig");
16
- var _PropertyDescription = _interopRequireDefault(require("./PropertyDescription"));
17
11
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
12
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
19
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
20
- var InfoIcon = function InfoIcon(props) {
21
- return /*#__PURE__*/React.createElement("svg", (0, _extends2["default"])({
22
- viewBox: "0 0 20 20"
23
- }, props), /*#__PURE__*/React.createElement("path", {
24
- d: "M10 2c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm0 5c.6 0 1-.4 1-1s-.4-1-1-1-1 .4-1 1 .4 1 1 1zm1 8V9H9v6h2z"
25
- }));
26
- };
27
- var testIdPrefix = exports.testIdPrefix = 'Property';
28
13
  var cn = (0, _uiHelpers.cnCreate)('mfui-property');
29
- var Property = function Property(_ref) {
30
- var rootRef = _ref.rootRef,
31
- items = _ref.items,
32
- className = _ref.className,
33
- _ref$badge = _ref.badge,
34
- badge = _ref$badge === void 0 ? '' : _ref$badge,
35
- _ref$badgeType = _ref.badgeType,
36
- badgeType = _ref$badgeType === void 0 ? 'popular' : _ref$badgeType,
37
- tooltip = _ref.tooltip,
38
- icon = _ref.icon,
39
- _ref$disableBorderTop = _ref.disableBorderTop,
40
- disableBorderTop = _ref$disableBorderTop === void 0 ? false : _ref$disableBorderTop,
41
- _ref$borderBottom = _ref.borderBottom,
42
- borderBottom = _ref$borderBottom === void 0 ? false : _ref$borderBottom,
43
- _ref$borderColor = _ref.borderColor,
44
- borderColor = _ref$borderColor === void 0 ? 'default' : _ref$borderColor,
45
- _ref$mergedValue = _ref.mergedValue,
46
- mergedValue = _ref$mergedValue === void 0 ? '' : _ref$mergedValue,
47
- _ref$fullWidth = _ref.fullWidth,
48
- fullWidth = _ref$fullWidth === void 0 ? false : _ref$fullWidth,
49
- _ref$classes = _ref.classes,
50
- classes = _ref$classes === void 0 ? {} : _ref$classes,
51
- dataAttrs = _ref.dataAttrs;
52
- var tooltipRef = React.useRef(null);
53
- var renderTitle = function renderTitle(titles, titleSize, isFirstItem) {
54
- return titles === null || titles === void 0 ? void 0 : titles.map(function (titleItem, i) {
55
- var isFirstTitle = i === 0;
56
- return /*#__PURE__*/React.createElement("div", {
57
- key: i,
58
- className: cn('title-item', {
59
- size: titleSize
60
- }, [classes.title]),
61
- "data-testid": "".concat(testIdPrefix, "-title-item")
62
- }, icon && isFirstTitle && /*#__PURE__*/React.createElement("div", {
63
- className: cn('icon')
64
- }, icon), titleItem, tooltip && isFirstItem && isFirstTitle && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
65
- className: cn('tooltip'),
66
- ref: tooltipRef
67
- }, /*#__PURE__*/React.createElement(InfoIcon, null)), /*#__PURE__*/React.createElement(_uiCore.Tooltip, {
68
- className: cn('tooltip-inner'),
69
- triggerElement: tooltipRef
70
- }, tooltip)));
71
- });
72
- };
73
- var renderDescription = function renderDescription(description) {
74
- return description === null || description === void 0 ? void 0 : description.map(function (_ref2, j) {
75
- var value = _ref2.value,
76
- isCollapsible = _ref2.isCollapsible;
77
- return /*#__PURE__*/React.createElement("div", {
78
- className: cn('desc', {
79
- collapsible: isCollapsible
80
- }),
81
- key: j
82
- }, /*#__PURE__*/React.createElement(_PropertyDescription["default"], {
83
- value: value,
84
- isCollapsible: isCollapsible,
85
- dataAttrs: {
86
- moreLink: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.moreLink
87
- },
88
- classes: {
89
- open: classes.openedDescription,
90
- toggle: classes.toggleDescription
91
- }
92
- }));
93
- });
94
- };
95
- var renderValue = function renderValue(valueFrameColor, value, valueUnit) {
96
- return /*#__PURE__*/React.createElement("div", {
97
- className: cn('value-wrapper', {
98
- frame: valueFrameColor
99
- }),
100
- "data-testid": "".concat(testIdPrefix, "-value")
101
- }, /*#__PURE__*/React.createElement("div", {
102
- className: cn('value')
103
- }, typeof value === 'string' ? (0, _uiHelpers.convert)(value, {}) : value), valueUnit && /*#__PURE__*/React.createElement(_uiCore.Caption, {
104
- className: cn('value-unit'),
105
- hasMargin: false
106
- }, (0, _uiHelpers.convert)(valueUnit, {})));
107
- };
108
- return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({
109
- className: cn({
110
- 'border-top': !disableBorderTop,
111
- 'border-bottom': borderBottom,
112
- 'border-color': borderColor
113
- }, [className]),
114
- ref: rootRef
115
- }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root)), /*#__PURE__*/React.createElement(_uiCore.Grid, null, /*#__PURE__*/React.createElement(_uiCore.GridColumn, (0, _extends2["default"])({}, (0, _getColumnConfig.getColumnConfig)(fullWidth), {
116
- dataAttrs: {
117
- root: {
118
- 'data-testid': "".concat(testIdPrefix, "-gridColumn")
119
- }
120
- }
121
- }), /*#__PURE__*/React.createElement("div", {
122
- className: cn('wrapper')
123
- }, items.map(function (_ref3, i) {
124
- var title = _ref3.title,
125
- value = _ref3.value,
126
- description = _ref3.description,
127
- _ref3$valueUnit = _ref3.valueUnit,
128
- valueUnit = _ref3$valueUnit === void 0 ? '' : _ref3$valueUnit,
129
- _ref3$titleSize = _ref3.titleSize,
130
- titleSize = _ref3$titleSize === void 0 ? 'default' : _ref3$titleSize,
131
- _ref3$valueFrameColor = _ref3.valueFrameColor,
132
- valueFrameColor = _ref3$valueFrameColor === void 0 ? 'none' : _ref3$valueFrameColor;
133
- var isFirstItem = i === 0;
134
- var isRenderBadge = isFirstItem && !!badge;
135
- return /*#__PURE__*/React.createElement(React.Fragment, {
136
- key: i
137
- }, /*#__PURE__*/React.createElement("div", {
138
- className: cn('main', {
139
- 'with-badge': isRenderBadge,
140
- 'with-out-title': !title
141
- })
142
- }, /*#__PURE__*/React.createElement("div", {
143
- className: cn('title')
144
- }, isRenderBadge && /*#__PURE__*/React.createElement(_uiCore.PromoBadge, {
145
- className: cn('badge'),
146
- type: badgeType
147
- }, badge), title ? renderTitle(title, titleSize, isFirstItem) : renderDescription(description)), mergedValue && isFirstItem && renderValue(valueFrameColor, mergedValue, valueUnit), !mergedValue && value && renderValue(valueFrameColor, value, valueUnit)), title && renderDescription(description));
148
- })))));
14
+ var Property = function Property(props) {
15
+ return /*#__PURE__*/React.createElement("div", {
16
+ className: cn()
17
+ }, /*#__PURE__*/React.createElement(_uiCore.Parameter, props));
149
18
  };
150
19
  var _default = exports["default"] = Property;
@@ -0,0 +1 @@
1
+ h1,h2,h3,h4,h5{margin:0}.mfui-stepper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px;overflow-x:auto}.mfui-stepper::-webkit-scrollbar{height:8px}.mfui-stepper::-webkit-scrollbar-thumb{background-color:var(--spbSky2);border-radius:8px}.mfui-stepper_is-horizontal{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}
@@ -0,0 +1,48 @@
1
+ import * as React from 'react';
2
+ import type { IStepperItemProps } from './StepperItem';
3
+ import './Stepper.scss';
4
+ export type StepperItemType = Pick<IStepperItemProps, 'title' | 'text' | 'icon' | 'linkText' | 'linkUrl'>;
5
+ export interface IStepperProps {
6
+ /** Дополнительный класс корневого элемента */
7
+ className?: string;
8
+ /** Дополнительные классы элементов */
9
+ classes?: {
10
+ root?: string;
11
+ item?: string;
12
+ itemIconButton?: string;
13
+ itemTitle?: string;
14
+ itemText?: string;
15
+ itemLink?: string;
16
+ };
17
+ /** Ссылка на корневой элемент */
18
+ rootRef?: React.Ref<HTMLDivElement>;
19
+ /** Индекс активного шага */
20
+ activeStep?: number;
21
+ /** Количество шагов */
22
+ stepCount?: number;
23
+ /** Шаги */
24
+ items?: StepperItemType[];
25
+ /** Направление */
26
+ isHorizontal?: boolean;
27
+ /** Цифры вместо галочек */
28
+ isNumeric?: boolean;
29
+ /** Отключение кнопок */
30
+ isDisabled?: boolean;
31
+ /** Все шаги пройдены */
32
+ isAllChecked?: boolean;
33
+ /** Выравнивание */
34
+ align?: 'center' | 'left';
35
+ /** Дополнительные data атрибуты к внутренним элементам */
36
+ dataAttrs?: {
37
+ root?: Record<string, string>;
38
+ item?: Record<string, string>;
39
+ itemIconButton?: Record<string, string>;
40
+ itemTitle?: Record<string, string>;
41
+ itemText?: Record<string, string>;
42
+ itemLink?: Record<string, string>;
43
+ };
44
+ /** Обработчик события смены шага */
45
+ onChange?: (index: number) => void;
46
+ }
47
+ declare const Stepper: React.FC<IStepperProps>;
48
+ export default Stepper;
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ require("core-js/modules/es.array.from.js");
11
+ require("core-js/modules/es.array.map.js");
12
+ require("core-js/modules/es.string.iterator.js");
13
+ var React = _interopRequireWildcard(require("react"));
14
+ var _uiHelpers = require("@megafon/ui-helpers");
15
+ var _StepperItem = _interopRequireWildcard(require("./StepperItem"));
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
18
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
19
+ var CheckedIcon = function CheckedIcon(props) {
20
+ return /*#__PURE__*/React.createElement("svg", (0, _extends2["default"])({
21
+ viewBox: "0 0 20 20"
22
+ }, props), /*#__PURE__*/React.createElement("path", {
23
+ d: "M8.832 11.547L6.619 9.335l-1.414 1.413 2.462 2.462 1.445 1.446 5.932-8.486-1.638-1.148-4.574 6.525z"
24
+ }));
25
+ };
26
+ var cn = (0, _uiHelpers.cnCreate)('mfui-stepper');
27
+ var Stepper = function Stepper(_ref) {
28
+ var className = _ref.className,
29
+ _ref$classes = _ref.classes,
30
+ _ref$classes2 = _ref$classes === void 0 ? {} : _ref$classes,
31
+ rootClassName = _ref$classes2.root,
32
+ itemClassName = _ref$classes2.item,
33
+ itemIconButtonClassName = _ref$classes2.itemIconButton,
34
+ itemTitleClassName = _ref$classes2.itemTitle,
35
+ itemTextClassname = _ref$classes2.itemText,
36
+ itemLinkClassName = _ref$classes2.itemLink,
37
+ rootRef = _ref.rootRef,
38
+ _ref$activeStep = _ref.activeStep,
39
+ activeStep = _ref$activeStep === void 0 ? 0 : _ref$activeStep,
40
+ _ref$stepCount = _ref.stepCount,
41
+ stepCount = _ref$stepCount === void 0 ? 2 : _ref$stepCount,
42
+ _ref$items = _ref.items,
43
+ items = _ref$items === void 0 ? [] : _ref$items,
44
+ _ref$isHorizontal = _ref.isHorizontal,
45
+ isHorizontal = _ref$isHorizontal === void 0 ? true : _ref$isHorizontal,
46
+ isNumeric = _ref.isNumeric,
47
+ isDisabled = _ref.isDisabled,
48
+ isAllChecked = _ref.isAllChecked,
49
+ _ref$align = _ref.align,
50
+ align = _ref$align === void 0 ? 'center' : _ref$align,
51
+ _ref$dataAttrs = _ref.dataAttrs,
52
+ _ref$dataAttrs2 = _ref$dataAttrs === void 0 ? {} : _ref$dataAttrs,
53
+ rootAttrs = _ref$dataAttrs2.root,
54
+ itemAttrs = _ref$dataAttrs2.item,
55
+ itemIconButtonAttrs = _ref$dataAttrs2.itemIconButton,
56
+ itemTitleAttrs = _ref$dataAttrs2.itemTitle,
57
+ itemTextAttrs = _ref$dataAttrs2.itemText,
58
+ itemLinkAttrs = _ref$dataAttrs2.itemLink,
59
+ _ref$onChange = _ref.onChange,
60
+ onChange = _ref$onChange === void 0 ? function () {
61
+ return null;
62
+ } : _ref$onChange;
63
+ var _React$useState = React.useState(activeStep),
64
+ _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
65
+ currentIndex = _React$useState2[0],
66
+ setCurrentIndex = _React$useState2[1];
67
+ var hasCustomItems = !!items.length;
68
+ var currentItems = hasCustomItems ? items : Array.from({
69
+ length: stepCount
70
+ });
71
+ var defineItemTheme = React.useCallback(function (index) {
72
+ switch (true) {
73
+ case isAllChecked:
74
+ case index < currentIndex:
75
+ {
76
+ return _StepperItem.STEPPER_ITEM_THEME_ENUM.CHECKED;
77
+ }
78
+ case index === currentIndex:
79
+ {
80
+ return _StepperItem.STEPPER_ITEM_THEME_ENUM.ACTIVE;
81
+ }
82
+ default:
83
+ {
84
+ return _StepperItem.STEPPER_ITEM_THEME_ENUM.DEFAULT;
85
+ }
86
+ }
87
+ }, [currentIndex, isAllChecked]);
88
+ var handleClickItem = React.useCallback(function (index) {
89
+ return function () {
90
+ if (isAllChecked || isDisabled) {
91
+ return;
92
+ }
93
+ setCurrentIndex(index);
94
+ onChange(index);
95
+ };
96
+ }, [isAllChecked, isDisabled, onChange]);
97
+ React.useEffect(function () {
98
+ if (activeStep === undefined) {
99
+ return;
100
+ }
101
+ setCurrentIndex(activeStep);
102
+ }, [activeStep]);
103
+ var renderIcon = React.useCallback(function (index, theme) {
104
+ var isChecked = theme === _StepperItem.STEPPER_ITEM_THEME_ENUM.CHECKED;
105
+ if (isNumeric || !isChecked) {
106
+ return index + 1;
107
+ }
108
+ return /*#__PURE__*/React.createElement(CheckedIcon, null);
109
+ }, [isNumeric]);
110
+ var renderItems = React.useMemo(function () {
111
+ return currentItems.map(function (elem, i) {
112
+ var item = elem || {};
113
+ var itemTheme = defineItemTheme(i);
114
+ var itemIcon = item.icon || renderIcon(i, itemTheme);
115
+ var hasSeparator = i < currentItems.length - 1;
116
+ return /*#__PURE__*/React.createElement(_StepperItem["default"], (0, _extends2["default"])({}, item, {
117
+ className: itemClassName,
118
+ classes: {
119
+ iconButton: itemIconButtonClassName,
120
+ title: itemTitleClassName,
121
+ text: itemTextClassname,
122
+ link: itemLinkClassName
123
+ },
124
+ dataAttrs: {
125
+ root: itemAttrs,
126
+ iconButton: itemIconButtonAttrs,
127
+ title: itemTitleAttrs,
128
+ text: itemTextAttrs,
129
+ link: itemLinkAttrs
130
+ },
131
+ key: i,
132
+ icon: itemIcon,
133
+ hasSeparator: hasSeparator,
134
+ isHorizontal: isHorizontal,
135
+ isDisabled: isDisabled,
136
+ align: align,
137
+ theme: itemTheme,
138
+ onClick: handleClickItem(i)
139
+ }));
140
+ });
141
+ }, [align, currentItems, isDisabled, isHorizontal, itemAttrs, itemIconButtonAttrs, itemIconButtonClassName, itemClassName, itemLinkAttrs, itemLinkClassName, itemTextAttrs, itemTextClassname, itemTitleAttrs, itemTitleClassName, defineItemTheme, handleClickItem, renderIcon]);
142
+ return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(rootAttrs), {
143
+ className: cn([className, rootClassName], {
144
+ 'is-horizontal': isHorizontal
145
+ }),
146
+ ref: rootRef
147
+ }), renderItems);
148
+ };
149
+ var _default = exports["default"] = Stepper;
@@ -0,0 +1 @@
1
+ h1,h2,h3,h4,h5{margin:0}.mfui-stepper-item{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:16px}.mfui-stepper-item_is-horizontal{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mfui-stepper-item_is-horizontal .mfui-stepper-item__separator{-o-border-image:url(i/separator.png) 2 repeat;border-image:url(i/separator.png) 2 repeat;border-left:none;border-radius:100px;border-top:2px solid transparent;height:2px;left:calc(50% + 24px);min-height:2px;position:absolute;top:19px;width:calc(100% - 36px)}@media screen and (min-width:1024px){.mfui-stepper-item_is-horizontal .mfui-stepper-item__separator{left:calc(50% + 32px);width:calc(100% - 52px)}}.mfui-stepper-item_theme_active .mfui-stepper-item__icon-button{background-color:var(--night20)}.mfui-stepper-item_theme_active .mfui-stepper-item__icon{background-color:var(--night)}.mfui-stepper-item_theme_checked .mfui-stepper-item__icon-button{background-color:var(--brandGreen20)}.mfui-stepper-item_theme_checked .mfui-stepper-item__icon{background-color:var(--brandGreen)}.mfui-stepper-item_theme_checked .mfui-stepper-item__separator{border-color:var(--brandGreen);-o-border-image:none;border-image:none}.mfui-stepper-item_align_left{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mfui-stepper-item_align_left .mfui-stepper-item__separator{left:auto;right:0}.mfui-stepper-item_align_left .mfui-stepper-item__content,.mfui-stepper-item_align_left .mfui-stepper-item__icon-button-area{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mfui-stepper-item__icon-button-area{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px;-ms-flex-align:center;-ms-flex-item-align:stretch;align-self:stretch}.mfui-stepper-item__icon-button,.mfui-stepper-item__icon-button-area{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;align-items:center}.mfui-stepper-item__icon-button{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;background-color:var(--spbSky0);border-radius:100%;height:40px;justify-content:center;-webkit-transition:background-color .25s ease-out;transition:background-color .25s ease-out;width:40px}.mfui-stepper-item__icon-button:disabled{cursor:default}.mfui-stepper-item__icon{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;background-color:var(--spbSky2);border-radius:100%;color:var(--stcWhite);font-weight:500;height:24px;justify-content:center;-webkit-transition:background-color .25s ease-out;transition:background-color .25s ease-out;width:24px}.mfui-stepper-item__icon svg{width:20px;fill:var(--stcWhite)}.mfui-stepper-item__separator{-o-border-image:url(i/separator-vertical.png) 2 repeat;border-image:url(i/separator-vertical.png) 2 repeat;border-left:2px solid transparent;border-top:none;height:100%;min-height:20px;position:static;-webkit-transition:border-color .25s ease-out;transition:border-color .25s ease-out;width:2px}.mfui-stepper-item__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-width:160px;padding-bottom:20px}.mfui-stepper-item__link{margin-top:13px}
@@ -0,0 +1,50 @@
1
+ import * as React from 'react';
2
+ import './StepperItem.scss';
3
+ export declare enum STEPPER_ITEM_THEME_ENUM {
4
+ CHECKED = "checked",
5
+ ACTIVE = "active",
6
+ DEFAULT = "default"
7
+ }
8
+ export interface IStepperItemProps {
9
+ /** Дополнительный класс корневого элемента */
10
+ className?: string;
11
+ /** Дополнительные классы элементов */
12
+ classes?: {
13
+ iconButton?: string;
14
+ title?: string;
15
+ text?: string;
16
+ link?: string;
17
+ };
18
+ /** Тема */
19
+ theme?: STEPPER_ITEM_THEME_ENUM;
20
+ /** Заголовок */
21
+ title?: string;
22
+ /** Текст */
23
+ text?: string;
24
+ /** Текст ссылки */
25
+ linkText?: string;
26
+ /** Адрес ссылки */
27
+ linkUrl?: string;
28
+ /** Иконка */
29
+ icon?: string | number | JSX.Element;
30
+ /** Наличие разделителя */
31
+ hasSeparator?: boolean;
32
+ /** Направление */
33
+ isHorizontal?: boolean;
34
+ /** Отключение */
35
+ isDisabled?: boolean;
36
+ /** Выравнивание */
37
+ align?: 'center' | 'left';
38
+ /** Дополнительные data атрибуты к внутренним элементам */
39
+ dataAttrs?: {
40
+ root?: Record<string, string>;
41
+ iconButton?: Record<string, string>;
42
+ title?: Record<string, string>;
43
+ text?: Record<string, string>;
44
+ link?: Record<string, string>;
45
+ };
46
+ /** Обработчик события клика */
47
+ onClick?: () => void;
48
+ }
49
+ declare const StepperItem: React.FC<IStepperItemProps>;
50
+ export default StepperItem;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = exports.STEPPER_ITEM_THEME_ENUM = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ require("core-js/modules/es.string.link.js");
10
+ var React = _interopRequireWildcard(require("react"));
11
+ var _uiCore = require("@megafon/ui-core");
12
+ var _uiHelpers = require("@megafon/ui-helpers");
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
16
+ var STEPPER_ITEM_THEME_ENUM;
17
+ (function (STEPPER_ITEM_THEME_ENUM) {
18
+ STEPPER_ITEM_THEME_ENUM["CHECKED"] = "checked";
19
+ STEPPER_ITEM_THEME_ENUM["ACTIVE"] = "active";
20
+ STEPPER_ITEM_THEME_ENUM["DEFAULT"] = "default";
21
+ })(STEPPER_ITEM_THEME_ENUM || (exports.STEPPER_ITEM_THEME_ENUM = STEPPER_ITEM_THEME_ENUM = {}));
22
+ var cn = (0, _uiHelpers.cnCreate)('mfui-stepper-item');
23
+ var StepperItem = function StepperItem(_ref) {
24
+ var className = _ref.className,
25
+ _ref$classes = _ref.classes,
26
+ _ref$classes2 = _ref$classes === void 0 ? {} : _ref$classes,
27
+ iconButtonClassName = _ref$classes2.iconButton,
28
+ titleClassName = _ref$classes2.title,
29
+ textClassName = _ref$classes2.text,
30
+ linkClassName = _ref$classes2.link,
31
+ _ref$theme = _ref.theme,
32
+ theme = _ref$theme === void 0 ? 'default' : _ref$theme,
33
+ title = _ref.title,
34
+ text = _ref.text,
35
+ linkText = _ref.linkText,
36
+ linkUrl = _ref.linkUrl,
37
+ icon = _ref.icon,
38
+ hasSeparator = _ref.hasSeparator,
39
+ _ref$isHorizontal = _ref.isHorizontal,
40
+ isHorizontal = _ref$isHorizontal === void 0 ? true : _ref$isHorizontal,
41
+ isDisabled = _ref.isDisabled,
42
+ _ref$align = _ref.align,
43
+ align = _ref$align === void 0 ? 'center' : _ref$align,
44
+ _ref$dataAttrs = _ref.dataAttrs,
45
+ _ref$dataAttrs2 = _ref$dataAttrs === void 0 ? {} : _ref$dataAttrs,
46
+ rootAttrs = _ref$dataAttrs2.root,
47
+ iconButtonAttrs = _ref$dataAttrs2.iconButton,
48
+ titleAttrs = _ref$dataAttrs2.title,
49
+ textAttrs = _ref$dataAttrs2.text,
50
+ linkAttrs = _ref$dataAttrs2.link,
51
+ onClick = _ref.onClick;
52
+ var hasLink = !!linkText && !!linkUrl;
53
+ var hasContent = !!title || !!text || hasLink;
54
+ var renderContent = /*#__PURE__*/React.createElement("div", {
55
+ className: cn('content')
56
+ }, title && /*#__PURE__*/React.createElement(_uiCore.Header, {
57
+ className: cn([titleClassName]),
58
+ dataAttrs: {
59
+ root: titleAttrs
60
+ },
61
+ as: "h5",
62
+ align: align
63
+ }, title), text && /*#__PURE__*/React.createElement(_uiCore.Paragraph, {
64
+ className: cn([textClassName]),
65
+ dataAttrs: {
66
+ root: textAttrs
67
+ },
68
+ hasMargin: false,
69
+ align: align
70
+ }, text), hasLink && /*#__PURE__*/React.createElement(_uiCore.Button, {
71
+ className: cn('link', [linkClassName]),
72
+ dataAttrs: {
73
+ root: linkAttrs
74
+ },
75
+ href: linkUrl,
76
+ type: "text",
77
+ sizeAll: "extra-small"
78
+ }, linkText));
79
+ return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(rootAttrs), {
80
+ className: cn([className], {
81
+ 'is-horizontal': isHorizontal,
82
+ theme: theme,
83
+ align: align
84
+ })
85
+ }), /*#__PURE__*/React.createElement("div", {
86
+ className: cn('icon-button-area')
87
+ }, /*#__PURE__*/React.createElement("button", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(iconButtonAttrs), {
88
+ className: cn('icon-button', [iconButtonClassName]),
89
+ type: "button",
90
+ disabled: isDisabled,
91
+ onClick: onClick
92
+ }), /*#__PURE__*/React.createElement("span", {
93
+ className: cn('icon')
94
+ }, icon)), hasSeparator && /*#__PURE__*/React.createElement("span", {
95
+ className: cn('separator')
96
+ })), hasContent && renderContent);
97
+ };
98
+ var _default = exports["default"] = StepperItem;
@@ -34,11 +34,12 @@ export { default as PictureWithDescription } from './components/PictureWithDescr
34
34
  export { default as PromoCard } from './components/PromoCards/components/PromoCard/PromoCard';
35
35
  export { default as PromoCards } from './components/PromoCards/PromoCards';
36
36
  export { default as Property } from './components/Property/Property';
37
- export { default as PropertyDescription } from './components/Property/PropertyDescription';
38
37
  export { default as ServiceCard } from './components/ServiceCards/components/ServiceCard/ServiceCard';
39
38
  export { default as ServiceCards } from './components/ServiceCards/ServiceCards';
40
39
  export { default as SidePictureCard } from './components/SidePictureCards/components/SidePictureCard';
41
40
  export { default as SidePictureCards } from './components/SidePictureCards/SidePictureCards';
41
+ export { default as Stepper } from './components/Stepper/Stepper';
42
+ export { default as StepperItem } from './components/Stepper/StepperItem';
42
43
  export { default as Steps } from './components/Steps/Steps';
43
44
  export { default as StepsItem } from './components/Steps/StepsItem';
44
45
  export { default as StoreBanner } from './components/StoreBanner/StoreBanner';
package/dist/lib/index.js CHANGED
@@ -219,12 +219,6 @@ Object.defineProperty(exports, "Property", {
219
219
  return _Property["default"];
220
220
  }
221
221
  });
222
- Object.defineProperty(exports, "PropertyDescription", {
223
- enumerable: true,
224
- get: function get() {
225
- return _PropertyDescription["default"];
226
- }
227
- });
228
222
  Object.defineProperty(exports, "ServiceCard", {
229
223
  enumerable: true,
230
224
  get: function get() {
@@ -249,6 +243,18 @@ Object.defineProperty(exports, "SidePictureCards", {
249
243
  return _SidePictureCards["default"];
250
244
  }
251
245
  });
246
+ Object.defineProperty(exports, "Stepper", {
247
+ enumerable: true,
248
+ get: function get() {
249
+ return _Stepper["default"];
250
+ }
251
+ });
252
+ Object.defineProperty(exports, "StepperItem", {
253
+ enumerable: true,
254
+ get: function get() {
255
+ return _StepperItem["default"];
256
+ }
257
+ });
252
258
  Object.defineProperty(exports, "Steps", {
253
259
  enumerable: true,
254
260
  get: function get() {
@@ -393,11 +399,12 @@ var _PictureWithDescription = _interopRequireDefault(require("./components/Pictu
393
399
  var _PromoCard = _interopRequireDefault(require("./components/PromoCards/components/PromoCard/PromoCard"));
394
400
  var _PromoCards = _interopRequireDefault(require("./components/PromoCards/PromoCards"));
395
401
  var _Property = _interopRequireDefault(require("./components/Property/Property"));
396
- var _PropertyDescription = _interopRequireDefault(require("./components/Property/PropertyDescription"));
397
402
  var _ServiceCard = _interopRequireDefault(require("./components/ServiceCards/components/ServiceCard/ServiceCard"));
398
403
  var _ServiceCards = _interopRequireDefault(require("./components/ServiceCards/ServiceCards"));
399
404
  var _SidePictureCard = _interopRequireDefault(require("./components/SidePictureCards/components/SidePictureCard"));
400
405
  var _SidePictureCards = _interopRequireDefault(require("./components/SidePictureCards/SidePictureCards"));
406
+ var _Stepper = _interopRequireDefault(require("./components/Stepper/Stepper"));
407
+ var _StepperItem = _interopRequireDefault(require("./components/Stepper/StepperItem"));
401
408
  var _Steps = _interopRequireDefault(require("./components/Steps/Steps"));
402
409
  var _StepsItem = _interopRequireDefault(require("./components/Steps/StepsItem"));
403
410
  var _StoreBanner = _interopRequireDefault(require("./components/StoreBanner/StoreBanner"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@megafon/ui-shared",
3
- "version": "8.0.5",
3
+ "version": "8.1.0",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -77,13 +77,13 @@
77
77
  },
78
78
  "dependencies": {
79
79
  "@babel/runtime": "^7.8.4",
80
- "@megafon/ui-core": "^8.0.5",
81
- "@megafon/ui-helpers": "^4.0.0",
82
- "@megafon/ui-icons": "^3.8.0",
80
+ "@megafon/ui-core": "^8.1.0",
81
+ "@megafon/ui-helpers": "^4.0.1",
82
+ "@megafon/ui-icons": "^3.8.1",
83
83
  "core-js": "^3.6.4",
84
84
  "htmr": "^1.0.2",
85
85
  "lodash.throttle": "^4.1.1",
86
86
  "swiper": "^11.1.1"
87
87
  },
88
- "gitHead": "da89fd366d75df783e07e4fe1d65f4af83a4cf67"
88
+ "gitHead": "d9a710f4c5a27033a3b69898b7baa6e997b3b2f4"
89
89
  }
@@ -1 +0,0 @@
1
- @charset "UTF-8";h1,h2,h3,h4,h5{margin:0}.mfui-property__wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:24px 0}.mfui-property_border-top.mfui-property_border-color_default .mfui-property__wrapper{border-top:1px solid var(--spbSky1)}.mfui-property_border-bottom.mfui-property_border-color_default .mfui-property__wrapper{border-bottom:1px solid var(--spbSky1)}.mfui-property_border-top.mfui-property_border-color_darker .mfui-property__wrapper{border-top:1px solid var(--spbSky2)}.mfui-property_border-bottom.mfui-property_border-color_darker .mfui-property__wrapper{border-bottom:1px solid var(--spbSky2)}.mfui-property__main{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mfui-property__main:not(:first-child){margin-top:24px}.mfui-property__main_with-out-title{margin-top:16px!important}.mfui-property__main_with-badge{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mfui-property__title-item_size_default{font-size:15px;font-weight:500;line-height:24px}.mfui-property__title-item_size_big{font-size:18px;font-weight:500;letter-spacing:.5px;line-height:24px}@media screen and (min-width:1280px){.mfui-property__title-item_size_big{font-size:20px;line-height:28px}}@media screen and (max-width:767px){.mfui-property__title-item{font-size:15px;font-weight:500;line-height:24px}}.mfui-property__icon{display:inline-block;height:24px;margin-left:1px;margin-right:8px;overflow:hidden;vertical-align:bottom;width:24px}.mfui-property__badge{margin-bottom:8px}@media screen and (min-width:768px){.mfui-property__title .mfui-property__desc{width:100%}}.mfui-property__tooltip{cursor:pointer;display:inline-block;height:20px;margin-left:8px;vertical-align:text-bottom;width:20px;fill:var(--spbSky2)}.mfui-property__tooltip-inner{max-width:350px}.mfui-property__desc{margin-top:12px}@media screen and (min-width:768px){.mfui-property__desc{width:70%}}.mfui-property__desc_collapsible{margin-top:12px}.mfui-property__value-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-radius:8px;padding:4px 8px;text-align:right;white-space:pre-line}.mfui-property__value-wrapper_frame_default{background:var(--base)}.mfui-property__value-wrapper_frame_gray{background:var(--spbSky0)}.mfui-property__value{font-size:18px;font-weight:500;letter-spacing:.5px;line-height:24px}@media screen and (min-width:1280px){.mfui-property__value{font-size:20px;line-height:28px}}@media screen and (max-width:767px){.mfui-property__value{font-size:15px;font-weight:500;line-height:24px}}.mfui-property__value-unit:before{content:" "}
@@ -1 +0,0 @@
1
- h1,h2,h3,h4,h5{margin:0}.mfui-property-description__collapse{color:var(--systemBlue);cursor:pointer;font-size:12px;-webkit-text-decoration:underline dashed var(--systemBlue);text-decoration:underline dashed var(--systemBlue)}.mfui-property-description__content-inner{margin-bottom:8px}
@@ -1,6 +0,0 @@
1
- import * as React from 'react';
2
- import './PropertyDescription.scss';
3
- import { DescriptionType } from './types';
4
- export declare const testIdPrefix = "PropertyDescription";
5
- declare const PropertyDescription: React.FC<DescriptionType>;
6
- export default PropertyDescription;