@megafon/ui-shared 5.0.1 → 5.2.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 (42) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/es/components/BenefitsIcons/BenefitsIcons.js +19 -116
  3. package/dist/es/components/BenefitsIcons/BenefitsIconsTile.js +3 -1
  4. package/dist/es/components/BenefitsIcons/helpers.d.ts +8 -0
  5. package/dist/es/components/BenefitsIcons/helpers.js +116 -0
  6. package/dist/es/components/BenefitsPictures/BenefitsPictures.d.ts +1 -0
  7. package/dist/es/components/BenefitsPictures/BenefitsPictures.js +12 -102
  8. package/dist/es/components/BenefitsPictures/helpers.d.ts +11 -0
  9. package/dist/es/components/BenefitsPictures/helpers.js +99 -0
  10. package/dist/es/components/Card/Card.css +5 -1
  11. package/dist/es/components/Card/Card.d.ts +9 -1
  12. package/dist/es/components/Card/Card.js +15 -4
  13. package/dist/es/components/Property/Property.js +2 -2
  14. package/dist/es/components/Property/types.d.ts +1 -1
  15. package/dist/es/components/Table/Table.css +10 -1
  16. package/dist/es/components/Table/Table.d.ts +2 -0
  17. package/dist/es/components/Table/Table.js +17 -6
  18. package/dist/es/components/Table/TableRow.d.ts +2 -0
  19. package/dist/es/components/Table/TableRow.js +2 -0
  20. package/dist/es/index.d.ts +0 -1
  21. package/dist/es/index.js +0 -1
  22. package/dist/lib/components/BenefitsIcons/BenefitsIcons.js +21 -116
  23. package/dist/lib/components/BenefitsIcons/BenefitsIconsTile.js +3 -1
  24. package/dist/lib/components/BenefitsIcons/helpers.d.ts +8 -0
  25. package/dist/lib/components/BenefitsIcons/helpers.js +135 -0
  26. package/dist/lib/components/BenefitsPictures/BenefitsPictures.d.ts +1 -0
  27. package/dist/lib/components/BenefitsPictures/BenefitsPictures.js +16 -104
  28. package/dist/lib/components/BenefitsPictures/helpers.d.ts +11 -0
  29. package/dist/lib/components/BenefitsPictures/helpers.js +122 -0
  30. package/dist/lib/components/Card/Card.css +5 -1
  31. package/dist/lib/components/Card/Card.d.ts +9 -1
  32. package/dist/lib/components/Card/Card.js +15 -4
  33. package/dist/lib/components/Property/Property.js +2 -2
  34. package/dist/lib/components/Property/types.d.ts +1 -1
  35. package/dist/lib/components/Table/Table.css +10 -1
  36. package/dist/lib/components/Table/Table.d.ts +2 -0
  37. package/dist/lib/components/Table/Table.js +17 -6
  38. package/dist/lib/components/Table/TableRow.d.ts +2 -0
  39. package/dist/lib/components/Table/TableRow.js +2 -0
  40. package/dist/lib/index.d.ts +0 -1
  41. package/dist/lib/index.js +0 -8
  42. package/package.json +5 -5
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getCenterLargeConfig = exports.getCenterMediumConfig = exports.getLeftConfig = exports.getOddOffset = exports.getEvenOffset = exports.isOddIndex = exports.columnSize = exports["default"] = void 0;
7
+
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
+
12
+ var columnSize = {
13
+ wide: '4',
14
+ desktop: '4',
15
+ tablet: '5'
16
+ };
17
+ exports.columnSize = columnSize;
18
+
19
+ var isOddIndex = function isOddIndex(index) {
20
+ return !((index + 1) % 2);
21
+ };
22
+
23
+ exports.isOddIndex = isOddIndex;
24
+
25
+ var getEvenOffset = function getEvenOffset(index) {
26
+ return isOddIndex(index) ? '1' : undefined;
27
+ };
28
+
29
+ exports.getEvenOffset = getEvenOffset;
30
+
31
+ var getOddOffset = function getOddOffset(index) {
32
+ return isOddIndex(index) ? undefined : '1';
33
+ };
34
+
35
+ exports.getOddOffset = getOddOffset;
36
+
37
+ var getLeftConfig = function getLeftConfig(count, index) {
38
+ switch (count) {
39
+ case 2:
40
+ case 4:
41
+ return (0, _extends2["default"])((0, _extends2["default"])({}, columnSize), {
42
+ leftOffsetWide: getEvenOffset(index),
43
+ leftOffsetDesktop: getEvenOffset(index),
44
+ leftOffsetTablet: getEvenOffset(index)
45
+ });
46
+
47
+ default:
48
+ return (0, _extends2["default"])((0, _extends2["default"])({}, columnSize), {
49
+ leftOffsetTablet: getEvenOffset(index)
50
+ });
51
+ }
52
+ };
53
+
54
+ exports.getLeftConfig = getLeftConfig;
55
+
56
+ var getCenterMediumConfig = function getCenterMediumConfig(count, index) {
57
+ switch (count) {
58
+ case 3:
59
+ return (0, _extends2["default"])((0, _extends2["default"])({}, columnSize), {
60
+ leftOffsetTablet: getOddOffset(index)
61
+ });
62
+
63
+ case 4:
64
+ return (0, _extends2["default"])((0, _extends2["default"])({}, columnSize), {
65
+ rightOffsetWide: getOddOffset(index),
66
+ leftOffsetWide: getEvenOffset(index),
67
+ rightOffsetDesktop: getEvenOffset(index),
68
+ leftOffsetDesktop: getOddOffset(index),
69
+ rightOffsetTablet: getEvenOffset(index),
70
+ leftOffsetTablet: getOddOffset(index)
71
+ });
72
+
73
+ default:
74
+ return (0, _extends2["default"])((0, _extends2["default"])({}, columnSize), {
75
+ rightOffsetWide: getOddOffset(index),
76
+ leftOffsetWide: getEvenOffset(index)
77
+ });
78
+ }
79
+ };
80
+
81
+ exports.getCenterMediumConfig = getCenterMediumConfig;
82
+
83
+ var getCenterLargeConfig = function getCenterLargeConfig(count, index) {
84
+ switch (count) {
85
+ case 4:
86
+ return (0, _extends2["default"])((0, _extends2["default"])({}, columnSize), {
87
+ leftOffsetWide: getOddOffset(index),
88
+ rightOffsetWide: getEvenOffset(index),
89
+ leftOffsetDesktop: getOddOffset(index),
90
+ rightOffsetDesktop: getEvenOffset(index),
91
+ leftOffsetTablet: getOddOffset(index),
92
+ rightOffsetTablet: getEvenOffset(index)
93
+ });
94
+
95
+ case 3:
96
+ return (0, _extends2["default"])((0, _extends2["default"])({}, columnSize), {
97
+ leftOffsetTablet: getOddOffset(index)
98
+ });
99
+
100
+ default:
101
+ return (0, _extends2["default"])({}, columnSize);
102
+ }
103
+ };
104
+
105
+ exports.getCenterLargeConfig = getCenterLargeConfig;
106
+
107
+ var getCenterConfig = function getCenterConfig(count, index, gutterSize) {
108
+ switch (gutterSize) {
109
+ case 'medium':
110
+ {
111
+ return getCenterMediumConfig(count, index);
112
+ }
113
+
114
+ default:
115
+ {
116
+ return getCenterLargeConfig(count, index);
117
+ }
118
+ }
119
+ };
120
+
121
+ var _default = getCenterConfig;
122
+ exports["default"] = _default;
@@ -20,8 +20,12 @@ h5 {
20
20
  padding: 16px 16px 24px;
21
21
  border-radius: 12px;
22
22
  color: var(--content);
23
- text-decoration: none;
23
+ text-decoration: none !important;
24
24
  background-color: var(--base);
25
+ -webkit-transition: background-color 0.3s, 0.3s, -webkit-box-shadow;
26
+ transition: background-color 0.3s, 0.3s, -webkit-box-shadow;
27
+ transition: background-color 0.3s, box-shadow, 0.3s;
28
+ transition: background-color 0.3s, box-shadow, 0.3s, -webkit-box-shadow;
25
29
  }
