@megafon/ui-shared 3.0.3 → 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 (74) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/es/components/AccordionBox/AccordionBox.d.ts +5 -0
  3. package/dist/es/components/AccordionBox/AccordionBox.js +6 -1
  4. package/dist/es/components/BenefitsIcons/BenefitsIcons.js +1 -1
  5. package/dist/es/components/Breadcrumbs/Breadcrumbs.css +2 -2
  6. package/dist/es/components/Breadcrumbs/Breadcrumbs.d.ts +7 -2
  7. package/dist/es/components/Breadcrumbs/Breadcrumbs.js +48 -18
  8. package/dist/es/components/ButtonBanner/ButtonBanner.d.ts +1 -0
  9. package/dist/es/components/ButtonBanner/ButtonBanner.js +5 -1
  10. package/dist/es/components/ButtonLinkBox/ButtonLinkBox.d.ts +2 -0
  11. package/dist/es/components/ButtonLinkBox/ButtonLinkBox.js +9 -1
  12. package/dist/es/components/Card/Card.d.ts +4 -2
  13. package/dist/es/components/Card/Card.js +16 -6
  14. package/dist/es/components/DownloadLinks/DownloadLink.css +1 -1
  15. package/dist/es/components/DownloadLinks/DownloadLink.d.ts +5 -0
  16. package/dist/es/components/DownloadLinks/DownloadLink.js +14 -6
  17. package/dist/es/components/Instructions/Instructions.d.ts +7 -0
  18. package/dist/es/components/Instructions/Instructions.js +55 -45
  19. package/dist/es/components/PageTitle/PageTitle.d.ts +6 -0
  20. package/dist/es/components/PageTitle/PageTitle.js +15 -4
  21. package/dist/es/components/Partners/Partners.d.ts +5 -4
  22. package/dist/es/components/Partners/Partners.js +15 -7
  23. package/dist/es/components/Property/Property.d.ts +3 -2
  24. package/dist/es/components/Property/Property.js +9 -3
  25. package/dist/es/components/Property/PropertyDescription.js +11 -5
  26. package/dist/es/components/Property/types.d.ts +3 -0
  27. package/dist/es/components/StoreBanner/StoreBanner.d.ts +4 -0
  28. package/dist/es/components/StoreBanner/StoreBanner.js +19 -4
  29. package/dist/es/components/StoreButton/StoreButton.d.ts +1 -1
  30. package/dist/es/components/StoreButton/StoreButton.js +26 -7
  31. package/dist/es/components/Table/Table.css +1 -1
  32. package/dist/es/components/TextWithIcon/TextWithIconItem.d.ts +1 -1
  33. package/dist/es/components/TextWithIcon/TextWithIconItem.js +1 -1
  34. package/dist/es/components/VideoBanner/VideoBanner.d.ts +7 -2
  35. package/dist/es/components/VideoBanner/VideoBanner.js +21 -5
  36. package/dist/es/components/VideoBlock/VideoBlock.d.ts +3 -2
  37. package/dist/es/components/VideoBlock/VideoBlock.js +9 -3
  38. package/dist/lib/components/AccordionBox/AccordionBox.d.ts +5 -0
  39. package/dist/lib/components/AccordionBox/AccordionBox.js +6 -1
  40. package/dist/lib/components/BenefitsIcons/BenefitsIcons.js +1 -1
  41. package/dist/lib/components/Breadcrumbs/Breadcrumbs.css +2 -2
  42. package/dist/lib/components/Breadcrumbs/Breadcrumbs.d.ts +7 -2
  43. package/dist/lib/components/Breadcrumbs/Breadcrumbs.js +49 -17
  44. package/dist/lib/components/ButtonBanner/ButtonBanner.d.ts +1 -0
  45. package/dist/lib/components/ButtonBanner/ButtonBanner.js +5 -1
  46. package/dist/lib/components/ButtonLinkBox/ButtonLinkBox.d.ts +2 -0
  47. package/dist/lib/components/ButtonLinkBox/ButtonLinkBox.js +9 -1
  48. package/dist/lib/components/Card/Card.d.ts +4 -2
  49. package/dist/lib/components/Card/Card.js +16 -6
  50. package/dist/lib/components/DownloadLinks/DownloadLink.css +1 -1
  51. package/dist/lib/components/DownloadLinks/DownloadLink.d.ts +5 -0
  52. package/dist/lib/components/DownloadLinks/DownloadLink.js +13 -5
  53. package/dist/lib/components/Instructions/Instructions.d.ts +7 -0
  54. package/dist/lib/components/Instructions/Instructions.js +55 -44
  55. package/dist/lib/components/PageTitle/PageTitle.d.ts +6 -0
  56. package/dist/lib/components/PageTitle/PageTitle.js +17 -5
  57. package/dist/lib/components/Partners/Partners.d.ts +5 -4
  58. package/dist/lib/components/Partners/Partners.js +15 -7
  59. package/dist/lib/components/Property/Property.d.ts +3 -2
  60. package/dist/lib/components/Property/Property.js +9 -3
  61. package/dist/lib/components/Property/PropertyDescription.js +11 -4
  62. package/dist/lib/components/Property/types.d.ts +3 -0
  63. package/dist/lib/components/StoreBanner/StoreBanner.d.ts +4 -0
  64. package/dist/lib/components/StoreBanner/StoreBanner.js +19 -4
  65. package/dist/lib/components/StoreButton/StoreButton.d.ts +1 -1
  66. package/dist/lib/components/StoreButton/StoreButton.js +30 -9
  67. package/dist/lib/components/Table/Table.css +1 -1
  68. package/dist/lib/components/TextWithIcon/TextWithIconItem.d.ts +1 -1
  69. package/dist/lib/components/TextWithIcon/TextWithIconItem.js +1 -1
  70. package/dist/lib/components/VideoBanner/VideoBanner.d.ts +7 -2
  71. package/dist/lib/components/VideoBanner/VideoBanner.js +21 -5
  72. package/dist/lib/components/VideoBlock/VideoBlock.d.ts +3 -2
  73. package/dist/lib/components/VideoBlock/VideoBlock.js +9 -3
  74. package/package.json +3 -3
