@megafon/ui-shared 3.0.0-beta.9 → 3.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 (95) hide show
  1. package/CHANGELOG.md +48 -67
  2. package/README.md +2 -2
  3. package/dist/es/components/AccordionBox/AccordionBox.d.ts +5 -0
  4. package/dist/es/components/AccordionBox/AccordionBox.js +6 -1
  5. package/dist/es/components/BenefitsIcons/BenefitsIcons.js +1 -1
  6. package/dist/es/components/Breadcrumbs/Breadcrumbs.css +2 -2
  7. package/dist/es/components/Breadcrumbs/Breadcrumbs.d.ts +7 -2
  8. package/dist/es/components/Breadcrumbs/Breadcrumbs.js +48 -18
  9. package/dist/es/components/ButtonBanner/ButtonBanner.d.ts +1 -0
  10. package/dist/es/components/ButtonBanner/ButtonBanner.js +5 -1
  11. package/dist/es/components/ButtonLinkBox/ButtonLinkBox.d.ts +2 -0
  12. package/dist/es/components/ButtonLinkBox/ButtonLinkBox.js +9 -1
  13. package/dist/es/components/Card/Card.d.ts +4 -2
  14. package/dist/es/components/Card/Card.js +16 -6
  15. package/dist/es/components/Container/Container.css +163 -0
  16. package/dist/es/components/DownloadLinks/DownloadLink.css +1 -1
  17. package/dist/es/components/DownloadLinks/DownloadLink.d.ts +5 -0
  18. package/dist/es/components/DownloadLinks/DownloadLink.js +14 -6
  19. package/dist/es/components/Instructions/Instructions.d.ts +7 -0
  20. package/dist/es/components/Instructions/Instructions.js +55 -45
  21. package/dist/es/components/PageTitle/PageTitle.d.ts +6 -0
  22. package/dist/es/components/PageTitle/PageTitle.js +15 -4
  23. package/dist/es/components/Partners/Partners.d.ts +5 -4
  24. package/dist/es/components/Partners/Partners.js +15 -7
  25. package/dist/es/components/Property/Property.d.ts +3 -2
  26. package/dist/es/components/Property/Property.js +9 -3
  27. package/dist/es/components/Property/PropertyDescription.js +11 -5
  28. package/dist/es/components/Property/types.d.ts +3 -0
  29. package/dist/es/components/StoreBanner/StoreBanner.css +21 -22
  30. package/dist/es/components/StoreBanner/StoreBanner.d.ts +4 -0
  31. package/dist/es/components/StoreBanner/StoreBanner.js +19 -4
  32. package/dist/es/components/StoreBanner/doc/img/qr-code.png +0 -0
  33. package/dist/es/components/StoreButton/StoreButton.d.ts +1 -1
  34. package/dist/es/components/StoreButton/StoreButton.js +26 -7
  35. package/dist/es/components/Table/Table.css +1 -1
  36. package/dist/es/components/TextBox/TextBox.css +9 -0
  37. package/dist/es/components/TextWithIcon/TextWithIcon.css +15 -0
  38. package/dist/es/components/TextWithIcon/TextWithIcon.d.ts +19 -0
  39. package/dist/es/components/TextWithIcon/TextWithIcon.js +40 -0
  40. package/dist/es/components/TextWithIcon/TextWithIconItem.css +49 -0
  41. package/dist/es/components/TextWithIcon/TextWithIconItem.d.ts +18 -0
  42. package/dist/es/components/TextWithIcon/TextWithIconItem.js +35 -0
  43. package/dist/es/components/VideoBanner/VideoBanner.d.ts +7 -2
  44. package/dist/es/components/VideoBanner/VideoBanner.js +21 -5
  45. package/dist/es/components/VideoBlock/VideoBlock.d.ts +4 -3
  46. package/dist/es/components/VideoBlock/VideoBlock.js +12 -6
  47. package/dist/es/index.d.ts +2 -0
  48. package/dist/es/index.js +2 -0
  49. package/dist/lib/components/AccordionBox/AccordionBox.d.ts +5 -0
  50. package/dist/lib/components/AccordionBox/AccordionBox.js +6 -1
  51. package/dist/lib/components/BenefitsIcons/BenefitsIcons.js +1 -1
  52. package/dist/lib/components/Breadcrumbs/Breadcrumbs.css +2 -2
  53. package/dist/lib/components/Breadcrumbs/Breadcrumbs.d.ts +7 -2
  54. package/dist/lib/components/Breadcrumbs/Breadcrumbs.js +49 -17
  55. package/dist/lib/components/ButtonBanner/ButtonBanner.d.ts +1 -0
  56. package/dist/lib/components/ButtonBanner/ButtonBanner.js +5 -1
  57. package/dist/lib/components/ButtonLinkBox/ButtonLinkBox.d.ts +2 -0
  58. package/dist/lib/components/ButtonLinkBox/ButtonLinkBox.js +9 -1
  59. package/dist/lib/components/Card/Card.d.ts +4 -2
  60. package/dist/lib/components/Card/Card.js +16 -6
  61. package/dist/lib/components/Container/Container.css +163 -0
  62. package/dist/lib/components/DownloadLinks/DownloadLink.css +1 -1
  63. package/dist/lib/components/DownloadLinks/DownloadLink.d.ts +5 -0
  64. package/dist/lib/components/DownloadLinks/DownloadLink.js +13 -5
  65. package/dist/lib/components/Instructions/Instructions.d.ts +7 -0
  66. package/dist/lib/components/Instructions/Instructions.js +55 -44
  67. package/dist/lib/components/PageTitle/PageTitle.d.ts +6 -0
  68. package/dist/lib/components/PageTitle/PageTitle.js +17 -5
  69. package/dist/lib/components/Partners/Partners.d.ts +5 -4
  70. package/dist/lib/components/Partners/Partners.js +15 -7
  71. package/dist/lib/components/Property/Property.d.ts +3 -2
  72. package/dist/lib/components/Property/Property.js +9 -3
  73. package/dist/lib/components/Property/PropertyDescription.js +11 -4
  74. package/dist/lib/components/Property/types.d.ts +3 -0
  75. package/dist/lib/components/StoreBanner/StoreBanner.css +21 -22
  76. package/dist/lib/components/StoreBanner/StoreBanner.d.ts +4 -0
  77. package/dist/lib/components/StoreBanner/StoreBanner.js +19 -4
  78. package/dist/lib/components/StoreBanner/doc/img/qr-code.png +0 -0
  79. package/dist/lib/components/StoreButton/StoreButton.d.ts +1 -1
  80. package/dist/lib/components/StoreButton/StoreButton.js +30 -9
  81. package/dist/lib/components/Table/Table.css +1 -1
  82. package/dist/lib/components/TextBox/TextBox.css +9 -0
  83. package/dist/lib/components/TextWithIcon/TextWithIcon.css +15 -0
  84. package/dist/lib/components/TextWithIcon/TextWithIcon.d.ts +19 -0
  85. package/dist/lib/components/TextWithIcon/TextWithIcon.js +60 -0
  86. package/dist/lib/components/TextWithIcon/TextWithIconItem.css +49 -0
  87. package/dist/lib/components/TextWithIcon/TextWithIconItem.d.ts +18 -0
  88. package/dist/lib/components/TextWithIcon/TextWithIconItem.js +54 -0
  89. package/dist/lib/components/VideoBanner/VideoBanner.d.ts +7 -2
  90. package/dist/lib/components/VideoBanner/VideoBanner.js +21 -5
  91. package/dist/lib/components/VideoBlock/VideoBlock.d.ts +4 -3
  92. package/dist/lib/components/VideoBlock/VideoBlock.js +12 -6
  93. package/dist/lib/index.d.ts +2 -0
  94. package/dist/lib/index.js +16 -0
  95. package/package.json +5 -5
