@megafon/ui-shared 4.20.6 → 4.21.1

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 (48) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/es/components/AccordionBox/AccordionBox.d.ts +1 -1
  3. package/dist/es/components/AccordionBox/AccordionBox.js +15 -2
  4. package/dist/es/components/Card/Card.css +22 -22
  5. package/dist/es/components/Card/Card.js +1 -1
  6. package/dist/es/components/Instructions/img/android.png +0 -0
  7. package/dist/es/components/Instructions/img/blackIphone.png +0 -0
  8. package/dist/es/components/Instructions/img/laptop.png +0 -0
  9. package/dist/es/components/Instructions/img/newIphone.png +0 -0
  10. package/dist/es/components/Instructions/img/whiteIphone.png +0 -0
  11. package/dist/es/components/Property/Property.css +89 -60
  12. package/dist/es/components/Property/Property.d.ts +9 -1
  13. package/dist/es/components/Property/Property.js +94 -40
  14. package/dist/es/components/Property/PropertyDescription.css +1 -1
  15. package/dist/es/components/Property/PropertyDescription.d.ts +1 -0
  16. package/dist/es/components/Property/PropertyDescription.js +9 -7
  17. package/dist/es/components/Property/types.d.ts +3 -0
  18. package/dist/es/components/StoreBanner/doc/img/new-iphone-screen.png +0 -0
  19. package/dist/es/components/StoreBanner/doc/img/qr-code.png +0 -0
  20. package/dist/es/components/StoreBanner/doc/img/screen.png +0 -0
  21. package/dist/es/components/StoreBanner/img/android.png +0 -0
  22. package/dist/es/components/StoreBanner/img/black-iphone.png +0 -0
  23. package/dist/es/components/StoreBanner/img/new-iphone.png +0 -0
  24. package/dist/es/components/StoreBanner/img/white-iphone.png +0 -0
  25. package/dist/lib/components/AccordionBox/AccordionBox.d.ts +1 -1
  26. package/dist/lib/components/AccordionBox/AccordionBox.js +18 -2
  27. package/dist/lib/components/Card/Card.css +22 -22
  28. package/dist/lib/components/Card/Card.js +1 -1
  29. package/dist/lib/components/Instructions/img/android.png +0 -0
  30. package/dist/lib/components/Instructions/img/blackIphone.png +0 -0
  31. package/dist/lib/components/Instructions/img/laptop.png +0 -0
  32. package/dist/lib/components/Instructions/img/newIphone.png +0 -0
  33. package/dist/lib/components/Instructions/img/whiteIphone.png +0 -0
  34. package/dist/lib/components/Property/Property.css +89 -60
  35. package/dist/lib/components/Property/Property.d.ts +9 -1
  36. package/dist/lib/components/Property/Property.js +96 -39
  37. package/dist/lib/components/Property/PropertyDescription.css +1 -1
  38. package/dist/lib/components/Property/PropertyDescription.d.ts +1 -0
  39. package/dist/lib/components/Property/PropertyDescription.js +11 -8
  40. package/dist/lib/components/Property/types.d.ts +3 -0
  41. package/dist/lib/components/StoreBanner/doc/img/new-iphone-screen.png +0 -0
  42. package/dist/lib/components/StoreBanner/doc/img/qr-code.png +0 -0
  43. package/dist/lib/components/StoreBanner/doc/img/screen.png +0 -0
  44. package/dist/lib/components/StoreBanner/img/android.png +0 -0
  45. package/dist/lib/components/StoreBanner/img/black-iphone.png +0 -0
  46. package/dist/lib/components/StoreBanner/img/new-iphone.png +0 -0
  47. package/dist/lib/components/StoreBanner/img/white-iphone.png +0 -0
  48. package/package.json +5 -5
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
- exports["default"] = void 0;
8
+ exports["default"] = exports.testIdPrefix = void 0;
7
9
 
8
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
11
 
@@ -13,7 +15,7 @@ require("core-js/modules/es.symbol.js");
13
15
 
