@megafon/ui-shared 5.4.1 → 5.4.2

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [5.4.2](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-shared@5.4.1...@megafon/ui-shared@5.4.2) (2024-01-22)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **card:** fix features list ([0fef3cb](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/0fef3cb3609c50e97edba24074562a13f72ffa55))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [5.4.1](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-shared@5.4.0...@megafon/ui-shared@5.4.1) (2024-01-15)
7
18
 
8
19
  **Note:** Version bump only for package @megafon/ui-shared
@@ -130,27 +130,58 @@ h5 {
130
130
  flex-direction: column;
131
131
  gap: 12px;
132
132
  margin-top: 16px;
133
+ overflow: hidden;
134
+ }
135
+ .mfui-card__features-list {
136
+ margin: 0;
137
+ padding: 0;
138
+ list-style: none;
133
139
  }
134
140
  .mfui-card__features-item {
141
+ position: relative;
135
142
  display: -webkit-box;
136
143
  display: -ms-flexbox;
137
144
  display: flex;
138
- gap: 4px;
139
- -webkit-box-align: baseline;
140
- -ms-flex-align: baseline;
141
- align-items: baseline;
145
+ -webkit-box-align: end;
146
+ -ms-flex-align: end;
147
+ align-items: flex-end;
142
148
  -webkit-box-pack: justify;
143
149
  -ms-flex-pack: justify;
144
150
  justify-content: space-between;
145
151
  }
