@megafon/ui-shared 9.0.0-alpha.9 → 9.0.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/dist/es/components/BenefitCards/BenefitCard/BenefitCard.css +1 -0
- package/dist/es/components/BenefitCards/BenefitCard/BenefitCard.d.ts +13 -0
- package/dist/es/components/BenefitCards/BenefitCard/BenefitCard.js +59 -0
- package/dist/es/components/BenefitCards/BenefitCards.css +1 -0
- package/dist/es/components/BenefitCards/BenefitCards.d.ts +27 -0
- package/dist/es/components/BenefitCards/BenefitCards.js +35 -0
- package/dist/es/components/BenefitCards/helpers.d.ts +1 -0
- package/dist/es/components/BenefitCards/helpers.js +19 -0
- package/dist/es/components/BenefitCards/types.d.ts +24 -0
- package/dist/es/components/BenefitCards/types.js +1 -0
- package/dist/es/components/BlogBox/components/BlogBoxTile.css +1 -1
- package/dist/es/components/Breadcrumbs/Breadcrumbs.d.ts +2 -0
- package/dist/es/components/Breadcrumbs/Breadcrumbs.js +3 -0
- package/dist/es/components/Breadcrumbs/components/BreadcrumbsItem.d.ts +1 -0
- package/dist/es/components/Breadcrumbs/components/BreadcrumbsItem.js +18 -13
- package/dist/es/components/Card/Card.css +1 -1
- package/dist/es/components/Card/Card.d.ts +2 -1
- package/dist/es/components/Card/Card.js +23 -16
- package/dist/es/components/Card/types.d.ts +3 -5
- package/dist/es/components/CardsOnBackground/CardsOnBackground.css +1 -0
- package/dist/es/components/CardsOnBackground/CardsOnBackground.d.ts +37 -0
- package/dist/es/components/CardsOnBackground/CardsOnBackground.js +98 -0
- package/dist/es/components/CardsOnBackground/components/CardOnBackground.css +1 -0
- package/dist/es/components/CardsOnBackground/components/CardOnBackground.d.ts +22 -0
- package/dist/es/components/CardsOnBackground/components/CardOnBackground.js +94 -0
- package/dist/es/components/CardsOnBackground/types.d.ts +47 -0
- package/dist/es/components/CardsOnBackground/types.js +10 -0
- package/dist/es/components/CardsOnBackground/useUniformHeights.d.ts +9 -0
- package/dist/es/components/CardsOnBackground/useUniformHeights.js +88 -0
- package/dist/es/components/Container/Container.css +1 -1
- package/dist/es/components/Container/Container.d.ts +4 -0
- package/dist/es/components/Container/Container.js +4 -1
- package/dist/es/components/DarkGradientCards/components/DarkGradientCard.css +1 -1
- package/dist/es/components/DownloadLinks/DownloadLink.css +1 -1
- package/dist/es/components/DownloadLinks/DownloadLink.js +3 -1
- package/dist/es/components/ImageBanner/ImageBanner.d.ts +3 -0
- package/dist/es/components/ImageBanner/ImageBanner.js +3 -1
- package/dist/es/components/InfoCards/components/InfoCard/InfoCard.css +1 -1
- package/dist/es/components/InfoCards/components/InfoCard/InfoCard.js +4 -2
- package/dist/es/components/Instructions/Instructions.css +1 -1
- package/dist/es/components/Instructions/Instructions.d.ts +23 -7
- package/dist/es/components/Instructions/Instructions.js +46 -30
- package/dist/es/components/Instructions/img/android.png +0 -0
- package/dist/es/components/Instructions/img/laptop.png +0 -0
- package/dist/es/components/Instructions/img/logo-base.png +0 -0
- package/dist/es/components/Instructions/img/logo-cropped-base-with-opacity.png +0 -0
- package/dist/es/components/Instructions/img/logo-cropped-spb-sky-3.png +0 -0
- package/dist/es/components/Instructions/img/logo-spb-sky-0.png +0 -0
- package/dist/es/components/Partners/Partners.css +1 -1
- package/dist/es/components/Partners/Partners.d.ts +3 -8
- package/dist/es/components/Partners/Partners.js +20 -31
- package/dist/es/components/Partners/components/PartnersItem/PartnersItem.css +1 -0
- package/dist/es/components/Partners/components/PartnersItem/PartnersItem.d.ts +12 -0
- package/dist/es/components/Partners/components/PartnersItem/PartnersItem.js +33 -0
- package/dist/es/components/Partners/types.d.ts +7 -0
- package/dist/es/components/Partners/types.js +1 -0
- package/dist/es/components/PictureBox/PictureBox.d.ts +1 -0
- package/dist/es/components/PictureBox/PictureBox.js +2 -0
- package/dist/es/components/PromoBanner/components/PromoBannerSlide/PromoBannerSlide.d.ts +2 -0
- package/dist/es/components/PromoBanner/components/PromoBannerSlide/PromoBannerSlide.js +2 -0
- package/dist/es/components/PromoCards/components/PromoCard/PromoCard.css +1 -1
- package/dist/es/components/ServiceCards/components/ServiceCard/ServiceCard.css +1 -1
- package/dist/es/components/ServiceCards/components/ServiceCard/ServiceCard.js +1 -1
- package/dist/es/components/StepperBox/StepperBox.d.ts +11 -0
- package/dist/es/components/StepperBox/StepperBox.js +36 -0
- package/dist/es/components/StoreButton/StoreButton.css +1 -1
- package/dist/es/components/TitleDescriptionBox/TitleDescriptionBox.css +1 -1
- package/dist/es/components/TitleDescriptionBox/TitleDescriptionBox.d.ts +27 -1
- package/dist/es/components/TitleDescriptionBox/TitleDescriptionBox.js +31 -24
- package/dist/es/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
- package/dist/es/hooks/useIsomorphicLayoutEffect.js +6 -0
- package/dist/es/index.d.ts +7 -2
- package/dist/es/index.js +7 -2
- package/dist/lib/components/BenefitCards/BenefitCard/BenefitCard.css +1 -0
- package/dist/lib/components/BenefitCards/BenefitCard/BenefitCard.d.ts +13 -0
- package/dist/lib/components/BenefitCards/BenefitCard/BenefitCard.js +68 -0
- package/dist/lib/components/BenefitCards/BenefitCards.css +1 -0
- package/dist/lib/components/BenefitCards/BenefitCards.d.ts +27 -0
- package/dist/lib/components/BenefitCards/BenefitCards.js +44 -0
- package/dist/lib/components/BenefitCards/helpers.d.ts +1 -0
- package/dist/lib/components/BenefitCards/helpers.js +26 -0
- package/dist/lib/components/BenefitCards/types.d.ts +24 -0
- package/dist/lib/components/BenefitCards/types.js +5 -0
- package/dist/lib/components/BlogBox/components/BlogBoxTile.css +1 -1
- package/dist/lib/components/Breadcrumbs/Breadcrumbs.d.ts +2 -0
- package/dist/lib/components/Breadcrumbs/Breadcrumbs.js +3 -0
- package/dist/lib/components/Breadcrumbs/components/BreadcrumbsItem.d.ts +1 -0
- package/dist/lib/components/Breadcrumbs/components/BreadcrumbsItem.js +18 -13
- package/dist/lib/components/Card/Card.css +1 -1
- package/dist/lib/components/Card/Card.d.ts +2 -1
- package/dist/lib/components/Card/Card.js +22 -15
- package/dist/lib/components/Card/types.d.ts +3 -5
- package/dist/lib/components/CardsOnBackground/CardsOnBackground.css +1 -0
- package/dist/lib/components/CardsOnBackground/CardsOnBackground.d.ts +37 -0
- package/dist/lib/components/CardsOnBackground/CardsOnBackground.js +107 -0
- package/dist/lib/components/CardsOnBackground/components/CardOnBackground.css +1 -0
- package/dist/lib/components/CardsOnBackground/components/CardOnBackground.d.ts +22 -0
- package/dist/lib/components/CardsOnBackground/components/CardOnBackground.js +100 -0
- package/dist/lib/components/CardsOnBackground/types.d.ts +47 -0
- package/dist/lib/components/CardsOnBackground/types.js +16 -0
- package/dist/lib/components/CardsOnBackground/useUniformHeights.d.ts +9 -0
- package/dist/lib/components/CardsOnBackground/useUniformHeights.js +95 -0
- package/dist/lib/components/Container/Container.css +1 -1
- package/dist/lib/components/Container/Container.d.ts +4 -0
- package/dist/lib/components/Container/Container.js +4 -1
- package/dist/lib/components/DarkGradientCards/components/DarkGradientCard.css +1 -1
- package/dist/lib/components/DownloadLinks/DownloadLink.css +1 -1
- package/dist/lib/components/DownloadLinks/DownloadLink.js +3 -1
- package/dist/lib/components/ImageBanner/ImageBanner.d.ts +3 -0
- package/dist/lib/components/ImageBanner/ImageBanner.js +3 -1
- package/dist/lib/components/InfoCards/components/InfoCard/InfoCard.css +1 -1
- package/dist/lib/components/InfoCards/components/InfoCard/InfoCard.js +4 -2
- package/dist/lib/components/Instructions/Instructions.css +1 -1
- package/dist/lib/components/Instructions/Instructions.d.ts +23 -7
- package/dist/lib/components/Instructions/Instructions.js +47 -30
- package/dist/lib/components/Instructions/img/android.png +0 -0
- package/dist/lib/components/Instructions/img/laptop.png +0 -0
- package/dist/lib/components/Instructions/img/logo-base.png +0 -0
- package/dist/lib/components/Instructions/img/logo-cropped-base-with-opacity.png +0 -0
- package/dist/lib/components/Instructions/img/logo-cropped-spb-sky-3.png +0 -0
- package/dist/lib/components/Instructions/img/logo-spb-sky-0.png +0 -0
- package/dist/lib/components/Partners/Partners.css +1 -1
- package/dist/lib/components/Partners/Partners.d.ts +3 -8
- package/dist/lib/components/Partners/Partners.js +19 -30
- package/dist/lib/components/Partners/components/PartnersItem/PartnersItem.css +1 -0
- package/dist/lib/components/Partners/components/PartnersItem/PartnersItem.d.ts +12 -0
- package/dist/lib/components/Partners/components/PartnersItem/PartnersItem.js +42 -0
- package/dist/lib/components/Partners/types.d.ts +7 -0
- package/dist/lib/components/Partners/types.js +5 -0
- package/dist/lib/components/PictureBox/PictureBox.d.ts +1 -0
- package/dist/lib/components/PictureBox/PictureBox.js +2 -0
- package/dist/lib/components/PromoBanner/components/PromoBannerSlide/PromoBannerSlide.d.ts +2 -0
- package/dist/lib/components/PromoBanner/components/PromoBannerSlide/PromoBannerSlide.js +2 -0
- package/dist/lib/components/PromoCards/components/PromoCard/PromoCard.css +1 -1
- package/dist/lib/components/ServiceCards/components/ServiceCard/ServiceCard.css +1 -1
- package/dist/lib/components/ServiceCards/components/ServiceCard/ServiceCard.js +1 -1
- package/dist/lib/components/StepperBox/StepperBox.d.ts +11 -0
- package/dist/lib/components/StepperBox/StepperBox.js +46 -0
- package/dist/lib/components/StoreButton/StoreButton.css +1 -1
- package/dist/lib/components/TitleDescriptionBox/TitleDescriptionBox.css +1 -1
- package/dist/lib/components/TitleDescriptionBox/TitleDescriptionBox.d.ts +27 -1
- package/dist/lib/components/TitleDescriptionBox/TitleDescriptionBox.js +30 -23
- package/dist/lib/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
- package/dist/lib/hooks/useIsomorphicLayoutEffect.js +13 -0
- package/dist/lib/index.d.ts +7 -2
- package/dist/lib/index.js +45 -10
- package/package.json +6 -6
- package/dist/es/components/Instructions/img/android-new.png +0 -0
- package/dist/es/components/Instructions/img/blackIphone.png +0 -0
- package/dist/es/components/Instructions/img/iphone-new.png +0 -0
- package/dist/es/components/Instructions/img/iphone12.png +0 -0
- package/dist/es/components/Instructions/img/laptop-new.png +0 -0
- package/dist/es/components/Stepper/Stepper.css +0 -1
- package/dist/es/components/Stepper/Stepper.d.ts +0 -52
- package/dist/es/components/Stepper/Stepper.js +0 -159
- package/dist/es/components/Stepper/StepperItem.css +0 -1
- package/dist/es/components/Stepper/StepperItem.d.ts +0 -57
- package/dist/es/components/Stepper/StepperItem.js +0 -99
- package/dist/es/components/Stepper/img/separator-mobile.png +0 -0
- package/dist/es/components/Stepper/img/separator-vertical.png +0 -0
- package/dist/es/components/Stepper/img/separator.png +0 -0
- package/dist/lib/components/Instructions/img/android-new.png +0 -0
- package/dist/lib/components/Instructions/img/blackIphone.png +0 -0
- package/dist/lib/components/Instructions/img/iphone-new.png +0 -0
- package/dist/lib/components/Instructions/img/iphone12.png +0 -0
- package/dist/lib/components/Instructions/img/laptop-new.png +0 -0
- package/dist/lib/components/Stepper/Stepper.css +0 -1
- package/dist/lib/components/Stepper/Stepper.d.ts +0 -52
- package/dist/lib/components/Stepper/Stepper.js +0 -168
- package/dist/lib/components/Stepper/StepperItem.css +0 -1
- package/dist/lib/components/Stepper/StepperItem.d.ts +0 -57
- package/dist/lib/components/Stepper/StepperItem.js +0 -108
- package/dist/lib/components/Stepper/img/separator-mobile.png +0 -0
- package/dist/lib/components/Stepper/img/separator-vertical.png +0 -0
- package/dist/lib/components/Stepper/img/separator.png +0 -0
- /package/dist/es/components/Instructions/img/{iphone15.png → iphone.png} +0 -0
- /package/dist/lib/components/Instructions/img/{iphone15.png → iphone.png} +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
8
|
+
require("core-js/modules/es.symbol.js");
|
|
9
|
+
require("core-js/modules/es.symbol.description.js");
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
var _uiCore = require("@megafon/ui-core");
|
|
12
|
+
var _uiHelpers = require("@megafon/ui-helpers");
|
|
13
|
+
var _setRelAttribute = require("../../../helpers/setRelAttribute");
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
15
|
+
var cn = (0, _uiHelpers.cnCreate)('mfui-9-card-on-background');
|
|
16
|
+
var CardOnBackground = function CardOnBackground(_ref) {
|
|
17
|
+
var title = _ref.title,
|
|
18
|
+
description = _ref.description,
|
|
19
|
+
imageSrc = _ref.imageSrc,
|
|
20
|
+
_ref$imageAlt = _ref.imageAlt,
|
|
21
|
+
imageAlt = _ref$imageAlt === void 0 ? '' : _ref$imageAlt,
|
|
22
|
+
button = _ref.button,
|
|
23
|
+
extraButton = _ref.extraButton,
|
|
24
|
+
href = _ref.href,
|
|
25
|
+
target = _ref.target,
|
|
26
|
+
rel = _ref.rel,
|
|
27
|
+
headerHeight = _ref.headerHeight,
|
|
28
|
+
headerRef = _ref.headerRef,
|
|
29
|
+
_ref$classes = _ref.classes,
|
|
30
|
+
classes = _ref$classes === void 0 ? {} : _ref$classes,
|
|
31
|
+
dataAttrs = _ref.dataAttrs;
|
|
32
|
+
var showButtons = !!(button === null || button === void 0 ? void 0 : button.title) || !!(extraButton === null || extraButton === void 0 ? void 0 : extraButton.title);
|
|
33
|
+
var isLink = !!href && !showButtons;
|
|
34
|
+
var ElementType = isLink ? 'a' : 'div';
|
|
35
|
+
var currentRel = (0, _setRelAttribute.setRelAttribute)(rel, target);
|
|
36
|
+
return /*#__PURE__*/_react["default"].createElement(ElementType, (0, _extends2["default"])({
|
|
37
|
+
className: cn({
|
|
38
|
+
active: isLink
|
|
39
|
+
}, [classes.root])
|
|
40
|
+
}, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root, isLink && {
|
|
41
|
+
href: href,
|
|
42
|
+
target: target,
|
|
43
|
+
rel: currentRel
|
|
44
|
+
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
45
|
+
className: cn('content')
|
|
46
|
+
}, /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
|
|
47
|
+
className: cn('header-wrapper')
|
|
48
|
+
}, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.header, {
|
|
49
|
+
style: {
|
|
50
|
+
minHeight: headerHeight
|
|
51
|
+
}
|
|
52
|
+
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
53
|
+
className: cn('header'),
|
|
54
|
+
ref: headerRef
|
|
55
|
+
}, /*#__PURE__*/_react["default"].createElement(_uiCore.Header, {
|
|
56
|
+
className: cn('title', [classes === null || classes === void 0 ? void 0 : classes.title]),
|
|
57
|
+
dataAttrs: {
|
|
58
|
+
root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.title
|
|
59
|
+
},
|
|
60
|
+
as: "h3",
|
|
61
|
+
align: "center"
|
|
62
|
+
}, (0, _uiHelpers.convert)(title, _uiHelpers.titleConvertConfig)), !!description && /*#__PURE__*/_react["default"].createElement("div", {
|
|
63
|
+
className: cn('description')
|
|
64
|
+
}, (0, _uiHelpers.convert)(description, _uiHelpers.textConvertConfig)))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
65
|
+
className: cn('image-wrapper')
|
|
66
|
+
}, /*#__PURE__*/_react["default"].createElement("img", {
|
|
67
|
+
className: cn('image'),
|
|
68
|
+
src: imageSrc,
|
|
69
|
+
alt: imageAlt
|
|
70
|
+
})), showButtons && /*#__PURE__*/_react["default"].createElement("div", {
|
|
71
|
+
className: cn('buttons')
|
|
72
|
+
}, !!(button === null || button === void 0 ? void 0 : button.title) && /*#__PURE__*/_react["default"].createElement("div", {
|
|
73
|
+
className: cn('button')
|
|
74
|
+
}, /*#__PURE__*/_react["default"].createElement(_uiCore.Button, {
|
|
75
|
+
className: classes.button,
|
|
76
|
+
dataAttrs: {
|
|
77
|
+
root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button
|
|
78
|
+
},
|
|
79
|
+
theme: "green",
|
|
80
|
+
fullWidth: true,
|
|
81
|
+
href: button.href,
|
|
82
|
+
target: button.target,
|
|
83
|
+
rel: (0, _setRelAttribute.setRelAttribute)(button.rel, button.target),
|
|
84
|
+
onClick: button.onClick
|
|
85
|
+
}, button.title)), !!(extraButton === null || extraButton === void 0 ? void 0 : extraButton.title) && /*#__PURE__*/_react["default"].createElement("div", {
|
|
86
|
+
className: cn('button')
|
|
87
|
+
}, /*#__PURE__*/_react["default"].createElement(_uiCore.Button, {
|
|
88
|
+
className: classes.extraButton,
|
|
89
|
+
dataAttrs: {
|
|
90
|
+
root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.extraButton
|
|
91
|
+
},
|
|
92
|
+
theme: "gray",
|
|
93
|
+
fullWidth: true,
|
|
94
|
+
href: extraButton.href,
|
|
95
|
+
target: extraButton.target,
|
|
96
|
+
rel: (0, _setRelAttribute.setRelAttribute)(extraButton.rel, extraButton.target),
|
|
97
|
+
onClick: extraButton.onClick
|
|
98
|
+
}, extraButton.title)))));
|
|
99
|
+
};
|
|
100
|
+
var _default = exports["default"] = CardOnBackground;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type TargetType = '_self' | '_blank' | '_parent' | '_top';
|
|
3
|
+
export type ButtonType = {
|
|
4
|
+
/** Название */
|
|
5
|
+
title: string;
|
|
6
|
+
/** Ссылка */
|
|
7
|
+
href?: string;
|
|
8
|
+
/** Атрибут ссылки target */
|
|
9
|
+
target?: TargetType;
|
|
10
|
+
/** Атрибут ссылки rel */
|
|
11
|
+
rel?: string;
|
|
12
|
+
/** Обработчик клика */
|
|
13
|
+
onClick?: (e: React.SyntheticEvent<EventTarget>) => void;
|
|
14
|
+
};
|
|
15
|
+
export type CardDataType = {
|
|
16
|
+
/** Заголовок */
|
|
17
|
+
title: string;
|
|
18
|
+
/** Текст-описание */
|
|
19
|
+
description?: string;
|
|
20
|
+
/** Изображение */
|
|
21
|
+
imageSrc: string;
|
|
22
|
+
/** Значение тега alt для изображения */
|
|
23
|
+
imageAlt?: string;
|
|
24
|
+
/** Кнопка */
|
|
25
|
+
button?: ButtonType;
|
|
26
|
+
/** Дополнительная кнопка */
|
|
27
|
+
extraButton?: ButtonType;
|
|
28
|
+
/** Ссылка */
|
|
29
|
+
href?: string;
|
|
30
|
+
/** Атрибут ссылки target */
|
|
31
|
+
target?: TargetType;
|
|
32
|
+
/** Атрибут ссылки rel */
|
|
33
|
+
rel?: string;
|
|
34
|
+
};
|
|
35
|
+
export declare const BackgroundColor: {
|
|
36
|
+
readonly GRAY: "gray";
|
|
37
|
+
readonly GREEN: "green";
|
|
38
|
+
readonly BLUE: "blue";
|
|
39
|
+
readonly VIOLET: "violet";
|
|
40
|
+
};
|
|
41
|
+
export type BackgroundColorType = (typeof BackgroundColor)[keyof typeof BackgroundColor];
|
|
42
|
+
export declare const SingleCardAlign: {
|
|
43
|
+
readonly LEFT: "left";
|
|
44
|
+
readonly CENTER: "center";
|
|
45
|
+
};
|
|
46
|
+
export type SingleCardAlignType = (typeof SingleCardAlign)[keyof typeof SingleCardAlign];
|
|
47
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SingleCardAlign = exports.BackgroundColor = void 0;
|
|
7
|
+
var BackgroundColor = exports.BackgroundColor = {
|
|
8
|
+
GRAY: 'gray',
|
|
9
|
+
GREEN: 'green',
|
|
10
|
+
BLUE: 'blue',
|
|
11
|
+
VIOLET: 'violet'
|
|
12
|
+
};
|
|
13
|
+
var SingleCardAlign = exports.SingleCardAlign = {
|
|
14
|
+
LEFT: 'left',
|
|
15
|
+
CENTER: 'center'
|
|
16
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type UseUniformHeightsOptions = {
|
|
2
|
+
disabled?: boolean;
|
|
3
|
+
};
|
|
4
|
+
type UseUniformHeightsReturnType = {
|
|
5
|
+
maxHeight: number;
|
|
6
|
+
getRef: (index: number) => (element: HTMLElement | null) => void;
|
|
7
|
+
};
|
|
8
|
+
declare const useUniformHeights: (itemsCount: number, options?: UseUniformHeightsOptions) => UseUniformHeightsReturnType;
|
|
9
|
+
export default useUniformHeights;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
require("core-js/modules/es.array.concat.js");
|
|
10
|
+
require("core-js/modules/es.array.for-each.js");
|
|
11
|
+
require("core-js/modules/es.array.map.js");
|
|
12
|
+
require("core-js/modules/es.object.to-string.js");
|
|
13
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
|
14
|
+
var _react = _interopRequireDefault(require("react"));
|
|
15
|
+
var _useIsomorphicLayoutEffect = _interopRequireDefault(require("../../hooks/useIsomorphicLayoutEffect"));
|
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
17
|
+
var useUniformHeights = function useUniformHeights(itemsCount) {
|
|
18
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
19
|
+
var _options$disabled = options.disabled,
|
|
20
|
+
disabled = _options$disabled === void 0 ? false : _options$disabled;
|
|
21
|
+
var _React$useState = _react["default"].useState(0),
|
|
22
|
+
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
|
23
|
+
maxHeight = _React$useState2[0],
|
|
24
|
+
setMaxHeight = _React$useState2[1];
|
|
25
|
+
var refs = _react["default"].useRef([]);
|
|
26
|
+
var observerRef = _react["default"].useRef(null);
|
|
27
|
+
var maxHeightRef = _react["default"].useRef(maxHeight);
|
|
28
|
+
var updateMaxHeight = _react["default"].useCallback(function () {
|
|
29
|
+
if (disabled) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
var heights = refs.current.map(function (ref) {
|
|
33
|
+
return (ref === null || ref === void 0 ? void 0 : ref.offsetHeight) || 0;
|
|
34
|
+
});
|
|
35
|
+
var newMaxHeight = Math.ceil(Math.max.apply(Math, (0, _toConsumableArray2["default"])(heights).concat([0])));
|
|
36
|
+
if (newMaxHeight !== maxHeightRef.current) {
|
|
37
|
+
maxHeightRef.current = newMaxHeight;
|
|
38
|
+
setMaxHeight(newMaxHeight);
|
|
39
|
+
}
|
|
40
|
+
}, [disabled]);
|
|
41
|
+
(0, _useIsomorphicLayoutEffect["default"])(function () {
|
|
42
|
+
if (disabled) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
if (!observerRef.current) {
|
|
46
|
+
observerRef.current = new ResizeObserver(function () {
|
|
47
|
+
requestAnimationFrame(function () {
|
|
48
|
+
updateMaxHeight();
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return function () {
|
|
53
|
+
var _a;
|
|
54
|
+
(_a = observerRef.current) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
55
|
+
};
|
|
56
|
+
}, [disabled, updateMaxHeight]);
|
|
57
|
+
(0, _useIsomorphicLayoutEffect["default"])(function () {
|
|
58
|
+
var _a;
|
|
59
|
+
if (disabled) {
|
|
60
|
+
(_a = observerRef.current) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
61
|
+
maxHeightRef.current = 0;
|
|
62
|
+
setMaxHeight(0);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
var observer = observerRef.current;
|
|
66
|
+
if (!observer) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
observer.disconnect();
|
|
70
|
+
refs.current.forEach(function (ref) {
|
|
71
|
+
if (ref) {
|
|
72
|
+
observer.observe(ref);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
updateMaxHeight();
|
|
76
|
+
}, [itemsCount, disabled, updateMaxHeight]);
|
|
77
|
+
var getRef = _react["default"].useCallback(function (index) {
|
|
78
|
+
return function (element) {
|
|
79
|
+
var observer = observerRef.current;
|
|
80
|
+
var oldElement = refs.current[index];
|
|
81
|
+
if (oldElement && observer) {
|
|
82
|
+
observer.unobserve(oldElement);
|
|
83
|
+
}
|
|
84
|
+
refs.current[index] = element;
|
|
85
|
+
if (element && observer && !disabled) {
|
|
86
|
+
observer.observe(element);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}, [disabled]);
|
|
90
|
+
return {
|
|
91
|
+
maxHeight: maxHeight,
|
|
92
|
+
getRef: getRef
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
var _default = exports["default"] = useUniformHeights;
|