14
16
  require("core-js/modules/es.symbol.description.js");
15
17
 
16
- var _react = _interopRequireDefault(require("react"));
18
+ var _react = _interopRequireWildcard(require("react"));
17
19
 
18
20
  var _uiCore = require("@megafon/ui-core");
19
21
 
@@ -25,8 +27,22 @@ var _getColumnConfig = require("../../helpers/getColumnConfig");
25
27
 
26
28
  var _PropertyDescription = _interopRequireDefault(require("./PropertyDescription"));
27
29
 
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
+
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
+
28
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
29
35
 
36
+ var InfoIcon = function InfoIcon(props) {
37
+ return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({
38
+ viewBox: "0 0 20 20"
39
+ }, props), /*#__PURE__*/_react["default"].createElement("path", {
40
+ 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"
41
+ }));
42
+ };
43
+
44
+ var testIdPrefix = 'Property';
45
+ exports.testIdPrefix = testIdPrefix;
30
46
  var cn = (0, _uiHelpers.cnCreate)('mfui-property');
31
47
 
32
48
  var Property = function Property(_ref) {
@@ -35,11 +51,16 @@ var Property = function Property(_ref) {
35
51
  className = _ref.className,
36
52
  _ref$badge = _ref.badge,
37
53
  badge = _ref$badge === void 0 ? '' : _ref$badge,
54
+ _ref$badgeType = _ref.badgeType,
55
+ badgeType = _ref$badgeType === void 0 ? 'popular' : _ref$badgeType,
56
+ tooltip = _ref.tooltip,
38
57
  icon = _ref.icon,
39
58
  _ref$disableBorderTop = _ref.disableBorderTop,
40
59
  disableBorderTop = _ref$disableBorderTop === void 0 ? false : _ref$disableBorderTop,
41
60
  _ref$borderBottom = _ref.borderBottom,
42
61
  borderBottom = _ref$borderBottom === void 0 ? false : _ref$borderBottom,
62
+ _ref$borderColor = _ref.borderColor,
63
+ borderColor = _ref$borderColor === void 0 ? 'default' : _ref$borderColor,
43
64
  _ref$mergedValue = _ref.mergedValue,
44
65
  mergedValue = _ref$mergedValue === void 0 ? '' : _ref$mergedValue,
45
66
  _ref$fullWidth = _ref.fullWidth,
@@ -47,25 +68,37 @@ var Property = function Property(_ref) {
47
68
  _ref$classes = _ref.classes,
48
69
  classes = _ref$classes === void 0 ? {} : _ref$classes,
49
70
  dataAttrs = _ref.dataAttrs;
71
+ var tooltipRef = (0, _react.useRef)(null);
50
72
 
51
- var renderTitle = _react["default"].useCallback(function (title) {
73
+ var renderTitle = function renderTitle(title, titleSize, isFirstItem) {
52
74
  return title && title.map(function (titleItem, i) {
53
- return /*#__PURE__*/_react["default"].createElement(_uiCore.Header, {
54
- as: "h5",
75
+ var isFirstTitle = i === 0;
76
+ return /*#__PURE__*/_react["default"].createElement("div", {
55
77
  key: i,
56
- className: classes.title
57
- }, icon && i === 0 && /*#__PURE__*/_react["default"].createElement("div", {
78
+ className: cn('title-item', {
79
+ size: titleSize
80
+ }, [classes.title]),
81
+ "data-testid": "".concat(testIdPrefix, "-title-item")
82
+ }, icon && isFirstTitle && /*#__PURE__*/_react["default"].createElement("div", {
58
83
  className: cn('icon')
59
- }, icon), titleItem);
84
+ }, icon), titleItem, tooltip && isFirstItem && isFirstTitle && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
85
+ className: cn('tooltip'),
86
+ ref: tooltipRef
87
+ }, /*#__PURE__*/_react["default"].createElement(InfoIcon, null)), /*#__PURE__*/_react["default"].createElement(_uiCore.Tooltip, {
88
+ className: cn('tooltip-inner'),
89
+ triggerElement: tooltipRef
90
+ }, tooltip)));
60
91
  });
61
- }, [classes.title, icon]);
92
+ };
62
93
 