146
- .mfui-card__features-item-separator {
147
- -webkit-box-flex: 1;
148
- -ms-flex-positive: 1;
149
- flex-grow: 1;
152
+ .mfui-card__features-item:before {
153
+ content: '';
154
+ position: absolute;
155
+ bottom: 0.4em;
156
+ width: 100%;
150
157
  height: 2px;
151
158
  background-image: radial-gradient(circle, var(--spbSky3) 1px, transparent 1px);
152
159
  background-size: 6px 2px;
153
160
  }
161
+ .mfui-card__features-item-value {
162
+ -ms-flex-negative: 0;
163
+ flex-shrink: 0;
164
+ text-align: end;
165
+ }
166
+ .mfui-card__features-item-text {
167
+ position: relative;
168
+ z-index: 1;
169
+ background-color: var(--base);
170
+ -webkit-transition: background-color 0.3s;
171
+ transition: background-color 0.3s;
172
+ }
173
+ .mfui-card_view_background .mfui-card__features-item-text {
174
+ background-color: var(--spbSky0);
175
+ }
176
+ .mfui-card_link.mfui-card_view_background:hover .mfui-card__features-item-text {
177
+ background-color: var(--spbSky1);
178
+ }
179
+ .mfui-card__features-item-title .mfui-card__features-item-text {
180
+ padding-right: 4px;
181
+ }
182
+ .mfui-card__features-item-value .mfui-card__features-item-text {
183
+ padding-left: 4px;
184
+ }
154
185
  .mfui-card__icons {
155
186
  margin-top: 16px;
156
187
  }
@@ -104,19 +104,21 @@ var Card = function Card(_ref5) {
104
104
  if (featuresList) {
105
105
  return /*#__PURE__*/React.createElement("div", {
106
106
  className: cn('features')
107
- }, /*#__PURE__*/React.createElement("div", {
107
+ }, /*#__PURE__*/React.createElement("ul", {
108
108
  className: cn('features-list')
109
109
  }, featuresList.items.map(function (item, i) {
110
- return /*#__PURE__*/React.createElement("div", {
110
+ return /*#__PURE__*/React.createElement("li", {
111
111
  className: cn('features-item'),
112
112
  key: i
113
113
  }, /*#__PURE__*/React.createElement("div", {
114
114
  className: cn('features-item-title')
115
- }, item.title), /*#__PURE__*/React.createElement("div", {
116
- className: cn('features-item-separator')
117
- }), /*#__PURE__*/React.createElement("div", {
115
+ }, /*#__PURE__*/React.createElement("span", {
116
+ className: cn('features-item-text')
117
+ }, item.title)), /*#__PURE__*/React.createElement("div", {
118
118
  className: cn('features-item-value')
119
- }, item.value));
119
+ }, /*#__PURE__*/React.createElement("span", {
120
+ className: cn('features-item-text')
121
+ }, item.value)));
120
122
  })), featuresList.desc);
121
123
  }
122
124
 
@@ -1,7 +1,8 @@
1
1
  import React, { Ref } from 'react';
2
2
  import { Props as BreadcrumbsPropsType } from '../Breadcrumbs/Breadcrumbs';
3
3
  import './VideoBanner.less';
4
- declare type BreadCrumbsItemsType = BreadcrumbsPropsType['items'];
4
+ export declare type BreadCrumbsItemsType = BreadcrumbsPropsType['items'];
5
+ export declare const testIdPrefix = "VideoBanner";
5
6
  export declare enum ClassName {
6
7
  BUTTON = "button",
7
8
  LINK = "link"
@@ -59,7 +60,7 @@ export interface IContent {
59
60
  /** Строка со стоимостью услуги */
60
61
  cost?: string;
61
62
  }
62
- interface IVideoBannerProps {
63
+ export interface IVideoBannerProps {
63
64
  /** Дополнительные data атрибуты к внутренним элементам */
64
65
  dataAttrs?: {
65
66
  root?: Record<string, string>;
@@ -13,6 +13,7 @@ import * as PropTypes from 'prop-types';
13
13
  import throttleTime from "../../constants/throttleTime";
14
14
  import Breadcrumbs from "../Breadcrumbs/Breadcrumbs";
15
15
  import "./VideoBanner.css";
16
+ export var testIdPrefix = 'VideoBanner';
16
17
  var cn = cnCreate('mfui-video-banner');
17
18
  export var ClassName;
18
19
 
@@ -112,7 +113,8 @@ var VideoBanner = function VideoBanner(_ref2) {
112
113
  className: cn('content', {
113
114
  'text-color': textColor,
114
115
  'text-color-mobile': textColorMobile
115
- })
116
+ }),
117
+ "data-testid": "".concat(testIdPrefix, "-content")
116
118
  }, /*#__PURE__*/React.createElement(Header, {
117
119
  className: cn('title'),
118
120
  as: "h1",
@@ -171,7 +173,8 @@ var VideoBanner = function VideoBanner(_ref2) {
171
173
  width: "100%",
172
174
  height: "100%",
173
175
  frameBorder: "0",
174
- allow: "autoplay"
176
+ allow: "autoplay",
177
+ "data-testid": "".concat(testIdPrefix, "-iframe-video")
175
178
  });
176
179
  }
177
180
 
@@ -184,7 +187,8 @@ var VideoBanner = function VideoBanner(_ref2) {
184
187
  className: cn('video', [classes.video]),
185
188
  autoPlay: true,
186
189
  loop: true,
187
- muted: isMuted
190
+ muted: isMuted,
191
+ "data-testid": "".concat(testIdPrefix, "-video")
188
192
  }, /*#__PURE__*/React.createElement("source", {
189
193
  src: videoSrc,
190
194
  type: "video/mp4"
@@ -230,7 +234,9 @@ var VideoBanner = function VideoBanner(_ref2) {
230
234
  classes: {
231
235
  item: classes.breadcrumbs
232
236
  }
233
- }), content && renderContent(content), isRenderVideo && renderVideo(), !isRenderVideo && /*#__PURE__*/React.createElement("picture", null, /*#__PURE__*/React.createElement("source", {
237
+ }), content && renderContent(content), isRenderVideo && renderVideo(), !isRenderVideo && /*#__PURE__*/React.createElement("picture", {
238
+ "data-testid": "".concat(testIdPrefix, "-picture")
239
+ }, /*#__PURE__*/React.createElement("source", {
234
240
  media: "(min-width: ".concat(breakpoints.DESKTOP_MIDDLE_START, "px)"),
235
241
  srcSet: imageDesktopWide
236
242
  }), /*#__PURE__*/React.createElement("source", {
@@ -56,5 +56,6 @@ export interface IVideoBlockProps {
56
56
  /** Фикс для белого фона */
57
57
  fixWhiteVideoBackground?: boolean;
58
58
  }
59
+ export declare const testIdPrefix = "VideoBlock";
59
60
  declare const VideoBlock: React.FC<IVideoBlockProps>;
60
61
  export default VideoBlock;
@@ -12,6 +12,7 @@ export var VideoTypes = {
12
12
  YOUTUBE: 'youtube',
13
13
  VIDEO: 'video'
14
14
  };
15
+ export var testIdPrefix = 'VideoBlock';
15
16
  var cn = cnCreate('mfui-video-block');
16
17
 
17
18
  var VideoBlock = function VideoBlock(_ref) {
@@ -60,7 +61,8 @@ var VideoBlock = function VideoBlock(_ref) {
60
61
  frameBorder: "0",
61
62
  allow: "autoplay",
62
63
  title: "iframe",
63
- allowFullScreen: true
64
+ allowFullScreen: true,
65
+ "data-testid": "".concat(testIdPrefix, "-iframe-video")
64
66
  }));
65
67
  }
66
68
 
@@ -78,7 +80,8 @@ var VideoBlock = function VideoBlock(_ref) {
78
80
  controls: !isAutoplay,
79
81
  loop: true,
80
82
  poster: poster,
81
- playsInline: playsinline
83
+ playsInline: playsinline,
84
+ "data-testid": "".concat(testIdPrefix, "-video")
82
85
  }, /*#__PURE__*/React.createElement("source", {
83
86
  src: videoSrc,
84
87
  type: "video/mp4"
@@ -103,7 +106,8 @@ var VideoBlock = function VideoBlock(_ref) {
103
106
  return /*#__PURE__*/React.createElement("div", {
104
107
  className: cn('content', {
105
108
  'position-right': contentPositionRight
106
- })
109
+ }),
110
+ "data-testid": "".concat(testIdPrefix, "-content")
107
111
  }, /*#__PURE__*/React.createElement(Header, {
108
112
  as: "h2",
109
113
  className: cn('header')
@@ -130,27 +130,58 @@ h5 {
130
130
  flex-direction: column;
131
131
  gap: 12px;
132
132
  margin-top: 16px;
133
+ overflow: hidden;
134
+ }
135
+ .mfui-card__features-list {
136
+ margin: 0;
137
+ padding: 0;
138
+ list-style: none;
133
139
  }
134
140
  .mfui-card__features-item {
141
+ position: relative;
135
142
  display: -webkit-box;
136
143
  display: -ms-flexbox;
137
144
  display: flex;
138
- gap: 4px;
139
- -webkit-box-align: baseline;
140
- -ms-flex-align: baseline;
141
- align-items: baseline;
145
+ -webkit-box-align: end;
146
+ -ms-flex-align: end;
147
+ align-items: flex-end;
142
148
  -webkit-box-pack: justify;
143
149
  -ms-flex-pack: justify;
144
150
  justify-content: space-between;
145
151
  }
146
- .mfui-card__features-item-separator {
147
- -webkit-box-flex: 1;
148
- -ms-flex-positive: 1;
149
- flex-grow: 1;
152
+ .mfui-card__features-item:before {
153
+ content: '';
154
+ position: absolute;
155
+ bottom: 0.4em;
156
+ width: 100%;
150
157
  height: 2px;
151
158
  background-image: radial-gradient(circle, var(--spbSky3) 1px, transparent 1px);
152
159
  background-size: 6px 2px;
153
160
  }
161
+ .mfui-card__features-item-value {
162
+ -ms-flex-negative: 0;
163
+ flex-shrink: 0;
164
+ text-align: end;
165
+ }
166
+ .mfui-card__features-item-text {
167
+ position: relative;
168
+ z-index: 1;
169
+ background-color: var(--base);
170
+ -webkit-transition: background-color 0.3s;
171
+ transition: background-color 0.3s;
172
+ }
173
+ .mfui-card_view_background .mfui-card__features-item-text {
174
+ background-color: var(--spbSky0);
175
+ }
176
+ .mfui-card_link.mfui-card_view_background:hover .mfui-card__features-item-text {
177
+ background-color: var(--spbSky1);
178
+ }
179
+ .mfui-card__features-item-title .mfui-card__features-item-text {
180
+ padding-right: 4px;
181
+ }
182
+ .mfui-card__features-item-value .mfui-card__features-item-text {
183
+ padding-left: 4px;
184
+ }
154
185
  .mfui-card__icons {
155
186
  margin-top: 16px;
156
187
  }
@@ -119,19 +119,21 @@ var Card = function Card(_ref5) {
119
119
  if (featuresList) {
120
120
  return /*#__PURE__*/_react["default"].createElement("div", {
121
121
  className: cn('features')
122
- }, /*#__PURE__*/_react["default"].createElement("div", {
122
+ }, /*#__PURE__*/_react["default"].createElement("ul", {
123
123
  className: cn('features-list')
124
124
  }, featuresList.items.map(function (item, i) {
125
- return /*#__PURE__*/_react["default"].createElement("div", {
125
+ return /*#__PURE__*/_react["default"].createElement("li", {
126
126
  className: cn('features-item'),
127
127
  key: i
128
128
  }, /*#__PURE__*/_react["default"].createElement("div", {
129
129
  className: cn('features-item-title')
130
- }, item.title), /*#__PURE__*/_react["default"].createElement("div", {
131
- className: cn('features-item-separator')
132
- }), /*#__PURE__*/_react["default"].createElement("div", {
130
+ }, /*#__PURE__*/_react["default"].createElement("span", {
131
+ className: cn('features-item-text')
132
+ }, item.title)), /*#__PURE__*/_react["default"].createElement("div", {
133
133
  className: cn('features-item-value')
134
- }, item.value));
134
+ }, /*#__PURE__*/_react["default"].createElement("span", {
135
+ className: cn('features-item-text')
136
+ }, item.value)));
135
137
  })), featuresList.desc);
136
138
  }
137
139
 
@@ -1,7 +1,8 @@
1
1
  import React, { Ref } from 'react';
2
2
  import { Props as BreadcrumbsPropsType } from '../Breadcrumbs/Breadcrumbs';
3
3
  import './VideoBanner.less';
4
- declare type BreadCrumbsItemsType = BreadcrumbsPropsType['items'];
4
+ export declare type BreadCrumbsItemsType = BreadcrumbsPropsType['items'];
5
+ export declare const testIdPrefix = "VideoBanner";
5
6
  export declare enum ClassName {
6
7
  BUTTON = "button",
7
8
  LINK = "link"
@@ -59,7 +60,7 @@ export interface IContent {
59
60
  /** Строка со стоимостью услуги */
60
61
  cost?: string;
61
62
  }
62
- interface IVideoBannerProps {
63
+ export interface IVideoBannerProps {
63
64
  /** Дополнительные data атрибуты к внутренним элементам */
64
65
  dataAttrs?: {
65
66
  root?: Record<string, string>;
@@ -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"] = exports.TextColor = exports.ButtonColor = exports.VideoType = exports.ClassName = void 0;
8
+ exports["default"] = exports.TextColor = exports.ButtonColor = exports.VideoType = exports.ClassName = exports.testIdPrefix = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
@@ -41,6 +41,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
41
41
 
42
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
43
43
 
44
+ var testIdPrefix = 'VideoBanner';
45
+ exports.testIdPrefix = testIdPrefix;
44
46
  var cn = (0, _uiHelpers.cnCreate)('mfui-video-banner');
45
47
  var ClassName;
46
48
  exports.ClassName = ClassName;
@@ -145,7 +147,8 @@ var VideoBanner = function VideoBanner(_ref2) {
145
147
  className: cn('content', {
146
148
  'text-color': textColor,
147
149
  'text-color-mobile': textColorMobile
148
- })
150
+ }),
151
+ "data-testid": "".concat(testIdPrefix, "-content")
149
152
  }, /*#__PURE__*/_react["default"].createElement(_uiCore.Header, {
150
153
  className: cn('title'),
151
154
  as: "h1",
@@ -205,7 +208,8 @@ var VideoBanner = function VideoBanner(_ref2) {
205
208
  width: "100%",
206
209
  height: "100%",
207
210
  frameBorder: "0",
208
- allow: "autoplay"
211
+ allow: "autoplay",
212
+ "data-testid": "".concat(testIdPrefix, "-iframe-video")
209
213
  });
210
214
  }
211
215
 
@@ -218,7 +222,8 @@ var VideoBanner = function VideoBanner(_ref2) {
218
222
  className: cn('video', [classes.video]),
219
223
  autoPlay: true,
220
224
  loop: true,
221
- muted: isMuted
225
+ muted: isMuted,
226
+ "data-testid": "".concat(testIdPrefix, "-video")
222
227
  }, /*#__PURE__*/_react["default"].createElement("source", {
223
228
  src: videoSrc,
224
229
  type: "video/mp4"
@@ -266,7 +271,9 @@ var VideoBanner = function VideoBanner(_ref2) {
266
271
  classes: {
267
272
  item: classes.breadcrumbs
268
273
  }
269
- }), content && renderContent(content), isRenderVideo && renderVideo(), !isRenderVideo && /*#__PURE__*/_react["default"].createElement("picture", null, /*#__PURE__*/_react["default"].createElement("source", {
274
+ }), content && renderContent(content), isRenderVideo && renderVideo(), !isRenderVideo && /*#__PURE__*/_react["default"].createElement("picture", {
275
+ "data-testid": "".concat(testIdPrefix, "-picture")
276
+ }, /*#__PURE__*/_react["default"].createElement("source", {
270
277
  media: "(min-width: ".concat(_uiHelpers.breakpoints.DESKTOP_MIDDLE_START, "px)"),
271
278
  srcSet: imageDesktopWide
272
279
  }), /*#__PURE__*/_react["default"].createElement("source", {
@@ -56,5 +56,6 @@ export interface IVideoBlockProps {
56
56
  /** Фикс для белого фона */
57
57
  fixWhiteVideoBackground?: boolean;
58
58
  }
59
+ export declare const testIdPrefix = "VideoBlock";
59
60
  declare const VideoBlock: React.FC<IVideoBlockProps>;
60
61
  export default VideoBlock;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = exports.VideoTypes = void 0;
6
+ exports["default"] = exports.testIdPrefix = exports.VideoTypes = void 0;
7
7
 
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
 
@@ -30,6 +30,8 @@ var VideoTypes = {
30
30
  VIDEO: 'video'
31
31
  };
32
32
  exports.VideoTypes = VideoTypes;
33
+ var testIdPrefix = 'VideoBlock';
34
+ exports.testIdPrefix = testIdPrefix;
33
35
  var cn = (0, _uiHelpers.cnCreate)('mfui-video-block');
34
36
 
35
37
  var VideoBlock = function VideoBlock(_ref) {
@@ -79,7 +81,8 @@ var VideoBlock = function VideoBlock(_ref) {
79
81
  frameBorder: "0",
80
82
  allow: "autoplay",
81
83
  title: "iframe",
82
- allowFullScreen: true
84
+ allowFullScreen: true,
85
+ "data-testid": "".concat(testIdPrefix, "-iframe-video")
83
86
  }));
84
87
  }
85
88
 
@@ -97,7 +100,8 @@ var VideoBlock = function VideoBlock(_ref) {
97
100
  controls: !isAutoplay,
98
101
  loop: true,
99
102
  poster: poster,
100
- playsInline: playsinline
103
+ playsInline: playsinline,
104
+ "data-testid": "".concat(testIdPrefix, "-video")
101
105
  }, /*#__PURE__*/_react["default"].createElement("source", {
102
106
  src: videoSrc,
103
107
  type: "video/mp4"
@@ -123,7 +127,8 @@ var VideoBlock = function VideoBlock(_ref) {
123
127
  return /*#__PURE__*/_react["default"].createElement("div", {
124
128
  className: cn('content', {
125
129
  'position-right': contentPositionRight
126
- })
130
+ }),
131
+ "data-testid": "".concat(testIdPrefix, "-content")
127
132
  }, /*#__PURE__*/_react["default"].createElement(_uiCore.Header, {
128
133
  as: "h2",
129
134
  className: cn('header')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@megafon/ui-shared",
3
- "version": "5.4.1",
3
+ "version": "5.4.2",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -82,7 +82,7 @@
82
82
  },
83
83
  "dependencies": {
84
84
  "@babel/runtime": "^7.8.4",
85
- "@megafon/ui-core": "^5.4.4",
85
+ "@megafon/ui-core": "^5.4.5",
86
86
  "@megafon/ui-helpers": "^2.5.4",
87
87
  "core-js": "^3.6.4",
88
88
  "htmr": "^0.9.2",
@@ -90,5 +90,5 @@
90
90
  "prop-types": "^15.7.2",
91
91
  "swiper": "^6.5.6"
92
92
  },
93
- "gitHead": "471b8bdf93ee77158913a50f2650c9a954949a93"
93
+ "gitHead": "372cdb83f6be5d3a870df80e80c60b10f33cd91a"
94
94
  }