@@ -7,6 +7,8 @@ exports["default"] = exports.pictureMaskTypes = exports.pictureAlignTypes = void
7
7
 
8
8
  require("core-js/modules/es.array.map");
9
9
 
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
10
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
13
 
12
14
  var _react = _interopRequireDefault(require("react"));
@@ -45,7 +47,8 @@ var cn = (0, _uiHelpers.cnCreate)('mfui-instructions');
45
47
  var swiperSlideCn = cn('slide');
46
48
 
47
49
  var Instructions = function Instructions(_ref) {
48
- var rootRef = _ref.rootRef,
50
+ var dataAttrs = _ref.dataAttrs,
51
+ rootRef = _ref.rootRef,
49
52
  _ref$classes = _ref.classes;
50
53
  _ref$classes = _ref$classes === void 0 ? {} : _ref$classes;
51
54
  var instructionItem = _ref$classes.instructionItem,
@@ -95,37 +98,38 @@ var Instructions = function Instructions(_ref) {
95
98
  };
96
99
  }, [swiperInstance]);
97
100
 
98
- var renderVideo = _react["default"].useCallback(function (mediaUrl) {
99
- return /*#__PURE__*/_react["default"].createElement("video", {
100
- className: cn('swiper-img'),
101
- autoPlay: true,
102
- muted: true,
101
+ var renderVideo = _react["default"].useCallback(function (mediaUrl, index) {
102
+ return /*#__PURE__*/_react["default"].createElement("video", (0, _extends2["default"])({
103
103
  loop: true,
104
- playsInline: true
105
- }, /*#__PURE__*/_react["default"].createElement("source", {
104
+ muted: true,
105
+ autoPlay: true,
106
+ playsInline: true,
107
+ className: cn('swiper-img')
108
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.image, index + 1)), /*#__PURE__*/_react["default"].createElement("source", {
106
109
  src: mediaUrl,
107
110
  type: "video/mp4"
108
111
  }));
109
- }, []);
112
+ }, [dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.image]);
110
113
 
111
114
  var renderSlider = _react["default"].useCallback(function () {
112
115
  return /*#__PURE__*/_react["default"].createElement(_react2.Swiper, {
113
116
  className: cn('swiper'),
114
117
  onSwiper: getSwiperInstance,
115
118
  noSwipingClass: swiperSlideCn
116
- }, instructionItems.map(function (_ref2, ind) {
119
+ }, instructionItems.map(function (_ref2, i) {
117
120
  var mediaUrl = _ref2.mediaUrl,
118
121
  isVideo = _ref2.isVideo;
119
122
  return /*#__PURE__*/_react["default"].createElement(_react2.SwiperSlide, {
120
123
  className: swiperSlideCn,
121
- key: ind + mediaUrl
122
- }, isVideo ? renderVideo(mediaUrl) : /*#__PURE__*/_react["default"].createElement("img", {
123
- className: cn('swiper-img', [instructionItemImg]),
124
- src: mediaUrl,
125
- alt: ""
126
- }));
124
+ key: i + mediaUrl
125
+ }, isVideo ? renderVideo(mediaUrl, i) : /*#__PURE__*/_react["default"].createElement("img", (0, _extends2["default"])({
126
+ alt: "",
127
+ src: mediaUrl
128
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.image, i + 1), {
129
+ className: cn('swiper-img', [instructionItemImg])
130
+ })));
127
131
  }));
128
- }, [getSwiperInstance, instructionItemImg, instructionItems, renderVideo]);
132
+ }, [getSwiperInstance, instructionItemImg, instructionItems, renderVideo, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.image]);
129
133
 