26
30
  @media screen and (min-width: 1280px) {
27
31
  .mfui-card {
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { Ref } from 'react';
2
2
  import './Card.less';
3
3
  import { ButtonType, FeaturesList, IconsList, Image, Link, Price, TextsList, Title } from './types';
4
4
  export interface ICard {
@@ -12,6 +12,14 @@ export interface ICard {
12
12
  };
13
13
  /** Дополнительный класс для компонента */
14
14
  className?: string;
15
+ /** Дополнительные классы для внутренних элементов */
16
+ classes?: {
17
+ root?: string;
18
+ button?: string;
19
+ extraButton?: string;
20
+ };
21
+ /** Ссылка на корневой элемент */
22
+ rootRef?: Ref<HTMLDivElement | HTMLAnchorElement>;
15
23
  isFullHeight?: boolean;
16
24
  /** Вид */
17
25
  view?: 'shadow' | 'background';
@@ -52,6 +52,8 @@ var cn = (0, _uiHelpers.cnCreate)('mfui-card');
52
52
  var Card = function Card(_ref5) {
53
53
  var dataAttrs = _ref5.dataAttrs,
54
54
  className = _ref5.className,
55
+ classes = _ref5.classes,
56
+ rootRef = _ref5.rootRef,
55
57
  _ref5$isFullHeight = _ref5.isFullHeight,
56
58
  isFullHeight = _ref5$isFullHeight === void 0 ? false : _ref5$isFullHeight,
57
59
  link = _ref5.link,
@@ -184,7 +186,7 @@ var Card = function Card(_ref5) {
184
186
  dataAttrs: {
185
187
  root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button
186
188
  },
187
- className: cn('button'),
189
+ className: cn('button', [classes === null || classes === void 0 ? void 0 : classes.button]),
188
190
  href: button.href,
189
191
  target: button.target,
190
192
  onClick: button === null || button === void 0 ? void 0 : button.onClick
@@ -192,7 +194,7 @@ var Card = function Card(_ref5) {
192
194
  dataAttrs: {
193
195
  root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.extraButton
194
196
  },
195
- className: cn('button'),
197
+ className: cn('button', [classes === null || classes === void 0 ? void 0 : classes.extraButton]),
196
198
  href: extraButton.href,
197
199
  target: extraButton.target,
198
200
  type: "outline",
@@ -216,10 +218,11 @@ var Card = function Card(_ref5) {
216
218
  view: view,
217
219
  link: isLink,
218
220
  'full-height': isFullHeight
219
- }, [className]),
221
+ }, [className, classes === null || classes === void 0 ? void 0 : classes.root]),
220
222
  href: isLink ? link === null || link === void 0 ? void 0 : link.href : undefined,
221
223
  target: isLink ? link === null || link === void 0 ? void 0 : link.target : undefined,
222
- onClick: isLink ? onClick : undefined
224
+ onClick: isLink ? onClick : undefined,
225
+ ref: rootRef
223
226
  }), renderIcon(), !isBottomImage && renderImage(), /*#__PURE__*/_react["default"].createElement(_uiCore.Header, {
224
227
  className: cn('title'),
225
228
  as: "h3",
@@ -236,6 +239,14 @@ Card.propTypes = {
236
239
  extraButton: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired)
237
240
  }),
238
241
  className: _propTypes["default"].string,
242
+ classes: _propTypes["default"].shape({
243
+ root: _propTypes["default"].string,
244
+ button: _propTypes["default"].string,
245
+ extraButton: _propTypes["default"].string
246
+ }),
247
+ rootRef: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].oneOfType([_propTypes["default"].shape({
248
+ current: _propTypes["default"].elementType
249
+ }), _propTypes["default"].any])]),
239
250
  view: _propTypes["default"].oneOf(['shadow', 'background']),