63
- var renderDescription = _react["default"].useCallback(function (description) {
94
+ var renderDescription = function renderDescription(description) {
64
95
  return description && description.map(function (_ref2, j) {
65
96
  var value = _ref2.value,
66
97
  isCollapsible = _ref2.isCollapsible;
67
98
  return /*#__PURE__*/_react["default"].createElement("div", {
68
- className: cn('desc'),
99
+ className: cn('desc', {
100
+ collapsible: isCollapsible
101
+ }),
69
102
  key: j
70
103
  }, /*#__PURE__*/_react["default"].createElement(_PropertyDescription["default"], {
71
104
  value: value,
@@ -79,45 +112,63 @@ var Property = function Property(_ref) {
79
112
  }
80
113
  }));
81
114
  });
82
- }, [classes.openedDescription, classes.toggleDescription, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.moreLink]);
115
+ };
116
+
117
+ var renderValue = function renderValue(valueFrameColor, value, valueUnit) {
118
+ return /*#__PURE__*/_react["default"].createElement("div", {
119
+ className: cn('value-wrapper', {
120
+ frame: valueFrameColor
121
+ }),
122
+ "data-testid": "".concat(testIdPrefix, "-value")
123
+ }, /*#__PURE__*/_react["default"].createElement("div", {
124
+ className: cn('value')
125
+ }, (0, _uiHelpers.convert)(value, {})), valueUnit && /*#__PURE__*/_react["default"].createElement(_uiCore.Caption, {
126
+ className: cn('value-unit'),
127
+ hasMargin: false
128
+ }, (0, _uiHelpers.convert)(valueUnit, {})));
129
+ };
83
130
 
84
131
  return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
85
132
  className: cn({
86
133
  'border-top': !disableBorderTop,
87
- 'border-bottom': borderBottom
134
+ 'border-bottom': borderBottom,
135
+ 'border-color': borderColor
88
136
  }, [className]),
89
137
  ref: rootRef