130
134
  var renderTitle = _react["default"].useCallback(function (resolution) {
131
135
  return /*#__PURE__*/_react["default"].createElement(_uiCore.Header, {
@@ -161,28 +165,28 @@ var Instructions = function Instructions(_ref) {
161
165
  'text-after': !!text,
162
166
  desktop: true
163
167
  })
164
- }, instructionItems.map(function (_ref3, ind) {
168
+ }, instructionItems.map(function (_ref3, i) {
165
169
  var itemTitle = _ref3.title;
166
170
  return (
167
171
  /*#__PURE__*/
168
172
  // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
169
- _react["default"].createElement("li", {
173
+ _react["default"].createElement("li", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.item, i + 1), {
170
174
  className: cn('articles-item', {
171
- active: slideIndex === ind
172
- }, [getActiveCustomClass(ind, slideIndex), instructionItem, desktopInstructionItem]),
173
- "data-index": ind,
174
- onClick: handleArticleClick(ind),
175
- key: ind
176
- }, /*#__PURE__*/_react["default"].createElement("div", {
175
+ active: slideIndex === i
176
+ }, [getActiveCustomClass(i, slideIndex), instructionItem, desktopInstructionItem]),
177
+ "data-index": i,
178
+ onClick: handleArticleClick(i),
179
+ key: i
180
+ }), /*#__PURE__*/_react["default"].createElement("div", {
177
181
  className: cn('articles-item-dot')
178
182
  }, /*#__PURE__*/_react["default"].createElement("span", {
179
183
  className: cn('articles-item-dot-number')
180
- }, ind + 1)), /*#__PURE__*/_react["default"].createElement("div", {
184
+ }, i + 1)), /*#__PURE__*/_react["default"].createElement("div", {
181
185
  className: cn('articles-item-title', [desktopItemTitle])
182
186
  }, itemTitle))
183
187
  );
184
188
  }));
185
- }, [desktopInstructionItem, desktopItemTitle, getActiveCustomClass, handleArticleClick, instructionItem, instructionItems, slideIndex, text]);
189
+ }, [desktopInstructionItem, desktopItemTitle, getActiveCustomClass, handleArticleClick, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.item, instructionItem, instructionItems, slideIndex, text]);
186
190
 