240
251
  link: _propTypes["default"].shape({
241
252
  href: _propTypes["default"].string,
@@ -122,7 +122,7 @@ var Property = function Property(_ref) {
122
122
  "data-testid": "".concat(testIdPrefix, "-value")
123
123
  }, /*#__PURE__*/_react["default"].createElement("div", {
124
124
  className: cn('value')
125
- }, (0, _uiHelpers.convert)(value, {})), valueUnit && /*#__PURE__*/_react["default"].createElement(_uiCore.Caption, {
125
+ }, typeof value === 'string' ? (0, _uiHelpers.convert)(value, {}) : value), valueUnit && /*#__PURE__*/_react["default"].createElement(_uiCore.Caption, {
126
126
  className: cn('value-unit'),
127
127
  hasMargin: false
128
128
  }, (0, _uiHelpers.convert)(valueUnit, {})));
@@ -181,7 +181,7 @@ Property.propTypes = {
181
181
  value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].arrayOf(_propTypes["default"].node)]).isRequired,
182
182
  isCollapsible: _propTypes["default"].bool
183
183
  })),
184
- value: _propTypes["default"].string,
184
+ value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].node]),
185
185
  titleSize: _propTypes["default"].oneOf(['default', 'big']),
186
186
  valueUnit: _propTypes["default"].string,