90
- }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root)), /*#__PURE__*/_react["default"].createElement(_uiCore.Grid, null, /*#__PURE__*/_react["default"].createElement(_uiCore.GridColumn, (0, _getColumnConfig.getColumnConfig)(fullWidth), /*#__PURE__*/_react["default"].createElement("div", {
138
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root)), /*#__PURE__*/_react["default"].createElement(_uiCore.Grid, null, /*#__PURE__*/_react["default"].createElement(_uiCore.GridColumn, (0, _extends2["default"])({}, (0, _getColumnConfig.getColumnConfig)(fullWidth), {
139
+ dataAttrs: {
140
+ root: {
141
+ 'data-testid': "".concat(testIdPrefix, "-gridColumn")
142
+ }
143
+ }
144
+ }), /*#__PURE__*/_react["default"].createElement("div", {
91
145
  className: cn('wrapper')
92
- }, badge && /*#__PURE__*/_react["default"].createElement("div", {
93
- className: cn('badge-wrapper')
94
- }, /*#__PURE__*/_react["default"].createElement("span", {
95
- className: cn('badge')
96
- }, badge)), /*#__PURE__*/_react["default"].createElement("div", {
97
- className: cn('content')
98
- }, /*#__PURE__*/_react["default"].createElement("div", {
99
- className: cn('items-wrapper')
100
146
  }, items.map(function (_ref3, i) {
101
147
  var title = _ref3.title,
102
148
  value = _ref3.value,
103
- description = _ref3.description;
104
- return /*#__PURE__*/_react["default"].createElement("div", {
105
- className: cn('item'),
149
+ description = _ref3.description,
150
+ _ref3$valueUnit = _ref3.valueUnit,
151
+ valueUnit = _ref3$valueUnit === void 0 ? '' : _ref3$valueUnit,
152
+ _ref3$titleSize = _ref3.titleSize,
153
+ titleSize = _ref3$titleSize === void 0 ? 'default' : _ref3$titleSize,
154
+ _ref3$valueFrameColor = _ref3.valueFrameColor,
155
+ valueFrameColor = _ref3$valueFrameColor === void 0 ? 'default' : _ref3$valueFrameColor;
156
+ var isFirstItem = i === 0;
157
+ var isRenderBadge = isFirstItem && !!badge;
158
+ return /*#__PURE__*/_react["default"].createElement(_react.Fragment, {
106
159
  key: i
107
160
  }, /*#__PURE__*/_react["default"].createElement("div", {
108
- className: cn('inner')
109
- }, renderTitle(title), renderDescription(description)), !mergedValue && /*#__PURE__*/_react["default"].createElement("div", {
110
- className: cn('value-wrapper')
111
- }, value && /*#__PURE__*/_react["default"].createElement("span", {
112
- className: cn('value')
113
- }, value)));
114
- })), mergedValue && /*#__PURE__*/_react["default"].createElement("div", {
115
- className: cn('value-wrapper', {
116
- merged: true
117
- })
118
- }, /*#__PURE__*/_react["default"].createElement(_uiCore.Header, {
119
- as: "h3"
120
- }, mergedValue)))))));
161
+ className: cn('main', {
162
+ 'with-badge': isRenderBadge,
163
+ 'with-out-title': !title
164
+ })
165
+ }, /*#__PURE__*/_react["default"].createElement("div", {
166
+ className: cn('title')
167
+ }, isRenderBadge && /*#__PURE__*/_react["default"].createElement(_uiCore.PromoBadge, {
168
+ className: cn('badge'),
169
+ type: badgeType
170
+ }, badge), title ? renderTitle(title, titleSize, isFirstItem) : renderDescription(description)), mergedValue && isFirstItem && renderValue(valueFrameColor, mergedValue, valueUnit), !mergedValue && value && renderValue(valueFrameColor, value, valueUnit)), title && renderDescription(description));
171
+ })))));
121
172
  };
122
173
 
123
174
  Property.propTypes = {
@@ -130,12 +181,18 @@ Property.propTypes = {
130
181
  value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].arrayOf(_propTypes["default"].node)]).isRequired,
131
182
  isCollapsible: _propTypes["default"].bool
132
183
  })),
133
- value: _propTypes["default"].string
184
+ value: _propTypes["default"].string,
185
+ titleSize: _propTypes["default"].oneOf(['default', 'big']),
186
+ valueUnit: _propTypes["default"].string,
187
+ valueFrameColor: _propTypes["default"].oneOf(['default', 'gray'])
134
188
  }).isRequired).isRequired,
135
189
  className: _propTypes["default"].string,
136
190
  badge: _propTypes["default"].string,
191
+ badgeType: _propTypes["default"].oneOf(['hit', 'new', 'vip', 'popular', 'user-choice', 'interests']),
192
+ tooltip: _propTypes["default"].string,
137
193
  disableBorderTop: _propTypes["default"].bool,
138
194
  borderBottom: _propTypes["default"].bool,
195
+ borderColor: _propTypes["default"].oneOf(['default', 'darker']),
139
196
  mergedValue: _propTypes["default"].string,
140
197
  icon: _propTypes["default"].node,
141
198
  fullWidth: _propTypes["default"].bool,
@@ -13,5 +13,5 @@ h5 {
13
13
  cursor: pointer;
14
14
  }
15
15
  .mfui-property-description__content-inner {
16
- margin-top: 8px;
16
+ margin-bottom: 8px;
17
17
  }
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import './PropertyDescription.less';
3
3
  import { Desc } from './types';
4
+ export declare const testIdPrefix = "PropertyDescription";
4
5
  declare const PropertyDescription: React.FC<Desc>;