187
191
  var renderMobileArticles = _react["default"].useCallback(function () {
188
192
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -191,36 +195,37 @@ var Instructions = function Instructions(_ref) {
191
195
  })
192
196
  }, /*#__PURE__*/_react["default"].createElement("div", {
193
197
  className: cn('articles-title-block')
194
- }, instructionItems.map(function (_ref4, ind) {
198
+ }, instructionItems.map(function (_ref4, i) {
195
199
  var itemTitle = _ref4.title;
196
- return slideIndex === ind && /*#__PURE__*/_react["default"].createElement("div", {
197
- className: cn('articles-title', [mobileItemTitle]),
198
- "data-index": ind,
199
- key: ind
200
- }, itemTitle);
200
+ return slideIndex === i && /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
201
+ key: i,
202
+ "data-index": i
203
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.mobileItemText, i + 1), {
204
+ className: cn('articles-title', [mobileItemTitle])
205
+ }), itemTitle);
201
206
  })), /*#__PURE__*/_react["default"].createElement("ul", {
202
207
  className: cn('articles-dots', {
203
208
  'text-after': !!text
204
209
  })
205
- }, instructionItems.map(function (_item, ind) {
206
- return /*#__PURE__*/_react["default"].createElement("div", {
207
- key: ind,
210
+ }, instructionItems.map(function (_item, i) {
211
+ return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.item, i + 1), {
212
+ key: i,
208
213
  className: cn('articles-dot', {
209
- active: slideIndex === ind
210
- }, [getActiveCustomClass(ind, slideIndex), instructionItem, mobileInstructionItem]),
211
- onClick: handleArticleClick(ind)
212
- }, /*#__PURE__*/_react["default"].createElement("span", {
214
+ active: slideIndex === i
215
+ }, [getActiveCustomClass(i, slideIndex), instructionItem, mobileInstructionItem]),
216
+ onClick: handleArticleClick(i)
217
+ }), /*#__PURE__*/_react["default"].createElement("span", {
213
218
  className: cn('articles-dot-number')
214
- }, ind + 1));
219
+ }, i + 1));
215
220
  })));
216
- }, [getActiveCustomClass, handleArticleClick, instructionItem, instructionItems, mobileInstructionItem, mobileItemTitle, slideIndex, text]);
221
+ }, [dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.mobileItemText, getActiveCustomClass, handleArticleClick, instructionItem, instructionItems, mobileInstructionItem, mobileItemTitle, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.item, slideIndex, text]);
217
222
 
218
- return /*#__PURE__*/_react["default"].createElement("div", {
223
+ return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
219
224
  className: cn({
220
225
  mask: pictureMask
221
226
  }),
222
227
  ref: rootRef
223
- }, /*#__PURE__*/_react["default"].createElement(_uiCore.Grid, {
228
+ }), /*#__PURE__*/_react["default"].createElement(_uiCore.Grid, {
224
229
  hAlign: "center"
225
230
  }, /*#__PURE__*/_react["default"].createElement(_uiCore.GridColumn, {
226
231
  all: "12"
@@ -238,6 +243,12 @@ var Instructions = function Instructions(_ref) {
238
243
  };
239
244
 
240
245
  Instructions.propTypes = {
246
+ dataAttrs: _propTypes["default"].shape({
247
+ root: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
248
+ item: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
249
+ image: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
250
+ mobileItemText: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired)
251
+ }),
241
252
  rootRef: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].oneOfType([_propTypes["default"].shape({
242
253
  current: _propTypes["default"].elementType
243
254
  }), _propTypes["default"].any])]),
@@ -2,6 +2,12 @@ import * as React from 'react';
2
2
  import './PageTitle.less';
3
3
  import { Props as BreadcrumbsType } from '../Breadcrumbs/Breadcrumbs';
4
4
  declare type Props = {
5
+ /** Дополнительные data атрибуты к внутренним элементам */
6
+ dataAttrs?: {
7
+ root?: Record<string, string>;
8
+ breadcrumbs?: Record<string, string>;
9
+ breadcrumbsLink?: Record<string, string>;
10
+ };
5
11
  /** Текст заголовка */
6
12
  title: string | React.ReactNode | React.ReactNode[];
7
13
  /** Хлебные крошки */
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
 
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
10
12
  var React = _interopRequireWildcard(require("react"));
11
13
 
12
14
  var _uiCore = require("@megafon/ui-core");
@@ -17,16 +19,17 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
17
19
 
18
20
  var _Breadcrumbs = _interopRequireDefault(require("../Breadcrumbs/Breadcrumbs"));
19
21
 
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
-
22
22
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
23
23
 
24
24
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
25
25
 
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
27
+
26
28
  var cn = (0, _uiHelpers.cnCreate)('mfui-page-title');
27
29
 
28
30
  var PageTitle = function PageTitle(_ref) {
29
- var title = _ref.title,
31
+ var dataAttrs = _ref.dataAttrs,
32
+ title = _ref.title,
30
33
  breadcrumbs = _ref.breadcrumbs,
31
34
  badge = _ref.badge,
32
35
  _ref$isFullWidth = _ref.isFullWidth,
@@ -56,16 +59,25 @@ var PageTitle = function PageTitle(_ref) {
56
59
  mobile: "12"
57
60
  }, renderPageTitle()));
58
61
  }, [renderPageTitle]);