187
187
  valueFrameColor: _propTypes["default"].oneOf(['none', 'default', 'gray'])
@@ -14,7 +14,7 @@ export declare type Item = {
14
14
  title?: string[] | React.ReactNode[];
15
15
  titleSize?: 'default' | 'big';
16
16
  description?: Desc[];
17
- value?: string;
17
+ value?: string | React.ReactNode;
18
18
  valueUnit?: string;
19
19
  valueFrameColor?: 'none' | 'default' | 'gray';
20
20
  };
@@ -40,7 +40,7 @@ h5 {
40
40
  overflow: auto;
41
41
  }
42
42
  @media screen and (min-width: 1024px) {
43
- .mfui-table__scroll {
43
+ .mfui-table__scroll_limit {
44
44
  max-height: 500px;
45
45
  }
46
46
  }
@@ -131,6 +131,15 @@ h5 {
131
131
  .mfui-table__row:not(:last-child) .mfui-table__cell {
132
132
  border-bottom: 1px solid var(--spbSky2);
133
133
  }
134
+ .mfui-table__row_align_bottom .mfui-table__cell {
135
+ vertical-align: bottom;
136
+ }
137
+ .mfui-table__row_align_top .mfui-table__cell {
138
+ vertical-align: top;
139
+ }
140
+ .mfui-table__row_align_top.mfui-table__row_head .mfui-table__cell {
141
+ padding-top: 12px;
142
+ }
134
143
  .mfui-table_min-cell-size_small .mfui-table__cell:not(:first-child) {
135
144
  min-width: 72px;
136
145
  }
@@ -8,6 +8,8 @@ export interface ITable {
8
8
  fixColumn?: boolean;
9
9
  /** Минимальный размер ячеек */
10
10
  minCellSize?: 'small' | 'large';
11
+ /** Отключить ограничение по высоте при разрешении больше 1024px */
12
+ disableHeightLimit?: boolean;
11
13
  children: Array<React.ReactElement<ITableRow>>;
12
14
  }
13
15
  declare const Table: React.FC<ITable>;
@@ -35,6 +35,8 @@ var Table = function Table(_ref) {
35
35
  fixColumn = _ref$fixColumn === void 0 ? true : _ref$fixColumn,
36
36
  _ref$minCellSize = _ref.minCellSize,
37
37
  minCellSize = _ref$minCellSize === void 0 ? 'large' : _ref$minCellSize,
38
+ _ref$disableHeightLim = _ref.disableHeightLimit,
39
+ disableHeightLimit = _ref$disableHeightLim === void 0 ? false : _ref$disableHeightLim,
38
40
  children = _ref.children;
39
41
  var scrollRef = React.useRef(null);
40
42
 
@@ -96,17 +98,23 @@ var Table = function Table(_ref) {
96
98
  }, []);
97
99
 
98
100
  var renderRows = function renderRows() {
99
- return React.Children.map(children, function (_ref2) {
101
+ return React.Children.map(children, function (_ref2, index) {
100
102
  var _ref2$props = _ref2.props,
101
103
  cells = _ref2$props.children,
102
- head = _ref2$props.head;
104
+ head = _ref2$props.head,
105
+ _ref2$props$vAlign = _ref2$props.vAlign,
106
+ vAlign = _ref2$props$vAlign === void 0 ? 'default' : _ref2$props$vAlign;
103
107
  return /*#__PURE__*/React.createElement("tr", {
108
+ key: index,
104
109
  className: cn('row', {
105
- head: head
106
- })
107
- }, React.Children.map(cells, function (_ref3) {
110
+ head: head,
111
+ align: vAlign
112
+ }),
113
+ "data-testid": "Table-row"
114
+ }, React.Children.map(cells, function (_ref3, cellIndex) {
108
115
  var cell = _ref3.props.children;
109
116
  return /*#__PURE__*/React.createElement("td", {
117
+ key: cellIndex,
110
118
  className: cn('cell')
111
119
  }, typeof cell === 'string' ? (0, _htmr["default"])(cell) : cell);
112
120
  }));
@@ -120,7 +128,9 @@ var Table = function Table(_ref) {
120
128
  touch: isTouchDevice
121
129
  }, [className])
122
130
  }, /*#__PURE__*/React.createElement("div", {
123
- className: cn('scroll'),
131
+ className: cn('scroll', {
132
+ limit: !disableHeightLimit
133
+ }),
124
134
  ref: scrollRef,
125
135
  onScroll: handleTableScroll
126
136
  }, isTopShadow && /*#__PURE__*/React.createElement("div", {
@@ -140,6 +150,7 @@ Table.propTypes = {
140
150
  className: PropTypes.string,
141
151
  fixColumn: PropTypes.bool,
142
152
  minCellSize: PropTypes.oneOf(['small', 'large']),
153
+ disableHeightLimit: PropTypes.bool,
143
154
  children: PropTypes.arrayOf(PropTypes.element.isRequired).isRequired
144
155
  };
145
156
  var _default = Table;
@@ -3,6 +3,8 @@ import { ITableCell } from './TableCell';
3
3
  export interface ITableRow {
4
4
  /** Ряд таблицы как заголовок */
5
5
  head?: boolean;
6
+ /** Выравнивание по вертикали в ячейках таблицы */
7
+ vAlign?: 'default' | 'bottom' | 'top';
6
8
  children: Array<React.ReactElement<ITableCell>>;
7
9
  }
8
10
  declare const TableRow: React.FC<ITableRow>;
@@ -23,6 +23,8 @@ var TableRow = function TableRow(_ref) {
23
23
  TableRow.propTypes = {
24
24
  // eslint-disable-next-line react/no-unused-prop-types
25
25
  head: PropTypes.bool,
26
+ // eslint-disable-next-line react/no-unused-prop-types
27
+ vAlign: PropTypes.oneOf(['default', 'bottom', 'top']),
26
28
  children: PropTypes.arrayOf(PropTypes.element.isRequired).isRequired
27
29
  };
28
30
  var _default = TableRow;
@@ -18,7 +18,6 @@ export { default as Container } from './components/Container/Container';
18
18
  export { default as DownloadLink } from './components/DownloadLinks/DownloadLink';
19
19
  export { default as DownloadLinks } from './components/DownloadLinks/DownloadLinks';
20
20
  export { default as FaqWrapper } from './components/FaqWrapper/FaqWrapper';
21
- export { default as helpers } from './components/CardsBox/helpers';
22
21
  export { default as Instructions } from './components/Instructions/Instructions';
23
22
  export { default as NotificationBox } from './components/NotificationBox/NotificationBox';
24
23
  export { default as PageTitle } from './components/PageTitle/PageTitle';
package/dist/lib/index.js CHANGED
@@ -123,12 +123,6 @@ Object.defineProperty(exports, "FaqWrapper", {
123
123
  return _FaqWrapper["default"];
124
124
  }
125
125
  });
126
- Object.defineProperty(exports, "helpers", {
127
- enumerable: true,
128
- get: function get() {
129
- return _helpers["default"];
130
- }
131
- });
132
126
  Object.defineProperty(exports, "Instructions", {
133
127
  enumerable: true,
134
128
  get: function get() {
@@ -320,8 +314,6 @@ var _DownloadLinks = _interopRequireDefault(require("./components/DownloadLinks/
320
314
 
321
315
  var _FaqWrapper = _interopRequireDefault(require("./components/FaqWrapper/FaqWrapper"));
322
316
 
323
- var _helpers = _interopRequireDefault(require("./components/CardsBox/helpers"));
324
-
325
317
  var _Instructions = _interopRequireDefault(require("./components/Instructions/Instructions"));
326
318
 
327
319
  var _NotificationBox = _interopRequireDefault(require("./components/NotificationBox/NotificationBox"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@megafon/ui-shared",
3
- "version": "5.0.1",
3
+ "version": "5.2.0",
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.14.0",
51
+ "@megafon/ui-icons": "^2.14.1",
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.2.1",
86
- "@megafon/ui-helpers": "^2.5.2",
85
+ "@megafon/ui-core": "^5.2.2",
86
+ "@megafon/ui-helpers": "^2.5.3",
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": "c69a92daeb0568c343f3ca3b0dc4b2ca6de338d7"
93
+ "gitHead": "03a9bcbea7cad951a3c18033c77696c25427c15e"
94
94
  }