@megafon/ui-shared 2.1.5 → 2.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,20 @@
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
+ # [2.2.0](https://github.com/MegafonWebLab/megafon-ui/compare/@megafon/ui-shared@2.1.5...@megafon/ui-shared@2.2.0) (2022-01-24)
7
+
8
+
9
+ ### Features
10
+
11
+ * **accordionbox:** props hasVerticalPaddings marked as deprecated ([7dbb43b](https://github.com/MegafonWebLab/megafon-ui/commit/7dbb43b1178f4055ecd0f4eed5614024da638091))
12
+ * **container:** add rules for TextWithIcon component ([4c692ab](https://github.com/MegafonWebLab/megafon-ui/commit/4c692ab43db115dc7c5aeba39713d6f2ae2daaff))
13
+ * **textwithicon:** add component TextWithIcon ([b772728](https://github.com/MegafonWebLab/megafon-ui/commit/b772728b8739dbbfa550eef1c8eedb56cda620c9))
14
+ * **videoblock:** made button optional ([eef7c17](https://github.com/MegafonWebLab/megafon-ui/commit/eef7c174415b28fe3512d8c28fcd9bb73774dd2e))
15
+
16
+
17
+
18
+
19
+
6
20
  ## [2.1.5](https://github.com/MegafonWebLab/megafon-ui/compare/@megafon/ui-shared@2.1.4...@megafon/ui-shared@2.1.5) (2022-01-18)
7
21
 
8
22
 
@@ -16,6 +16,7 @@ export interface IAccordionBox {
16
16
  /** Центрирование по горизонтали для расширения 1280+ */
17
17
  hCenterAlignWide?: boolean;
18
18
  /** Вертикальные отступы */
19
+ /** @deprecated */
19
20
  hasVerticalPaddings?: boolean;
20
21
  /** Дополнительный класс для корнеовго элемента */
21
22
  className?: string;
@@ -49,7 +49,9 @@ AccordionBox.propTypes = {
49
49
  isFullWidth: PropTypes.bool,
50
50
  isOpened: PropTypes.bool,
51
51
  hCenterAlignWide: PropTypes.bool,
52
- hasVerticalPaddings: PropTypes.bool,
52
+ hasVerticalPaddings: function hasVerticalPaddings(props, propName) {
53
+ return props[propName] && new Error('Failed prop type: Prop "hasVerticalPaddings" is deprecated');
54
+ },
53
55
  className: PropTypes.string,
54
56
  classes: PropTypes.shape({
55
57
  openedClass: PropTypes.string,
@@ -2230,6 +2230,9 @@ h5 {
2230
2230
  .mfui-container .mfui-text-box + .mfui-download-links {
2231
2231
  margin-top: 32px;
2232
2232
  }
2233
+ .mfui-container .mfui-text-box + extract(.mfui-video-banner, .mfui-title-description-box, .mfui-benefits-icons, .mfui-benefits-pictures, .mfui-cards-box, .mfui-carousel-box, .mfui-video-block, .mfui-tabs-box, .mfui-partners, .mfui-instructions, .mfui-property, .mfui-table, .mfui-accordion-box, .mfui-button-link-box, .mfui-download-links, .mfui-text-box, .mfui-picture-with-description, .mfui-store-banner, .mfui-button-banner, .mfui-steps, .mfui-page-title, .mfui-text-with-icon, 23) {
2234
+ margin-top: 24px;
2235
+ }
2233
2236
  @media screen and (min-width: 768px) and (max-width: 1023px) {
2234
2237
  .mfui-container .mfui-text-box + .mfui-benefits-icons {
2235
2238
  margin-top: 48px;
@@ -2869,6 +2872,163 @@ h5 {
2869
2872
  .mfui-container .mfui-page-title + .mfui-button-link-box {
2870
2873
  margin-top: 0 !important;
2871
2874
  }
2875
+ .mfui-container .mfui-text-with-icon + .mfui-benefits-pictures {
2876
+ margin-top: 40px;
2877
+ }
2878
+ .mfui-container .mfui-text-with-icon + .mfui-cards-box {
2879
+ margin-top: 40px;
2880
+ }
2881
+ .mfui-container .mfui-text-with-icon + .mfui-carousel-box {
2882
+ margin-top: 40px;
2883
+ }
2884
+ .mfui-container .mfui-text-with-icon + .mfui-video-block {
2885
+ margin-top: 40px;
2886
+ }
2887
+ .mfui-container .mfui-text-with-icon + .mfui-tabs-box {
2888
+ margin-top: 40px;
2889
+ }
2890
+ .mfui-container .mfui-text-with-icon + .mfui-partners {
2891
+ margin-top: 40px;
2892
+ }
2893
+ .mfui-container .mfui-text-with-icon + .mfui-instructions {
2894
+ margin-top: 40px;
2895
+ }
2896
+ .mfui-container .mfui-text-with-icon + .mfui-property {
2897
+ margin-top: 40px;
2898
+ }
2899
+ .mfui-container .mfui-text-with-icon + .mfui-table {
2900
+ margin-top: 40px;
2901
+ }
2902
+ .mfui-container .mfui-text-with-icon + .mfui-accordion-box {
2903
+ margin-top: 40px;
2904
+ }
2905
+ .mfui-container .mfui-text-with-icon + .mfui-button-link-box {
2906
+ margin-top: 40px;
2907
+ }
2908
+ .mfui-container .mfui-text-with-icon + .mfui-download-links {
2909
+ margin-top: 40px;
2910
+ }
2911
+ .mfui-container .mfui-text-with-icon + .mfui-text-box {
2912
+ margin-top: 24px;
2913
+ }
2914
+ .mfui-container .mfui-text-with-icon + .mfui-picture-with-description {
2915
+ margin-top: 40px;
2916
+ }
2917
+ .mfui-container .mfui-text-with-icon + .mfui-store-banner {
2918
+ margin-top: 40px;
2919
+ }
2920
+ .mfui-container .mfui-text-with-icon + .mfui-button-banner {
2921
+ margin-top: 40px;
2922
+ }
2923
+ .mfui-container .mfui-text-with-icon + .mfui-steps {
2924
+ margin-top: 40px;
2925
+ }
2926
+ @media screen and (min-width: 768px) and (max-width: 1023px) {
2927
+ .mfui-container .mfui-text-with-icon + .mfui-benefits-pictures {
2928
+ margin-top: 48px;
2929
+ }
2930
+ .mfui-container .mfui-text-with-icon + .mfui-cards-box {
2931
+ margin-top: 48px;
2932
+ }
2933
+ .mfui-container .mfui-text-with-icon + .mfui-carousel-box {
2934
+ margin-top: 48px;
2935
+ }
2936
+ .mfui-container .mfui-text-with-icon + .mfui-video-block {
2937
+ margin-top: 48px;
2938
+ }
2939
+ .mfui-container .mfui-text-with-icon + .mfui-tabs-box {
2940
+ margin-top: 48px;
2941
+ }
2942
+ .mfui-container .mfui-text-with-icon + .mfui-partners {
2943
+ margin-top: 48px;
2944
+ }
2945
+ .mfui-container .mfui-text-with-icon + .mfui-instructions {
2946
+ margin-top: 48px;
2947
+ }
2948
+ .mfui-container .mfui-text-with-icon + .mfui-property {
2949
+ margin-top: 48px;
2950
+ }
2951
+ .mfui-container .mfui-text-with-icon + .mfui-table {
2952
+ margin-top: 48px;
2953
+ }
2954
+ .mfui-container .mfui-text-with-icon + .mfui-accordion-box {
2955
+ margin-top: 48px;
2956
+ }
2957
+ .mfui-container .mfui-text-with-icon + .mfui-button-link-box {
2958
+ margin-top: 48px;
2959
+ }
2960
+ .mfui-container .mfui-text-with-icon + .mfui-download-links {
2961
+ margin-top: 48px;
2962
+ }
2963
+ .mfui-container .mfui-text-with-icon + .mfui-text-box {
2964
+ margin-top: 24px;
2965
+ }
2966
+ .mfui-container .mfui-text-with-icon + .mfui-picture-with-description {
2967
+ margin-top: 48px;
2968
+ }
2969
+ .mfui-container .mfui-text-with-icon + .mfui-store-banner {
2970
+ margin-top: 48px;
2971
+ }
2972
+ .mfui-container .mfui-text-with-icon + .mfui-button-banner {
2973
+ margin-top: 48px;
2974
+ }
2975
+ .mfui-container .mfui-text-with-icon + .mfui-steps {
2976
+ margin-top: 48px;
2977
+ }
2978
+ }
2979
+ @media screen and (min-width: 1024px) {
2980
+ .mfui-container .mfui-text-with-icon + .mfui-benefits-pictures {
2981
+ margin-top: 56px;
2982
+ }
2983
+ .mfui-container .mfui-text-with-icon + .mfui-cards-box {
2984
+ margin-top: 56px;
2985
+ }
2986
+ .mfui-container .mfui-text-with-icon + .mfui-carousel-box {
2987
+ margin-top: 56px;
2988
+ }
2989
+ .mfui-container .mfui-text-with-icon + .mfui-video-block {
2990
+ margin-top: 56px;
2991
+ }
2992
+ .mfui-container .mfui-text-with-icon + .mfui-tabs-box {
2993
+ margin-top: 56px;
2994
+ }
2995
+ .mfui-container .mfui-text-with-icon + .mfui-partners {
2996
+ margin-top: 56px;
2997
+ }
2998
+ .mfui-container .mfui-text-with-icon + .mfui-instructions {
2999
+ margin-top: 56px;
3000
+ }
3001
+ .mfui-container .mfui-text-with-icon + .mfui-property {
3002
+ margin-top: 56px;
3003
+ }
3004
+ .mfui-container .mfui-text-with-icon + .mfui-table {
3005
+ margin-top: 56px;
3006
+ }
3007
+ .mfui-container .mfui-text-with-icon + .mfui-accordion-box {
3008
+ margin-top: 56px;
3009
+ }
3010
+ .mfui-container .mfui-text-with-icon + .mfui-button-link-box {
3011
+ margin-top: 48px;
3012
+ }
3013
+ .mfui-container .mfui-text-with-icon + .mfui-download-links {
3014
+ margin-top: 48px;
3015
+ }
3016
+ .mfui-container .mfui-text-with-icon + .mfui-text-box {
3017
+ margin-top: 24px;
3018
+ }
3019
+ .mfui-container .mfui-text-with-icon + .mfui-picture-with-description {
3020
+ margin-top: 56px;
3021
+ }
3022
+ .mfui-container .mfui-text-with-icon + .mfui-store-banner {
3023
+ margin-top: 56px;
3024
+ }
3025
+ .mfui-container .mfui-text-with-icon + .mfui-button-banner {
3026
+ margin-top: 56px;
3027
+ }
3028
+ .mfui-container .mfui-text-with-icon + .mfui-steps {
3029
+ margin-top: 56px;
3030
+ }
3031
+ }
2872
3032
  .mfui-container_disable-padding-top {
2873
3033
  padding-top: 0 !important;
2874
3034
  }
@@ -0,0 +1,57 @@
1
+ h1,
2
+ h2,
3
+ h3,
4
+ h4,
5
+ h5 {
6
+ margin: 0;
7
+ }
8
+ .mfui-text-with-icon__item {
9
+ display: -webkit-box;
10
+ display: -ms-flexbox;
11
+ display: flex;
12
+ -webkit-box-align: center;
13
+ -ms-flex-align: center;
14
+ align-items: center;
15
+ }
16
+ @media screen and (max-width: 767px) {
17
+ .mfui-text-with-icon__item {
18
+ -webkit-box-orient: vertical;
19
+ -webkit-box-direction: normal;
20
+ -ms-flex-direction: column;
21
+ flex-direction: column;
22
+ }
23
+ }
24
+ .mfui-text-with-icon__item:not(:first-of-type) {
25
+ margin-top: 16px;
26
+ }
27
+ @media screen and (max-width: 767px) {
28
+ .mfui-text-with-icon__item:not(:first-of-type) {
29
+ margin-top: 24px;
30
+ }
31
+ }
32
+ .mfui-text-with-icon__header {
33
+ margin-bottom: 24px;
34
+ }
35
+ @media screen and (max-width: 767px) {
36
+ .mfui-text-with-icon__header {
37
+ text-align: center;
38
+ }
39
+ }
40
+ .mfui-text-with-icon__svg-icon {
41
+ width: 40px;
42
+ min-width: 40px;
43
+ height: 40px;
44
+ min-height: 40px;
45
+ overflow: hidden;
46
+ }
47
+ @media screen and (min-width: 768px) {
48
+ .mfui-text-with-icon__svg-icon {
49
+ margin-right: 16px;
50
+ }
51
+ }
52
+ @media screen and (max-width: 767px) {
53
+ .mfui-text-with-icon__text {
54
+ margin-top: 12px;
55
+ text-align: center;
56
+ }
57
+ }
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ import { IFilterDataAttrs } from '@megafon/ui-helpers';
3
+ import './TextWithIcon.less';
4
+ export interface IItem {
5
+ /** Текст */
6
+ text: string;
7
+ /** Иконка */
8
+ icon: React.ReactNode;
9
+ }
10
+ export interface ITextWithIconProps extends IFilterDataAttrs {
11
+ /** Список строк с иконками */
12
+ items: IItem[];
13
+ /** Заголовок */
14
+ title?: string;
15
+ /** Ссылка на корневой элемент */
16
+ rootRef?: React.Ref<HTMLDivElement>;
17
+ /** Дополнительный класс для корневого элемента */
18
+ className?: string;
19
+ }
20
+ declare const TextWithIcon: React.FC<ITextWithIconProps>;
21
+ export default TextWithIcon;
@@ -0,0 +1,53 @@
1
+ import "core-js/modules/es.array.map";
2
+ import _extends from "@babel/runtime/helpers/extends";
3
+ import * as React from 'react';
4
+ import { Header, Grid, GridColumn } from '@megafon/ui-core';
5
+ import { cnCreate, filterDataAttrs } from '@megafon/ui-helpers';
6
+ import * as PropTypes from 'prop-types';
7
+ import "./TextWithIcon.css";
8
+ var cn = cnCreate('mfui-text-with-icon');
9
+
10
+ var TextWithIcon = function TextWithIcon(_ref) {
11
+ var items = _ref.items,
12
+ title = _ref.title,
13
+ rootRef = _ref.rootRef,
14
+ dataAttrs = _ref.dataAttrs,
15
+ className = _ref.className;
16
+ return /*#__PURE__*/React.createElement("div", _extends({
17
+ className: cn([className]),
18
+ ref: rootRef
19
+ }, filterDataAttrs(dataAttrs)), /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(GridColumn, {
20
+ mobile: '12',
21
+ tablet: '7',
22
+ desktop: '6',
23
+ wide: '6'
24
+ }, title && /*#__PURE__*/React.createElement(Header, {
25
+ className: cn('header'),
26
+ as: "h5"
27
+ }, title), items.map(function (_ref2, i) {
28
+ var text = _ref2.text,
29
+ icon = _ref2.icon;
30
+ return /*#__PURE__*/React.createElement("div", {
31
+ className: cn('item'),
32
+ key: i
33
+ }, /*#__PURE__*/React.createElement("div", {
34
+ className: cn('svg-icon')
35
+ }, icon), /*#__PURE__*/React.createElement("div", {
36
+ className: cn('text')
37
+ }, text));
38
+ }))));
39
+ };
40
+
41
+ TextWithIcon.propTypes = {
42
+ items: PropTypes.arrayOf(PropTypes.shape({
43
+ text: PropTypes.string.isRequired,
44
+ icon: PropTypes.node.isRequired
45
+ }).isRequired).isRequired,
46
+ title: PropTypes.string,
47
+ rootRef: PropTypes.oneOfType([PropTypes.func, PropTypes.oneOfType([PropTypes.shape({
48
+ current: PropTypes.elementType
49
+ }), PropTypes.any])]),
50
+ dataAttrs: PropTypes.objectOf(PropTypes.string.isRequired),
51
+ className: PropTypes.string
52
+ };
53
+ export default TextWithIcon;
@@ -6,7 +6,7 @@ export interface IContent {
6
6
  /** Текст-описание */
7
7
  description: string | React.ReactNode[] | React.ReactNode;
8
8
  /** Текст кнопки */
9
- buttonTitle: string;
9
+ buttonTitle?: string;
10
10
  /** Добавляет атрибут download для тега <a> компонента Button */
11
11
  buttonDownload?: boolean;
12
12
  /** Ссылка на кнопке */
@@ -81,7 +81,7 @@ var VideoBlock = function VideoBlock(_ref) {
81
81
  className: cn('header')
82
82
  }, title), /*#__PURE__*/React.createElement("div", {
83
83
  className: cn('description', [classes.description])
84
- }, description), /*#__PURE__*/React.createElement(Button, {
84
+ }, description), buttonTitle && /*#__PURE__*/React.createElement(Button, {
85
85
  className: cn('button', [classes.button]),
86
86
  href: href,
87
87
  onClick: onButtonClick,
@@ -100,7 +100,7 @@ var VideoBlock = function VideoBlock(_ref) {
100
100
  orderTablet: "2",
101
101
  orderMobile: "2",
102
102
  key: "column-content"
103
- }, renderContent && renderContent(content)));
103
+ }, renderContent(content)));
104
104
  }
105
105
 
106
106
  columns.push( /*#__PURE__*/React.createElement(GridColumn, {
@@ -139,7 +139,7 @@ VideoBlock.propTypes = {
139
139
  title: PropTypes.string.isRequired,
140
140
  description: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
141
141
  href: PropTypes.string,
142
- buttonTitle: PropTypes.string.isRequired,
142
+ buttonTitle: PropTypes.string,
143
143
  buttonDownload: PropTypes.bool,
144
144
  onButtonClick: PropTypes.func
145
145
  }),
@@ -29,6 +29,7 @@ export { default as TableRow } from './components/Table/TableRow';
29
29
  export { default as TabsBox } from './components/TabsBox/TabsBox';
30
30
  export { default as TextBox } from './components/TextBox/TextBox';
31
31
  export { default as TextBoxPicture } from './components/TextBox/TextBoxPicture';
32
+ export { default as TextWithIcon } from './components/TextWithIcon/TextWithIcon';
32
33
  export { default as TitleDescriptionBox } from './components/TitleDescriptionBox/TitleDescriptionBox';
33
34
  export { default as VideoBanner } from './components/VideoBanner/VideoBanner';
34
35
  export { default as VideoBlock } from './components/VideoBlock/VideoBlock';
package/dist/es/index.js CHANGED
@@ -29,6 +29,7 @@ export { default as TableRow } from "./components/Table/TableRow";
29
29
  export { default as TabsBox } from "./components/TabsBox/TabsBox";
30
30
  export { default as TextBox } from "./components/TextBox/TextBox";
31
31
  export { default as TextBoxPicture } from "./components/TextBox/TextBoxPicture";
32
+ export { default as TextWithIcon } from "./components/TextWithIcon/TextWithIcon";
32
33
  export { default as TitleDescriptionBox } from "./components/TitleDescriptionBox/TitleDescriptionBox";
33
34
  export { default as VideoBanner } from "./components/VideoBanner/VideoBanner";
34
35
  export { default as VideoBlock } from "./components/VideoBlock/VideoBlock";
@@ -16,6 +16,7 @@ export interface IAccordionBox {
16
16
  /** Центрирование по горизонтали для расширения 1280+ */
17
17
  hCenterAlignWide?: boolean;
18
18
  /** Вертикальные отступы */
19
+ /** @deprecated */
19
20
  hasVerticalPaddings?: boolean;
20
21
  /** Дополнительный класс для корнеовго элемента */
21
22
  className?: string;
@@ -66,7 +66,9 @@ AccordionBox.propTypes = {
66
66
  isFullWidth: PropTypes.bool,
67
67
  isOpened: PropTypes.bool,
68
68
  hCenterAlignWide: PropTypes.bool,
69
- hasVerticalPaddings: PropTypes.bool,
69
+ hasVerticalPaddings: function hasVerticalPaddings(props, propName) {
70
+ return props[propName] && new Error('Failed prop type: Prop "hasVerticalPaddings" is deprecated');
71
+ },
70
72
  className: PropTypes.string,
71
73
  classes: PropTypes.shape({
72
74
  openedClass: PropTypes.string,
@@ -2230,6 +2230,9 @@ h5 {
2230
2230
  .mfui-container .mfui-text-box + .mfui-download-links {
2231
2231
  margin-top: 32px;
2232
2232
  }
2233
+ .mfui-container .mfui-text-box + extract(.mfui-video-banner, .mfui-title-description-box, .mfui-benefits-icons, .mfui-benefits-pictures, .mfui-cards-box, .mfui-carousel-box, .mfui-video-block, .mfui-tabs-box, .mfui-partners, .mfui-instructions, .mfui-property, .mfui-table, .mfui-accordion-box, .mfui-button-link-box, .mfui-download-links, .mfui-text-box, .mfui-picture-with-description, .mfui-store-banner, .mfui-button-banner, .mfui-steps, .mfui-page-title, .mfui-text-with-icon, 23) {
2234
+ margin-top: 24px;
2235
+ }
2233
2236
  @media screen and (min-width: 768px) and (max-width: 1023px) {
2234
2237
  .mfui-container .mfui-text-box + .mfui-benefits-icons {
2235
2238
  margin-top: 48px;
@@ -2869,6 +2872,163 @@ h5 {
2869
2872
  .mfui-container .mfui-page-title + .mfui-button-link-box {
2870
2873
  margin-top: 0 !important;
2871
2874
  }
2875
+ .mfui-container .mfui-text-with-icon + .mfui-benefits-pictures {
2876
+ margin-top: 40px;
2877
+ }
2878
+ .mfui-container .mfui-text-with-icon + .mfui-cards-box {
2879
+ margin-top: 40px;
2880
+ }
2881
+ .mfui-container .mfui-text-with-icon + .mfui-carousel-box {
2882
+ margin-top: 40px;
2883
+ }
2884
+ .mfui-container .mfui-text-with-icon + .mfui-video-block {
2885
+ margin-top: 40px;
2886
+ }
2887
+ .mfui-container .mfui-text-with-icon + .mfui-tabs-box {
2888
+ margin-top: 40px;
2889
+ }
2890
+ .mfui-container .mfui-text-with-icon + .mfui-partners {
2891
+ margin-top: 40px;
2892
+ }
2893
+ .mfui-container .mfui-text-with-icon + .mfui-instructions {
2894
+ margin-top: 40px;
2895
+ }
2896
+ .mfui-container .mfui-text-with-icon + .mfui-property {
2897
+ margin-top: 40px;
2898
+ }
2899
+ .mfui-container .mfui-text-with-icon + .mfui-table {
2900
+ margin-top: 40px;
2901
+ }
2902
+ .mfui-container .mfui-text-with-icon + .mfui-accordion-box {
2903
+ margin-top: 40px;
2904
+ }
2905
+ .mfui-container .mfui-text-with-icon + .mfui-button-link-box {
2906
+ margin-top: 40px;
2907
+ }
2908
+ .mfui-container .mfui-text-with-icon + .mfui-download-links {
2909
+ margin-top: 40px;
2910
+ }
2911
+ .mfui-container .mfui-text-with-icon + .mfui-text-box {
2912
+ margin-top: 24px;
2913
+ }
2914
+ .mfui-container .mfui-text-with-icon + .mfui-picture-with-description {
2915
+ margin-top: 40px;
2916
+ }
2917
+ .mfui-container .mfui-text-with-icon + .mfui-store-banner {
2918
+ margin-top: 40px;
2919
+ }
2920
+ .mfui-container .mfui-text-with-icon + .mfui-button-banner {
2921
+ margin-top: 40px;
2922
+ }
2923
+ .mfui-container .mfui-text-with-icon + .mfui-steps {
2924
+ margin-top: 40px;
2925
+ }
2926
+ @media screen and (min-width: 768px) and (max-width: 1023px) {
2927
+ .mfui-container .mfui-text-with-icon + .mfui-benefits-pictures {
2928
+ margin-top: 48px;
2929
+ }
2930
+ .mfui-container .mfui-text-with-icon + .mfui-cards-box {
2931
+ margin-top: 48px;
2932
+ }
2933
+ .mfui-container .mfui-text-with-icon + .mfui-carousel-box {
2934
+ margin-top: 48px;
2935
+ }
2936
+ .mfui-container .mfui-text-with-icon + .mfui-video-block {
2937
+ margin-top: 48px;
2938
+ }
2939
+ .mfui-container .mfui-text-with-icon + .mfui-tabs-box {
2940
+ margin-top: 48px;
2941
+ }
2942
+ .mfui-container .mfui-text-with-icon + .mfui-partners {
2943
+ margin-top: 48px;
2944
+ }
2945
+ .mfui-container .mfui-text-with-icon + .mfui-instructions {
2946
+ margin-top: 48px;
2947
+ }
2948
+ .mfui-container .mfui-text-with-icon + .mfui-property {
2949
+ margin-top: 48px;
2950
+ }
2951
+ .mfui-container .mfui-text-with-icon + .mfui-table {
2952
+ margin-top: 48px;
2953
+ }
2954
+ .mfui-container .mfui-text-with-icon + .mfui-accordion-box {
2955
+ margin-top: 48px;
2956
+ }
2957
+ .mfui-container .mfui-text-with-icon + .mfui-button-link-box {
2958
+ margin-top: 48px;
2959
+ }
2960
+ .mfui-container .mfui-text-with-icon + .mfui-download-links {
2961
+ margin-top: 48px;
2962
+ }
2963
+ .mfui-container .mfui-text-with-icon + .mfui-text-box {
2964
+ margin-top: 24px;
2965
+ }
2966
+ .mfui-container .mfui-text-with-icon + .mfui-picture-with-description {
2967
+ margin-top: 48px;
2968
+ }
2969
+ .mfui-container .mfui-text-with-icon + .mfui-store-banner {
2970
+ margin-top: 48px;
2971
+ }
2972
+ .mfui-container .mfui-text-with-icon + .mfui-button-banner {
2973
+ margin-top: 48px;
2974
+ }
2975
+ .mfui-container .mfui-text-with-icon + .mfui-steps {
2976
+ margin-top: 48px;
2977
+ }
2978
+ }
2979
+ @media screen and (min-width: 1024px) {
2980
+ .mfui-container .mfui-text-with-icon + .mfui-benefits-pictures {
2981
+ margin-top: 56px;
2982
+ }
2983
+ .mfui-container .mfui-text-with-icon + .mfui-cards-box {
2984
+ margin-top: 56px;
2985
+ }
2986
+ .mfui-container .mfui-text-with-icon + .mfui-carousel-box {
2987
+ margin-top: 56px;
2988
+ }
2989
+ .mfui-container .mfui-text-with-icon + .mfui-video-block {
2990
+ margin-top: 56px;
2991
+ }
2992
+ .mfui-container .mfui-text-with-icon + .mfui-tabs-box {
2993
+ margin-top: 56px;
2994
+ }
2995
+ .mfui-container .mfui-text-with-icon + .mfui-partners {
2996
+ margin-top: 56px;
2997
+ }
2998
+ .mfui-container .mfui-text-with-icon + .mfui-instructions {
2999
+ margin-top: 56px;
3000
+ }
3001
+ .mfui-container .mfui-text-with-icon + .mfui-property {
3002
+ margin-top: 56px;
3003
+ }
3004
+ .mfui-container .mfui-text-with-icon + .mfui-table {
3005
+ margin-top: 56px;
3006
+ }
3007
+ .mfui-container .mfui-text-with-icon + .mfui-accordion-box {
3008
+ margin-top: 56px;
3009
+ }
3010
+ .mfui-container .mfui-text-with-icon + .mfui-button-link-box {
3011
+ margin-top: 48px;
3012
+ }
3013
+ .mfui-container .mfui-text-with-icon + .mfui-download-links {
3014
+ margin-top: 48px;
3015
+ }
3016
+ .mfui-container .mfui-text-with-icon + .mfui-text-box {
3017
+ margin-top: 24px;
3018
+ }
3019
+ .mfui-container .mfui-text-with-icon + .mfui-picture-with-description {
3020
+ margin-top: 56px;
3021
+ }
3022
+ .mfui-container .mfui-text-with-icon + .mfui-store-banner {
3023
+ margin-top: 56px;
3024
+ }
3025
+ .mfui-container .mfui-text-with-icon + .mfui-button-banner {
3026
+ margin-top: 56px;
3027
+ }
3028
+ .mfui-container .mfui-text-with-icon + .mfui-steps {
3029
+ margin-top: 56px;
3030
+ }
3031
+ }
2872
3032
  .mfui-container_disable-padding-top {
2873
3033
  padding-top: 0 !important;
2874
3034
  }
@@ -0,0 +1,57 @@
1
+ h1,
2
+ h2,
3
+ h3,
4
+ h4,
5
+ h5 {
6
+ margin: 0;
7
+ }
8
+ .mfui-text-with-icon__item {
9
+ display: -webkit-box;
10
+ display: -ms-flexbox;
11
+ display: flex;
12
+ -webkit-box-align: center;
13
+ -ms-flex-align: center;
14
+ align-items: center;
15
+ }
16
+ @media screen and (max-width: 767px) {
17
+ .mfui-text-with-icon__item {
18
+ -webkit-box-orient: vertical;
19
+ -webkit-box-direction: normal;
20
+ -ms-flex-direction: column;
21
+ flex-direction: column;
22
+ }
23
+ }
24
+ .mfui-text-with-icon__item:not(:first-of-type) {
25
+ margin-top: 16px;
26
+ }
27
+ @media screen and (max-width: 767px) {
28
+ .mfui-text-with-icon__item:not(:first-of-type) {
29
+ margin-top: 24px;
30
+ }
31
+ }
32
+ .mfui-text-with-icon__header {
33
+ margin-bottom: 24px;
34
+ }
35
+ @media screen and (max-width: 767px) {
36
+ .mfui-text-with-icon__header {
37
+ text-align: center;
38
+ }
39
+ }
40
+ .mfui-text-with-icon__svg-icon {
41
+ width: 40px;
42
+ min-width: 40px;
43
+ height: 40px;
44
+ min-height: 40px;
45
+ overflow: hidden;
46
+ }
47
+ @media screen and (min-width: 768px) {
48
+ .mfui-text-with-icon__svg-icon {
49
+ margin-right: 16px;
50
+ }
51
+ }
52
+ @media screen and (max-width: 767px) {
53
+ .mfui-text-with-icon__text {
54
+ margin-top: 12px;
55
+ text-align: center;
56
+ }
57
+ }
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ import { IFilterDataAttrs } from '@megafon/ui-helpers';
3
+ import './TextWithIcon.less';
4
+ export interface IItem {
5
+ /** Текст */
6
+ text: string;
7
+ /** Иконка */
8
+ icon: React.ReactNode;
9
+ }
10
+ export interface ITextWithIconProps extends IFilterDataAttrs {
11
+ /** Список строк с иконками */
12
+ items: IItem[];
13
+ /** Заголовок */
14
+ title?: string;
15
+ /** Ссылка на корневой элемент */
16
+ rootRef?: React.Ref<HTMLDivElement>;
17
+ /** Дополнительный класс для корневого элемента */
18
+ className?: string;
19
+ }
20
+ declare const TextWithIcon: React.FC<ITextWithIconProps>;
21
+ export default TextWithIcon;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ require("core-js/modules/es.array.map");
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var React = _interopRequireWildcard(require("react"));
15
+
16
+ var _uiCore = require("@megafon/ui-core");
17
+
18
+ var _uiHelpers = require("@megafon/ui-helpers");
19
+
20
+ var PropTypes = _interopRequireWildcard(require("prop-types"));
21
+
22
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
23
+
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
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
27
+
28
+ var cn = (0, _uiHelpers.cnCreate)('mfui-text-with-icon');
29
+
30
+ var TextWithIcon = function TextWithIcon(_ref) {
31
+ var items = _ref.items,
32
+ title = _ref.title,
33
+ rootRef = _ref.rootRef,
34
+ dataAttrs = _ref.dataAttrs,
35
+ className = _ref.className;
36
+ return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({
37
+ className: cn([className]),
38
+ ref: rootRef
39
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs)), /*#__PURE__*/React.createElement(_uiCore.Grid, null, /*#__PURE__*/React.createElement(_uiCore.GridColumn, {
40
+ mobile: '12',
41
+ tablet: '7',
42
+ desktop: '6',
43
+ wide: '6'
44
+ }, title && /*#__PURE__*/React.createElement(_uiCore.Header, {
45
+ className: cn('header'),
46
+ as: "h5"
47
+ }, title), items.map(function (_ref2, i) {
48
+ var text = _ref2.text,
49
+ icon = _ref2.icon;
50
+ return /*#__PURE__*/React.createElement("div", {
51
+ className: cn('item'),
52
+ key: i
53
+ }, /*#__PURE__*/React.createElement("div", {
54
+ className: cn('svg-icon')
55
+ }, icon), /*#__PURE__*/React.createElement("div", {
56
+ className: cn('text')
57
+ }, text));
58
+ }))));
59
+ };
60
+
61
+ TextWithIcon.propTypes = {
62
+ items: PropTypes.arrayOf(PropTypes.shape({
63
+ text: PropTypes.string.isRequired,
64
+ icon: PropTypes.node.isRequired
65
+ }).isRequired).isRequired,
66
+ title: PropTypes.string,
67
+ rootRef: PropTypes.oneOfType([PropTypes.func, PropTypes.oneOfType([PropTypes.shape({
68
+ current: PropTypes.elementType
69
+ }), PropTypes.any])]),
70
+ dataAttrs: PropTypes.objectOf(PropTypes.string.isRequired),
71
+ className: PropTypes.string
72
+ };
73
+ var _default = TextWithIcon;
74
+ exports["default"] = _default;
@@ -6,7 +6,7 @@ export interface IContent {
6
6
  /** Текст-описание */
7
7
  description: string | React.ReactNode[] | React.ReactNode;
8
8
  /** Текст кнопки */
9
- buttonTitle: string;
9
+ buttonTitle?: string;
10
10
  /** Добавляет атрибут download для тега <a> компонента Button */
11
11
  buttonDownload?: boolean;
12
12
  /** Ссылка на кнопке */
@@ -101,7 +101,7 @@ var VideoBlock = function VideoBlock(_ref) {
101
101
  className: cn('header')
102
102
  }, title), /*#__PURE__*/_react["default"].createElement("div", {
103
103
  className: cn('description', [classes.description])
104
- }, description), /*#__PURE__*/_react["default"].createElement(_uiCore.Button, {
104
+ }, description), buttonTitle && /*#__PURE__*/_react["default"].createElement(_uiCore.Button, {
105
105
  className: cn('button', [classes.button]),
106
106
  href: href,
107
107
  onClick: onButtonClick,
@@ -121,7 +121,7 @@ var VideoBlock = function VideoBlock(_ref) {
121
121
  orderTablet: "2",
122
122
  orderMobile: "2",
123
123
  key: "column-content"
124
- }, renderContent && renderContent(content)));
124
+ }, renderContent(content)));
125
125
  }
126
126
 
127
127
  columns.push( /*#__PURE__*/_react["default"].createElement(_uiCore.GridColumn, {
@@ -161,7 +161,7 @@ VideoBlock.propTypes = {
161
161
  title: _propTypes["default"].string.isRequired,
162
162
  description: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].arrayOf(_propTypes["default"].node), _propTypes["default"].node]).isRequired,
163
163
  href: _propTypes["default"].string,
164
- buttonTitle: _propTypes["default"].string.isRequired,
164
+ buttonTitle: _propTypes["default"].string,
165
165
  buttonDownload: _propTypes["default"].bool,
166
166
  onButtonClick: _propTypes["default"].func
167
167
  }),
@@ -29,6 +29,7 @@ export { default as TableRow } from './components/Table/TableRow';
29
29
  export { default as TabsBox } from './components/TabsBox/TabsBox';
30
30
  export { default as TextBox } from './components/TextBox/TextBox';
31
31
  export { default as TextBoxPicture } from './components/TextBox/TextBoxPicture';
32
+ export { default as TextWithIcon } from './components/TextWithIcon/TextWithIcon';
32
33
  export { default as TitleDescriptionBox } from './components/TitleDescriptionBox/TitleDescriptionBox';
33
34
  export { default as VideoBanner } from './components/VideoBanner/VideoBanner';
34
35
  export { default as VideoBlock } from './components/VideoBlock/VideoBlock';
package/dist/lib/index.js CHANGED
@@ -189,6 +189,12 @@ Object.defineProperty(exports, "TextBoxPicture", {
189
189
  return _TextBoxPicture["default"];
190
190
  }
191
191
  });
192
+ Object.defineProperty(exports, "TextWithIcon", {
193
+ enumerable: true,
194
+ get: function get() {
195
+ return _TextWithIcon["default"];
196
+ }
197
+ });
192
198
  Object.defineProperty(exports, "TitleDescriptionBox", {
193
199
  enumerable: true,
194
200
  get: function get() {
@@ -270,6 +276,8 @@ var _TextBox = _interopRequireDefault(require("./components/TextBox/TextBox"));
270
276
 
271
277
  var _TextBoxPicture = _interopRequireDefault(require("./components/TextBox/TextBoxPicture"));
272
278
 
279
+ var _TextWithIcon = _interopRequireDefault(require("./components/TextWithIcon/TextWithIcon"));
280
+
273
281
  var _TitleDescriptionBox = _interopRequireDefault(require("./components/TitleDescriptionBox/TitleDescriptionBox"));
274
282
 
275
283
  var _VideoBanner = _interopRequireDefault(require("./components/VideoBanner/VideoBanner"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@megafon/ui-shared",
3
- "version": "2.1.5",
3
+ "version": "2.2.0",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -81,7 +81,7 @@
81
81
  },
82
82
  "dependencies": {
83
83
  "@babel/runtime": "^7.8.4",
84
- "@megafon/ui-core": "^2.2.0",
84
+ "@megafon/ui-core": "^2.3.0",
85
85
  "@megafon/ui-helpers": "^1.0.0",
86
86
  "core-js": "^3.6.4",
87
87
  "htmr": "^0.9.2",
@@ -89,5 +89,5 @@
89
89
  "prop-types": "^15.7.2",
90
90
  "swiper": "^6.5.6"
91
91
  },
92
- "gitHead": "0c83737156be02a10bd580523851828569f95ed0"
92
+ "gitHead": "135afecf6e64efb26e7a751a6d812609f9c45658"
93
93
  }