59
- return /*#__PURE__*/React.createElement("div", {
62
+ return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
60
63
  className: cn([className]),
61
64
  ref: rootRef
62
- }, (breadcrumbs === null || breadcrumbs === void 0 ? void 0 : breadcrumbs.length) && /*#__PURE__*/React.createElement(_Breadcrumbs["default"], {
65
+ }), (breadcrumbs === null || breadcrumbs === void 0 ? void 0 : breadcrumbs.length) && /*#__PURE__*/React.createElement(_Breadcrumbs["default"], {
63
66
  items: breadcrumbs,
67
+ dataAttrs: {
68
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.breadcrumbs,
69
+ link: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.breadcrumbsLink
70
+ },
64
71
  className: cn('breadcrumbs', [classes.breadcrumbs])
65
72
  }), isFullWidth ? renderPageTitle() : renderPageTitleWithGrid());
66
73
  };
67
74
 
68
75
  PageTitle.propTypes = {
76
+ dataAttrs: _propTypes["default"].shape({
77
+ root: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
78
+ breadcrumbs: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
79
+ breadcrumbsLink: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired)
80
+ }),
69
81
  title: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].node, _propTypes["default"].arrayOf(_propTypes["default"].node)]).isRequired,
70
82
  breadcrumbs: _propTypes["default"].arrayOf(_propTypes["default"].shape({
71
83
  title: _propTypes["default"].string.isRequired,
@@ -6,6 +6,11 @@ export declare type ItemType = {
6
6
  alt: string;
7
7
  };
8
8
  export interface IPartnersProps {
9
+ /** Дополнительные data атрибуты к внутренним элементам */
10
+ dataAttrs?: {
11
+ root?: Record<string, string>;
12
+ item?: Record<string, string>;
13
+ };
9
14
  /** Ссылка на корневой элемент */
10
15
  rootRef?: React.Ref<HTMLDivElement>;
11
16
  /** Дополнительные классы для корневого и внутренних элементов */
@@ -13,10 +18,6 @@ export interface IPartnersProps {
13
18
  root?: string;
14
19
  itemClass?: string;
15
20
  };
16
- /** Дата атрибуты для корневого элемента */
17
- dataAttrs?: {
18
- [key: string]: string;
19
- };
20
21
  /** Дополнительный класс корневого элемента */
21
22
  className?: string;
22
23
  /** Список логотипов */
@@ -57,6 +57,8 @@ var Partners = function Partners(_ref) {
57
57
  onNextClick = _ref.onNextClick,
58
58
  onPrevClick = _ref.onPrevClick;
59
59
  var renderItem = React.useCallback(function (item) {
60
+ var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
61
+
60
62
  if (!item) {
61
63
  return null;
62
64
  }
@@ -65,10 +67,13 @@ var Partners = function Partners(_ref) {
65
67
  href = item.href,
66
68
  alt = item.alt;
67
69
  return /*#__PURE__*/React.createElement(_uiCore.Tile, {
68
- className: cn('tile'),
69
70
  href: href,
70
71
  shadowLevel: "low",
71
- isInteractive: !!href
72
+ isInteractive: !!href,
73
+ className: cn('tile'),
74
+ dataAttrs: {
75
+ root: (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.item, index + 1))
76
+ }
72
77
  }, /*#__PURE__*/React.createElement("div", {
73
78
  className: cn('tile-inner', [itemClass])
74
79
  }, /*#__PURE__*/React.createElement("div", {
@@ -78,7 +83,7 @@ var Partners = function Partners(_ref) {
78
83
  alt: alt,
79
84
  className: cn('tile-img')
80
85
  }))));
81
- }, [itemClass]);
86
+ }, [itemClass, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.item]);
82
87
  var renderGrid = React.useCallback(function () {
83
88
  return /*#__PURE__*/React.createElement(_uiCore.Grid, {
84
89
  guttersLeft: "medium",
@@ -88,7 +93,7 @@ var Partners = function Partners(_ref) {
88
93
  key: i + item.src,
89
94
  all: "3",
90
95
  mobile: "6"
91
- }, renderItem(item));
96
+ }, renderItem(item, i));
92
97
  }));
93
98
  }, [items, renderItem]);
94
99
  var renderCarousel = React.useCallback(function () {
@@ -104,13 +109,13 @@ var Partners = function Partners(_ref) {
104
109
  return /*#__PURE__*/React.createElement("div", {
105
110
  key: i + item.src,
106
111
  className: cn('slide')
107
- }, renderItem(item), renderItem(bottomRow[i]));
112
+ }, renderItem(item, i), renderItem(bottomRow[i], i));
108
113
  }));
109
114
  }, [items, onChange, onNextClick, onPrevClick, renderItem]);
110
115
  return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({
111
116
  ref: rootRef,
112
117
  className: cn([root, className])
113
- }, (0, _uiHelpers.filterDataAttrs)(dataAttrs)), items.length > MAX_GRID_ITEMS_LENGTH ? renderCarousel() : renderGrid());
118
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root)), items.length > MAX_GRID_ITEMS_LENGTH ? renderCarousel() : renderGrid());
114
119
  };
115
120
 