5
6
  export default PropertyDescription;
@@ -5,7 +5,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = void 0;
8
+ exports["default"] = exports.testIdPrefix = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
@@ -28,6 +28,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
28
28
  /* eslint-disable jsx-a11y/no-static-element-interactions */
29
29
 
30
30
  /* eslint-disable jsx-a11y/click-events-have-key-events */
31
+ var testIdPrefix = 'PropertyDescription';
32
+ exports.testIdPrefix = testIdPrefix;
31
33
  var cn = (0, _uiHelpers.cnCreate)('mfui-property-description');
32
34
 
33
35
  var PropertyDescription = function PropertyDescription(_ref) {
@@ -49,16 +51,17 @@ var PropertyDescription = function PropertyDescription(_ref) {
49
51
 
50
52
  if (isCollapsible) {
51
53
  return /*#__PURE__*/React.createElement("div", {
52
- className: cn([isOpened ? classes.open : undefined])
53
- }, /*#__PURE__*/React.createElement("span", (0, _extends2["default"])({
54
- onClick: handleClickDesc
55
- }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.moreLink), {
56
- className: cn('collapse', classes.toggle)
57
- }), isOpened ? 'Скрыть' : 'Подробнее'), /*#__PURE__*/React.createElement(_uiCore.Collapse, {
54
+ className: cn([isOpened ? classes.open : undefined]),
55
+ "data-testid": "".concat(testIdPrefix, "-collapsible")
56
+ }, /*#__PURE__*/React.createElement(_uiCore.Collapse, {
58
57
  className: cn('content'),
59
58
  classNameContainer: cn('content-inner'),
60
59
  isOpened: isOpened
61
- }, value));
60
+ }, value), /*#__PURE__*/React.createElement("span", (0, _extends2["default"])({
61
+ onClick: handleClickDesc
62
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.moreLink), {
63
+ className: cn('collapse', classes.toggle)
64
+ }), isOpened ? 'Скрыть' : 'Подробнее'));
62
65
  }
63
66
 
64
67
  return /*#__PURE__*/React.createElement("div", {
@@ -12,6 +12,9 @@ export declare type Desc = {
12
12
  };
13
13
  export declare type Item = {
14
14
  title?: string[] | React.ReactNode[];
15
+ titleSize?: 'default' | 'big';
15
16
  description?: Desc[];
16
17
  value?: string;
18
+ valueUnit?: string;
19
+ valueFrameColor?: 'default' | 'gray';
17
20
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@megafon/ui-shared",
3
- "version": "4.20.6",
3
+ "version": "4.21.1",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -48,7 +48,7 @@
48
48
  "@babel/preset-env": "^7.8.6",
49
49
  "@babel/preset-react": "^7.8.3",
50
50
  "@babel/preset-typescript": "^7.8.3",
51
- "@megafon/ui-icons": "^2.13.0",
51
+ "@megafon/ui-icons": "^2.14.0",
52
52
  "@svgr/core": "^2.4.1",
53
53
  "@testing-library/jest-dom": "5.16.2",
54
54
  "@testing-library/react": "12.1.2",
@@ -82,13 +82,13 @@
82
82
  },
83
83
  "dependencies": {
84
84
  "@babel/runtime": "^7.8.4",
85
- "@megafon/ui-core": "^5.1.1",
86
- "@megafon/ui-helpers": "^2.5.1",
85
+ "@megafon/ui-core": "^5.2.0",
86
+ "@megafon/ui-helpers": "^2.5.2",
87
87
  "core-js": "^3.6.4",
88
88
  "htmr": "^0.9.2",
89
89
  "lodash.throttle": "^4.1.1",
90
90
  "prop-types": "^15.7.2",
91
91
  "swiper": "^6.5.6"
92
92
  },
93
- "gitHead": "9d1e595eebdde3e8652d07511c1bf3057d61a8f3"
93
+ "gitHead": "dcc83f03d9aa2088d55b98deecafe819051cda0d"
94
94
  }