@@ -1,10 +1,11 @@
1
1
  import React from 'react';
2
2
  import './Breadcrumbs.less';
3
- declare type ItemType = {
4
- component?: React.ReactElement;
3
+ declare type ItemObjectType = {
5
4
  title?: string;
6
5
  href?: string;
6
+ component?: React.ReactElement;
7
7
  };
8
+ declare type ItemType = JSX.Element | ItemObjectType;
8
9
  export declare const TextColor: {
9
10
  readonly DEFAULT: "default";
10
11
  readonly BLACK: "black";
@@ -12,6 +13,10 @@ export declare const TextColor: {
12
13
  };
13
14
  declare type TextColorType = typeof TextColor[keyof typeof TextColor];
14
15
  export declare type Props = {
16
+ dataAttrs?: {
17
+ root?: Record<string, string>;
18
+ link?: Record<string, string>;
19
+ };
15
20
  className?: string;
16
21
  classes?: {
17
22
  item?: string;
@@ -9,6 +9,10 @@ require("core-js/modules/es.array.map");
9
9
 
10
10
  require("core-js/modules/es.object.values");
11
11
 
12
+ require("core-js/modules/es.string.link");
13
+
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
+
12
16
  var _react = _interopRequireDefault(require("react"));
13
17
 
14
18
  var _uiCore = require("@megafon/ui-core");
@@ -25,6 +29,15 @@ var TextColor = {
25
29
  WHITE: 'white'
26
30
  };
27
31
  exports.TextColor = TextColor;
32
+
33
+ function isObjectElement(item) {
34
+ return !_react["default"].isValidElement(item);
35
+ }
36
+
37
+ function isJSXElement(item) {
38
+ return _react["default"].isValidElement(item);
39
+ }
40
+
28
41
  var cn = (0, _uiHelpers.cnCreate)('mfui-breadcrumbs');
29
42
 
30
43
  var Breadcrumbs = function Breadcrumbs(_ref) {
@@ -33,34 +46,53 @@ var Breadcrumbs = function Breadcrumbs(_ref) {
33
46
  color = _ref$color === void 0 ? 'black' : _ref$color,
34
47
  className = _ref.className,
35
48
  _ref$classes = _ref.classes,
36
- classes = _ref$classes === void 0 ? {} : _ref$classes;
37
- return /*#__PURE__*/_react["default"].createElement("div", {
49
+ classes = _ref$classes === void 0 ? {} : _ref$classes,
50
+ dataAttrs = _ref.dataAttrs;
51
+ return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
38
52
  className: cn({
39
53
  color: color
40
54
  }, className)
41
- }, items.map(function (_ref2) {
42
- var component = _ref2.component,
43
- title = _ref2.title,
44
- href = _ref2.href;
45
- return /*#__PURE__*/_react["default"].createElement("div", {
46
- className: cn('item', classes.item),
47
- key: title
48
- }, component, !component && /*#__PURE__*/_react["default"].createElement(_uiCore.TextLink, {
49
- href: href,
50
- color: color
51
- }, component || title));
55
+ }), items.map(function (item, i) {
56
+ if (isJSXElement(item)) {
57
+ return /*#__PURE__*/_react["default"].createElement("div", {
58
+ className: cn('item', classes.item),
59
+ key: i
60
+ }, item);
61
+ }
62
+
63
+ if (isObjectElement(item)) {
64
+ return /*#__PURE__*/_react["default"].createElement("div", {
65
+ className: cn('item', classes.item),
66
+ key: item.component ? i : item.title
67
+ }, item.component || /*#__PURE__*/_react["default"].createElement(_uiCore.TextLink, {
68
+ href: item.href,
69
+ color: color,
70
+ dataAttrs: {
71
+ root: (dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.link) ? (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.link, i + 1)) : undefined
72
+ }
73
+ }, item.title));
74
+ }
75
+
76
+ return null;
52
77
  }));
53
78
  };
54
79
 
55
80
  Breadcrumbs.propTypes = {
81
+ dataAttrs: _propTypes["default"].shape({
82
+ root: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
83
+ link: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired)
84
+ }),
56
85
  className: _propTypes["default"].string,
57
86
  classes: _propTypes["default"].shape({
58
87
  item: _propTypes["default"].string
59
88
  }),
60
- items: _propTypes["default"].arrayOf(_propTypes["default"].shape({
61
- title: _propTypes["default"].string.isRequired,
62
- href: _propTypes["default"].string
63
- }).isRequired).isRequired,
89
+ items: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].element.isRequired), _propTypes["default"].arrayOf(_propTypes["default"].shape({
90
+ title: _propTypes["default"].string,
91
+ href: _propTypes["default"].string,
92
+
93
+ /* @deprecated */
94
+ component: _propTypes["default"].element
95
+ }).isRequired)]).isRequired,
64
96
  color: _propTypes["default"].oneOf(Object.values(TextColor))