116
121
  Partners.propTypes = {
@@ -121,7 +126,10 @@ Partners.propTypes = {
121
126
  root: PropTypes.string,
122
127
  itemClass: PropTypes.string
123
128
  }),
124
- dataAttrs: PropTypes.objectOf(PropTypes.string.isRequired),
129
+ dataAttrs: PropTypes.shape({
130
+ root: PropTypes.objectOf(PropTypes.string.isRequired),
131
+ item: PropTypes.objectOf(PropTypes.string.isRequired)
132
+ }),
125
133
  className: PropTypes.string,
126
134
  items: PropTypes.arrayOf(PropTypes.shape({
127
135
  href: PropTypes.string,
@@ -18,9 +18,10 @@ export interface IProperty {
18
18
  icon?: React.ReactNode;
19
19
  /** Растягивание компонента на всю доступную ширину */
20
20
  fullWidth?: boolean;
21
- /** Дата атрибуты для корневого элемента */
21
+ /** Дополнительные data атрибуты к внутренним элементам */
22
22
  dataAttrs?: {
23
- [key: string]: string;
23
+ root?: Record<string, string>;
24
+ moreLink?: Record<string, string>;
24
25
  };
25
26
  /** Дополнительные классы для внутренних элементов */
26
27
  classes?: {
@@ -66,13 +66,16 @@ var Property = function Property(_ref) {
66
66
  }, /*#__PURE__*/_react["default"].createElement(_PropertyDescription["default"], {
67
67
  value: value,
68
68
  isCollapsible: isCollapsible,
69
+ dataAttrs: {
70
+ moreLink: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.moreLink
71
+ },
69
72
  classes: {
70
73
  open: classes.openedDescription,
71
74
  toggle: classes.toggleDescription
72
75
  }
73
76
  }));
74
77
  });
75
- }, [classes.openedDescription, classes.toggleDescription]);
78
+ }, [classes.openedDescription, classes.toggleDescription, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.moreLink]);
76
79
 