65
97
  };
66
98
  var _default = Breadcrumbs;
@@ -19,6 +19,7 @@ export interface IButtonBannerProps {
19
19
  /** Дополнительные data атрибуты к внутренним элементам */
20
20
  dataAttrs?: {
21
21
  root?: Record<string, string>;
22
+ button?: Record<string, string>;
22
23
  };
23
24
  /** Дополнительный css класс для корневого элемента */
24
25
  className?: string;
@@ -71,6 +71,9 @@ var ButtonBanner = function ButtonBanner(_ref) {
71
71
  onButtonClick = _ref.onButtonClick;
72
72
 
73
73
  var buttonElem = /*#__PURE__*/_react["default"].createElement(_uiCore.Button, {
74
+ dataAttrs: {
75
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button
76
+ },
74
77
  className: cn('button', [classes.button]),
75
78
  href: buttonUrl,
76
79
  target: buttonTarget,
@@ -111,7 +114,8 @@ var ButtonBanner = function ButtonBanner(_ref) {
111
114
 
112
115
  ButtonBanner.propTypes = {
113
116
  dataAttrs: PropTypes.shape({
114
- root: PropTypes.objectOf(PropTypes.string.isRequired)
117
+ root: PropTypes.objectOf(PropTypes.string.isRequired),
118
+ button: PropTypes.objectOf(PropTypes.string.isRequired)
115
119
  }),
116
120
  className: PropTypes.string,
117
121
  classes: PropTypes.shape({
@@ -4,6 +4,8 @@ export interface IButtonLinkBoxProps {
4
4
  /** Дополнительные data атрибуты к внутренним элементам */
5
5
  dataAttrs?: {
6
6
  root?: Record<string, string>;
7
+ link?: Record<string, string>;
8
+ button?: Record<string, string>;
7
9
  };
8
10
  /** Дополнительный класс корневого элемента */
9
11
  className?: string;
@@ -54,6 +54,9 @@ var ButtonLinkBox = function ButtonLinkBox(_ref) {
54
54
  }), buttonTitle && /*#__PURE__*/_react["default"].createElement("div", {
55
55
  className: cn('row')
56
56
  }, /*#__PURE__*/_react["default"].createElement(_uiCore.Button, {
57
+ dataAttrs: {
58
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button
59
+ },
57
60
  className: classes.button,
58
61
  href: buttonUrl,
59
62
  theme: buttonColor,
@@ -63,6 +66,9 @@ var ButtonLinkBox = function ButtonLinkBox(_ref) {
63
66
  }, buttonTitle)), linkTitle && /*#__PURE__*/_react["default"].createElement("div", {
64
67
  className: cn('row')
65
68
  }, /*#__PURE__*/_react["default"].createElement(_uiCore.TextLink, {
69
+ dataAttrs: {
70
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.link
71
+ },
66
72
  className: classes.link,
67
73
  href: linkUrl,
68
74
  download: linkDownload,
@@ -74,7 +80,9 @@ var ButtonLinkBox = function ButtonLinkBox(_ref) {
74
80
 
75
81
  ButtonLinkBox.propTypes = {
76
82
  dataAttrs: PropTypes.shape({
77
- root: PropTypes.objectOf(PropTypes.string.isRequired)
83
+ root: PropTypes.objectOf(PropTypes.string.isRequired),
84
+ link: PropTypes.objectOf(PropTypes.string.isRequired),
85
+ button: PropTypes.objectOf(PropTypes.string.isRequired)
78
86
  }),
79
87
  className: PropTypes.string,
80
88
  classes: PropTypes.shape({
@@ -23,9 +23,11 @@ export declare const ObjectFit: {
23
23
  };
24
24
  declare type ObjectFitType = typeof ObjectFit[keyof typeof ObjectFit];
25
25
  export interface ICard {
26
- /** Дата атрибуты для корневого элемента */
26
+ /** Дополнительные data атрибуты к внутренним элементам */
27
27
  dataAttrs?: {
28
- [key: string]: string;
28
+ root?: Record<string, string>;
29
+ link?: Record<string, string>;
30
+ button?: Record<string, string>;
29
31
  };
30
32
  /** Дополнительный класс корневого элемента */
31
33
  className?: string;
@@ -103,12 +103,15 @@ var Card = function Card(_ref) {
103
103
  }
104
104
 
105
105
  return /*#__PURE__*/_react["default"].createElement(_uiCore.TextLink, {
106
- className: cn('link', [classes.link]),
107
106
  href: linkHref,
107
+ download: download,
108
108
  target: linkTarget,
109
- download: download
109
+ dataAttrs: {
110
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.link
111
+ },
112
+ className: cn('link', [classes.link])
110
113
  }, linkTitle);
111
- }, [link, isCardLink, classes]);
114
+ }, [link, isCardLink, classes, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.link]);
112
115
 
113
116
  var renderBtn = _react["default"].useCallback(function () {
114
117
  if (!button || isCardLink) {
@@ -120,12 +123,15 @@ var Card = function Card(_ref) {
120
123
  btnTarget = button.target,
121
124
  buttonDownload = button.download;
122
125
  return /*#__PURE__*/_react["default"].createElement(_uiCore.Button, {
126
+ dataAttrs: {
127
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button
128
+ },
123
129
  className: cn('button', [classes.button]),
124
130
  href: btnHref,
125
131
  target: btnTarget,
126
132
  download: buttonDownload
127
133
  }, btnTitle);
128
- }, [button, isCardLink, classes]);
134
+ }, [button, isCardLink, classes, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button]);
129
135
 
130
136
  var renderBtnsWrapper = _react["default"].useCallback(function () {
131
137
  var btnElem = renderBtn();
@@ -142,7 +148,7 @@ var Card = function Card(_ref) {
142
148
  }, btnElem, linkElem);
143
149
  }, [renderBtn, renderLink, isAlignAvailable, isLeftHAlign]);
144
150
 
145
- return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs), {
151
+ return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
146
152
  className: cn('', {
147
153
  href: !!href,
148
154
  'full-height': isFullHeight,
@@ -162,7 +168,11 @@ var Card = function Card(_ref) {
162
168
  };
163
169
 
164
170
  Card.propTypes = {
165
- dataAttrs: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
171
+ dataAttrs: _propTypes["default"].shape({
172
+ root: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
173
+ link: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
174
+ button: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired)
175
+ }),
166
176
  className: _propTypes["default"].string,
167
177
  classes: _propTypes["default"].shape({
168
178
  root: _propTypes["default"].string,
@@ -32,6 +32,6 @@ h5 {
32
32
  margin: 0;
33
33
  font-size: 12px;
34
34
  line-height: 16px;
35
- color: var(--stcBlack5);
35
+ color: var(--spbSky3);
36
36
  text-transform: uppercase;
37
37
  }
@@ -1,6 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import './DownloadLink.less';
3
3
  export interface IDownloadLink {
4
+ /** Дополнительные data атрибуты к внутренним элементам */
5
+ dataAttrs?: {
6
+ root?: Record<string, string>;
7
+ link?: Record<string, string>;
8
+ };
4
9
  /** Ссылка на корневой элемент */
5
10
  rootRef?: React.Ref<HTMLDivElement>;
6
11
  /** Адресы ссылки */
@@ -46,25 +46,33 @@ var DownloadLink = function DownloadLink(_ref) {
46
46
  className = _ref.className,
47
47
  _ref$classes = _ref.classes,
48
48
  classes = _ref$classes === void 0 ? {} : _ref$classes,
49
- rootRef = _ref.rootRef;
50
- return /*#__PURE__*/React.createElement("div", {
49
+ rootRef = _ref.rootRef,
50
+ dataAttrs = _ref.dataAttrs;
51
+ return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
51
52
  className: cn([className, classes.root]),
52
53
  ref: rootRef
53
- }, /*#__PURE__*/React.createElement("div", {
54
+ }), /*#__PURE__*/React.createElement("div", {
54
55
  className: cn('icon')
55
56
  }, /*#__PURE__*/React.createElement(DownloadIcon, {
56
57
  className: cn('icon-svg')
57
58
  })), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_uiCore.TextLink, {
58
- className: cn('link', [classes.link]),
59
+ download: true,
59
60
  href: href,
60
61
  onClick: onClick,
61
- download: true
62
+ dataAttrs: {
63
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.link
64
+ },
65
+ className: cn('link', [classes.link])
62
66
  }, text), /*#__PURE__*/React.createElement("p", {
63
67
  className: cn('info')
64
68
  }, "".concat(extension).concat(extension && fileSize ? ',' : '', " ").concat(fileSize))));
65
69
  };
66
70
 
67
71
  DownloadLink.propTypes = {
72
+ dataAttrs: PropTypes.shape({
73
+ root: PropTypes.objectOf(PropTypes.string.isRequired),
74
+ link: PropTypes.objectOf(PropTypes.string.isRequired)
75
+ }),
68
76
  rootRef: PropTypes.oneOfType([PropTypes.func, PropTypes.oneOfType([PropTypes.shape({
69
77
  current: PropTypes.elementType
70
78
  }), PropTypes.any])]),
@@ -22,6 +22,13 @@ export declare type InstructionItemType = {
22
22
  isVideo: boolean;
23
23
  };
24
24
  export interface IInstructionsProps {
25
+ /** Дополнительные data атрибуты к внутренним элементам */
26
+ dataAttrs?: {
27
+ root?: Record<string, string>;
28
+ item?: Record<string, string>;
29
+ image?: Record<string, string>;
30
+ mobileItemText?: Record<string, string>;
31
+ };
25
32
  /** Ссылка на корневой элемент */
26
33
  rootRef?: Ref<HTMLDivElement>;
27
34
  /** Дополнительные классы для внутренних элементов */
@@ -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
  /** Список логотипов */