77
80
  var getColumnConfig = _react["default"].useCallback(function () {
78
81
  return fullWidth ? {
@@ -90,7 +93,7 @@ var Property = function Property(_ref) {
90
93
  'border-bottom': borderBottom
91
94
  }, [className]),
92
95
  ref: rootRef
93
- }, (0, _uiHelpers.filterDataAttrs)(dataAttrs)), /*#__PURE__*/_react["default"].createElement(_uiCore.Grid, null, /*#__PURE__*/_react["default"].createElement(_uiCore.GridColumn, getColumnConfig(), /*#__PURE__*/_react["default"].createElement("div", {
96
+ }, (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, getColumnConfig(), /*#__PURE__*/_react["default"].createElement("div", {
94
97
  className: cn('wrapper')
95
98
  }, badge && /*#__PURE__*/_react["default"].createElement("div", {
96
99
  className: cn('badge-wrapper')
@@ -141,7 +144,10 @@ Property.propTypes = {
141
144
  mergedValue: _propTypes["default"].string,
142
145
  icon: _propTypes["default"].node,
143
146
  fullWidth: _propTypes["default"].bool,
144
- dataAttrs: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
147
+ dataAttrs: _propTypes["default"].shape({
148
+ root: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
149
+ moreLink: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired)
150
+ }),
145
151
  classes: _propTypes["default"].shape({
146
152
  title: _propTypes["default"].string,
147
153
  openedDescription: _propTypes["default"].string,
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
 
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
10
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
13
 
12
14
  var React = _interopRequireWildcard(require("react"));
@@ -33,7 +35,8 @@ var PropertyDescription = function PropertyDescription(_ref) {
33
35
  _ref$isCollapsible = _ref.isCollapsible,
34
36
  isCollapsible = _ref$isCollapsible === void 0 ? false : _ref$isCollapsible,
35
37
  _ref$classes = _ref.classes,
36
- classes = _ref$classes === void 0 ? {} : _ref$classes;
38
+ classes = _ref$classes === void 0 ? {} : _ref$classes,
39
+ dataAttrs = _ref.dataAttrs;
37
40
 
38
41
  var _React$useState = React.useState(false),
39
42
  _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
@@ -47,10 +50,11 @@ var PropertyDescription = function PropertyDescription(_ref) {
47
50
  if (isCollapsible) {
48
51
  return /*#__PURE__*/React.createElement("div", {
49
52
  className: cn([isOpened ? classes.open : undefined])
50
- }, /*#__PURE__*/React.createElement("span", {
51
- className: cn('collapse', classes.toggle),
53
+ }, /*#__PURE__*/React.createElement("span", (0, _extends2["default"])({
52
54
  onClick: handleClickDesc
53
- }, isOpened ? 'Скрыть' : 'Подробнее'), /*#__PURE__*/React.createElement(_uiCore.Collapse, {
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
58
  className: cn('content'),
55
59
  classNameContainer: cn('content-inner'),
56
60
  isOpened: isOpened
@@ -68,6 +72,9 @@ PropertyDescription.propTypes = {
68
72
  classes: _propTypes["default"].shape({
69
73
  open: _propTypes["default"].string,
70
74
  toggle: _propTypes["default"].string
75
+ }),
76
+ dataAttrs: _propTypes["default"].shape({
77
+ moreLink: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired)
71
78
  })
72
79
  };
73
80
  var _default = PropertyDescription;
@@ -6,6 +6,9 @@ export declare type Desc = {
6
6
  toggle?: string;
7
7
  open?: string;
8
8
  };
9
+ dataAttrs?: {
10
+ moreLink?: Record<string, string>;
11
+ };
9
12
  };
10
13
  export declare type Item = {
11
14
  title?: string[] | React.ReactNode[];
@@ -159,7 +159,16 @@ h5 {
159
159
  display: flex;
160
160
  }
161
161
  .mfui-store-banner__qr-code {
162
+ -ms-flex-item-align: center;
163
+ align-self: center;
164
+ -webkit-box-sizing: border-box;
165
+ box-sizing: border-box;
166
+ width: 90px;
167
+ height: 90px;
162
168
  margin-right: 16px;
169
+ border: 1px solid var(--spbSky1);
170
+ border-radius: 8px;
171
+ background-color: var(--base);
163
172
  }
164
173
  @media screen and (max-width: 767px) {
165
174
  .mfui-store-banner__qr-code {
@@ -180,6 +189,9 @@ h5 {
180
189
  .mfui-store-banner__store-link {
181
190
  width: 136px;
182
191
  height: 40px;
192
+ margin-right: 8px;
193
+ margin-bottom: 10px;
194
+ margin-left: 8px;
183
195
  }
184
196
  @media screen and (max-width: 767px) {
185
197
  .mfui-store-banner__store-link {
@@ -187,9 +199,8 @@ h5 {
187
199
  height: 35px;
188
200
  }
189
201
  }
190
- .mfui-store-banner__store-link:not(:last-child) {
191
- margin-right: 16px;
192
- margin-bottom: 10px;
202
+ .mfui-store-banner__store-link:last-child {
203
+ margin-bottom: 0;
193
204
  }
194
205
  .mfui-store-banner__stores {
195
206
  display: -webkit-box;
@@ -208,6 +219,11 @@ h5 {
208
219
  justify-content: center;
209
220
  }
210
221
  }
222
+ @media screen and (min-width: 768px) {
223
+ .mfui-store-banner__stores {
224
+ margin-left: -8px;
225
+ }
226
+ }
211
227
  .mfui-store-banner__text {
212
228
  margin-bottom: 32px;
213
229
  }
@@ -229,16 +245,10 @@ h5 {
229
245
  -o-object-fit: contain;
230
246
  object-fit: contain;
231
247
  }
232
- @media screen and (min-width: 768px) and (max-width: 1023px) {
233
- .mfui-store-banner__links_three .mfui-store-banner__qr-code {
234
- width: 120px;
235
- height: 120px;
236
- }
237
- }
238
248
  @media screen and (min-width: 1280px) {
239
249
  .mfui-store-banner__links_three .mfui-store-banner__qr-code {
240
- max-width: 88px;
241
- max-height: 88px;
250
+ max-width: 90px;
251
+ max-height: 90px;
242
252
  }
243
253
  }
244
254
  .mfui-store-banner__links_three .mfui-store-banner__qr-code + .mfui-store-banner__stores {
@@ -260,12 +270,6 @@ h5 {
260
270
  margin: 0 auto;
261
271
  }
262
272
  }
263
- .mfui-store-banner__links_three .mfui-store-banner__qr-code + .mfui-store-banner__stores .mfui-store-banner__store-link {
264
- margin-right: 16px;
265
- }
266
- .mfui-store-banner__links_three .mfui-store-banner__qr-code + .mfui-store-banner__stores .mfui-store-banner__store-link:not(:first-child) {
267
- margin-right: 0;
268
- }
269
273
  .mfui-store-banner__links_three .mfui-store-banner__store-link {
270
274
  width: 136px;
271
275
  height: 40px;
@@ -284,8 +288,3 @@ h5 {
284
288
  margin-bottom: 16px;
285
289
  }
286
290
  }
287
- @media screen and (max-width: 1023px) {
288
- .mfui-store-banner__links_three .mfui-store-banner__store-link:not(:first-child) {
289
- margin-right: 0;
290
- }
291
- }
@@ -59,6 +59,10 @@ export interface IStoreBannerProps {
59
59
  /** Дополнительные data атрибуты к внутренним элементам */
60
60
  dataAttrs?: {
61
61
  root?: Record<string, string>;
62
+ button?: Record<string, string>;
63
+ linkApple?: Record<string, string>;
64
+ linkGoogle?: Record<string, string>;
65
+ linkHuawei?: Record<string, string>;
62
66
  };
63
67
  }
64
68
  declare const StoreBanner: React.FC<IStoreBannerProps>;
@@ -40,7 +40,6 @@ var DeviceMask = {
40
40
  WHITE_IPHONE: 'white-iphone'
41
41
  };
42
42
  exports.DeviceMask = DeviceMask;
43
- var DEFAULT_TEXT_BUTTON = 'Установите приложение';
44
43
  var cn = (0, _uiHelpers.cnCreate)('mfui-store-banner');
45
44
 
46
45
  var StoreBanner = function StoreBanner(_ref) {
@@ -58,11 +57,11 @@ var StoreBanner = function StoreBanner(_ref) {
58
57
  linkHuawei = _ref.linkHuawei,
59
58
  linkButton = _ref.linkButton,
60
59
  _ref$textButton = _ref.textButton,
61
- textButton = _ref$textButton === void 0 ? DEFAULT_TEXT_BUTTON : _ref$textButton,
60
+ textButton = _ref$textButton === void 0 ? 'Установите приложение' : _ref$textButton,
62
61
  qrCode = _ref.qrCode,
63
62
  imageSrc = _ref.imageSrc,
64
63
  _ref$theme = _ref.theme,
65
- theme = _ref$theme === void 0 ? Theme.DEFAULT : _ref$theme,
64
+ theme = _ref$theme === void 0 ? 'default' : _ref$theme,
66
65
  deviceMask = _ref.deviceMask,
67
66
  rootRef = _ref.rootRef,
68
67
  dataAttrs = _ref.dataAttrs,
@@ -104,6 +103,9 @@ var StoreBanner = function StoreBanner(_ref) {
104
103
  }), !linkButton && /*#__PURE__*/React.createElement("div", {
105
104
  className: cn('stores')
106
105
  }, linkApple && /*#__PURE__*/React.createElement(_StoreButton["default"], {
106
+ dataAttrs: {
107
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.linkApple
108
+ },
107
109
  theme: _StoreButton.Theme.APP_STORE,
108
110
  href: linkApple,
109
111
  onClick: onClickApple,
@@ -111,6 +113,9 @@ var StoreBanner = function StoreBanner(_ref) {
111
113
  'app-store': true
112
114
  }, appleLinkClassName)
113
115
  }), linkGoogle && /*#__PURE__*/React.createElement(_StoreButton["default"], {
116
+ dataAttrs: {
117
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.linkGoogle
118
+ },
114
119
  theme: _StoreButton.Theme.GOOGLE_PLAY,
115
120
  href: linkGoogle,
116
121
  className: cn('store-link', {
@@ -118,6 +123,9 @@ var StoreBanner = function StoreBanner(_ref) {
118
123
  }, googleLinkClassName),
119
124
  onClick: onClickGoogle
120
125
  }), linkHuawei && /*#__PURE__*/React.createElement(_StoreButton["default"], {
126
+ dataAttrs: {
127
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.linkHuawei
128
+ },
121
129
  theme: _StoreButton.Theme.HUAWEI_STORE,
122
130
  href: linkHuawei,
123
131
  className: cn('store-link', {
@@ -125,6 +133,9 @@ var StoreBanner = function StoreBanner(_ref) {
125
133
  }, huaweiLinkClassName),
126
134
  onClick: onClickHuawei
127
135
  })), linkButton && /*#__PURE__*/React.createElement(_uiCore.Button, {
136
+ dataAttrs: {
137
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button
138
+ },
128
139
  className: cn('button'),
129
140
  href: linkButton,
130
141
  theme: theme === 'green' ? 'purple' : 'green'
@@ -164,7 +175,11 @@ StoreBanner.propTypes = {
164
175
  }), _propTypes["default"].any])]),
165
176
  theme: _propTypes["default"].oneOf(Object.values(Theme)),
166
177
  dataAttrs: _propTypes["default"].shape({
167
- root: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired)
178
+ root: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
179
+ button: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
180
+ linkApple: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
181
+ linkGoogle: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
182
+ linkHuawei: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired)
168
183
  })
169
184
  };
170
185
  var _default = StoreBanner;
@@ -7,7 +7,7 @@ export declare enum Theme {
7
7
  HUAWEI_STORE = "huawei-store"
8
8
  }
9
9
  declare type LinkPropTypes = React.ComponentProps<typeof Link>;
10
- export declare type Props = Required<Pick<LinkPropTypes, 'href'>> & Pick<LinkPropTypes, 'onClick'> & {
10
+ export declare type Props = Required<Pick<LinkPropTypes, 'href'>> & Pick<LinkPropTypes, 'onClick' | 'dataAttrs'> & {
11
11
  /** Тема кнопки */
12
12
  theme: Theme;
13
13
  /** Дополнительный класс */