@sima-land/moleculas 16.0.0-alpha.30 → 16.0.0-alpha.32

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.
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Badge = void 0;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const react_1 = require("react");
9
- const timer_1 = require("@sima-land/ui-nucleons/timer");
9
+ const utils_1 = require("./utils");
10
10
  const bind_1 = __importDefault(require("classnames/bind"));
11
11
  const badge_m_scss_1 = __importDefault(require("./badge.m.scss"));
12
12
  const cx = bind_1.default.bind(badge_m_scss_1.default);
@@ -15,41 +15,13 @@ const cx = bind_1.default.bind(badge_m_scss_1.default);
15
15
  * @param props Свойства.
16
16
  * @return Элемент.
17
17
  */
18
- exports.Badge = (0, react_1.forwardRef)(function Badge({ className, color, coloring = 'outline', fields, href, style, shape = 'unset', withHoverEffect = Boolean(href), 'data-testid': testId = 'badge', ...restProps }, ref) {
19
- const iconOnly = fields.length === 1 && fields[0].type === 'svg-url';
18
+ exports.Badge = (0, react_1.forwardRef)(function Badge({ className, color, coloring = 'outline', fields, href, style, shape = 'unset', withHoverEffect = Boolean(href), 'data-testid': testId = 'badge', children, ...restProps }, ref) {
19
+ const iconOnly = fields && fields.length === 1 && fields[0].type === 'svg-url';
20
20
  const rootClassName = cx('root', iconOnly && 'icon-only', withHoverEffect && 'with-hover-effect', shape === 'round' && 'shape-round', shape === 'pill' && 'shape-pill', shape !== 'pill' && !iconOnly && 'padding-x-default', shape === 'pill' && !iconOnly && 'padding-x-pill', coloring === 'outline' && 'coloring-outline', coloring === 'fill' && 'coloring-fill', className);
21
21
  const rootStyle = {
22
- '--badge-color': color,
22
+ '--badge-color': (0, utils_1.tokenToCustomProperty)(color),
23
23
  ...style,
24
24
  };
25
- return ((0, jsx_runtime_1.jsx)("a", { ref: ref, ...restProps, "data-testid": testId, href: href, style: rootStyle, className: rootClassName, children: iconOnly ? ((0, jsx_runtime_1.jsx)("img", { className: cx('icon'), src: fields[0].value, alt: '' })) : (
26
- // вложенный span нужен для того чтобы объединить `display: inline-flex` и `text-overflow: ellipsis`
27
- (0, jsx_runtime_1.jsx)("span", { className: cx('content'), children: fields.reduce((acc, item, i) => {
28
- let result = null;
29
- // на данный момент сочетание иконки с другими элементами не предусмотрено макетами - игнорируем
30
- switch (item.type) {
31
- case 'text':
32
- result = item.value;
33
- break;
34
- case 'timer':
35
- result = ((0, jsx_runtime_1.jsx)(timer_1.Timer, { date: item.value, timeout: 1000 * 60, format: formatDistance }, i));
36
- break;
37
- }
38
- acc.push(result);
39
- i < fields.length - 1 && acc.push(' ');
40
- return acc;
41
- }, []) })) }));
25
+ return ((0, jsx_runtime_1.jsx)("a", { ref: ref, ...restProps, "data-testid": testId, href: href, style: rootStyle, className: rootClassName, children: fields ? (0, utils_1.renderFields)(fields) : children }));
42
26
  });
43
- /**
44
- * Форматирует оставшееся время.
45
- * @param distance Оставшееся время.
46
- * @return Отформатированное время.
47
- */
48
- const formatDistance = ({ days, hours, minutes, }) => [toTimePart(days), ...[hours % 24, minutes % 60].map(toTimePart)].join(':');
49
- /**
50
- * Форматирует число добавляя нули при необходимости.
51
- * @param n Число.
52
- * @return Отформатированное число.
53
- */
54
- const toTimePart = (n) => `${n}`.padStart(2, '0');
55
27
  //# sourceMappingURL=badge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../../src/common/components/badge/badge.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../../src/common/components/badge/badge.tsx"],"names":[],"mappings":";;;;;;;AACA,iCAAmC;AACnC,mCAA8D;AAC9D,2DAAyC;AACzC,kEAAoC;AAEpC,MAAM,EAAE,GAAG,cAAU,CAAC,IAAI,CAAC,sBAAM,CAAC,CAAC;AAEnC;;;;GAIG;AACU,QAAA,KAAK,GAAG,IAAA,kBAAU,EAAgC,SAAS,KAAK,CAC3E,EACE,SAAS,EACT,KAAK,EACL,QAAQ,GAAG,SAAS,EACpB,MAAM,EACN,IAAI,EACJ,KAAK,EACL,KAAK,GAAG,OAAO,EACf,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,EAC/B,aAAa,EAAE,MAAM,GAAG,OAAO,EAC/B,QAAQ,EACR,GAAG,SAAS,EACb,EACD,GAAG;IAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;IAE/E,MAAM,aAAa,GAAG,EAAE,CACtB,MAAM,EACN,QAAQ,IAAI,WAAW,EACvB,eAAe,IAAI,mBAAmB,EACtC,KAAK,KAAK,OAAO,IAAI,aAAa,EAClC,KAAK,KAAK,MAAM,IAAI,YAAY,EAChC,KAAK,KAAK,MAAM,IAAI,CAAC,QAAQ,IAAI,mBAAmB,EACpD,KAAK,KAAK,MAAM,IAAI,CAAC,QAAQ,IAAI,gBAAgB,EACjD,QAAQ,KAAK,SAAS,IAAI,kBAAkB,EAC5C,QAAQ,KAAK,MAAM,IAAI,eAAe,EACtC,SAAS,CACV,CAAC;IAEF,MAAM,SAAS,GAAe;QAC5B,eAAe,EAAE,IAAA,6BAAqB,EAAC,KAAK,CAAC;QAC7C,GAAG,KAAK;KACT,CAAC;IAEF,OAAO,CACL,8BACE,GAAG,EAAE,GAAG,KACJ,SAAS,iBACA,MAAM,EACnB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,aAAa,YAEvB,MAAM,CAAC,CAAC,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,GACvC,CACL,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  $badge-size: 20px;
2
- $icon-size: 14px;
2
+ $icon-size: 16px;
3
3
 
4
4
  .root {
5
5
  display: inline-flex;
@@ -15,15 +15,23 @@ $icon-size: 14px;
15
15
  }
16
16
 
17
17
  .padding-x-default {
18
- // ВАЖНО: учитываем border
19
- padding-left: 5px;
20
- padding-right: 5px;
18
+ padding-left: 6px;
19
+ padding-right: 6px;
20
+ &.coloring-outline {
21
+ // ВАЖНО: учитываем border
22
+ padding-left: 5px;
23
+ padding-right: 5px;
24
+ }
21
25
  }
22
26
 
23
27
  .padding-x-pill {
24
- // ВАЖНО: учитываем border
25
- padding-left: 7px;
28
+ padding-left: 8px;
26
29
  padding-right: 8px;
30
+ &.coloring-outline {
31
+ // ВАЖНО: учитываем border
32
+ padding-left: 7px;
33
+ padding-right: 7px;
34
+ }
27
35
  }
28
36
 
29
37
  .shape-round {
@@ -74,8 +82,13 @@ $icon-size: 14px;
74
82
  }
75
83
 
76
84
  .icon {
77
- display: inline-block;
85
+ display: block;
78
86
  width: $icon-size;
79
87
  height: $icon-size;
80
88
  line-height: $icon-size;
81
89
  }
90
+
91
+ .icon + .content,
92
+ .content + .icon {
93
+ margin-left: 4px;
94
+ }
@@ -14,7 +14,7 @@ export interface BadgeProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>
14
14
  /** Как применится цвет. */
15
15
  coloring?: 'fill' | 'outline' | 'unset';
16
16
  /** Содержимое шильдика. */
17
- fields: Array<BadgeField>;
17
+ fields?: Array<BadgeField>;
18
18
  /** Форма скруглений. */
19
19
  shape?: 'round' | 'pill' | 'unset';
20
20
  /** Нужен ли эффект при наведении. */
@@ -0,0 +1,33 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { BadgeField } from './types';
3
+ /**
4
+ * Если переданное значение является токеном цвета/градиента, вернёт CSS-значение с соответствующей CSS-переменной.
5
+ * Иначе вернет само значение.
6
+ * @param value Значение.
7
+ * @return Значение или undefined.
8
+ */
9
+ export declare function tokenToCustomProperty(value: string | undefined): string | undefined;
10
+ /**
11
+ * Сформирует содержимое шильдика на основе списка полей.
12
+ * Текстовые поля (type === text | timer) идущие подряд, будут объединены в один span.
13
+ * Между текстовыми полями в span будет вставлен 1 пробел.
14
+ * @param fields Поля.
15
+ * @return СОдержимое шильдика.
16
+ */
17
+ export declare function renderFields(fields: BadgeField[]): ReactNode[];
18
+ /**
19
+ * Форматирует оставшееся время.
20
+ * @param distance Оставшееся время.
21
+ * @return Отформатированное время.
22
+ */
23
+ export declare function formatDistance({ days, hours, minutes, }: {
24
+ days: number;
25
+ hours: number;
26
+ minutes: number;
27
+ }): string;
28
+ /**
29
+ * Форматирует число добавляя нули при необходимости.
30
+ * @param n Число.
31
+ * @return Отформатированное число.
32
+ */
33
+ export declare function toTimePart(n: number): string;
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.toTimePart = exports.formatDistance = exports.renderFields = exports.tokenToCustomProperty = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const colors_1 = require("@sima-land/ui-nucleons/colors");
9
+ const gradients_1 = require("@sima-land/ui-nucleons/gradients");
10
+ const timer_1 = require("@sima-land/ui-nucleons/timer");
11
+ const badge_m_scss_1 = __importDefault(require("./badge.m.scss"));
12
+ /**
13
+ * Если переданное значение является токеном цвета/градиента, вернёт CSS-значение с соответствующей CSS-переменной.
14
+ * Иначе вернет само значение.
15
+ * @param value Значение.
16
+ * @return Значение или undefined.
17
+ */
18
+ function tokenToCustomProperty(value) {
19
+ if (typeof value !== 'string') {
20
+ return value;
21
+ }
22
+ if (value.startsWith('color/')) {
23
+ const colorName = value.replace('color/', '');
24
+ if (!colors_1.COLORS.has(colorName)) {
25
+ return value;
26
+ }
27
+ return `var(--color-${colorName})`;
28
+ }
29
+ if (value.startsWith('gradient/')) {
30
+ const gradientName = value.replace('gradient/', '');
31
+ if (!gradients_1.GRADIENTS.has(gradientName)) {
32
+ return value;
33
+ }
34
+ return `var(--gradient-${gradientName})`;
35
+ }
36
+ return value;
37
+ }
38
+ exports.tokenToCustomProperty = tokenToCustomProperty;
39
+ /**
40
+ * Сформирует содержимое шильдика на основе списка полей.
41
+ * Текстовые поля (type === text | timer) идущие подряд, будут объединены в один span.
42
+ * Между текстовыми полями в span будет вставлен 1 пробел.
43
+ * @param fields Поля.
44
+ * @return СОдержимое шильдика.
45
+ */
46
+ function renderFields(fields) {
47
+ const result = [];
48
+ let item = null;
49
+ for (const field of fields) {
50
+ if (!item) {
51
+ switch (field.type) {
52
+ case 'text': {
53
+ item = [field.value];
54
+ break;
55
+ }
56
+ case 'timer': {
57
+ item = [(0, jsx_runtime_1.jsx)(timer_1.Timer, { date: field.value, timeout: 1000 * 60, format: formatDistance }, 0)];
58
+ break;
59
+ }
60
+ case 'svg-url': {
61
+ result.push((0, jsx_runtime_1.jsx)("img", { className: badge_m_scss_1.default.icon, src: field.value, alt: '' }, result.length));
62
+ break;
63
+ }
64
+ }
65
+ }
66
+ else {
67
+ switch (field.type) {
68
+ case 'text': {
69
+ item.push(' ');
70
+ item.push(field.value);
71
+ break;
72
+ }
73
+ case 'timer': {
74
+ item.push(' ');
75
+ item.push((0, jsx_runtime_1.jsx)(timer_1.Timer, { date: field.value, timeout: 1000 * 60, format: formatDistance }, item.length));
76
+ break;
77
+ }
78
+ case 'svg-url': {
79
+ // вложенный span нужен для того чтобы объединить `display: inline-flex` и `text-overflow: ellipsis`
80
+ result.push((0, jsx_runtime_1.jsx)("span", { className: badge_m_scss_1.default.content, children: item }, result.length));
81
+ item = null;
82
+ result.push((0, jsx_runtime_1.jsx)("img", { className: badge_m_scss_1.default.icon, src: field.value, alt: '' }, result.length));
83
+ break;
84
+ }
85
+ }
86
+ }
87
+ }
88
+ if (item) {
89
+ result.push((0, jsx_runtime_1.jsx)("span", { className: badge_m_scss_1.default.content, children: item }, result.length));
90
+ item = null;
91
+ }
92
+ return result;
93
+ }
94
+ exports.renderFields = renderFields;
95
+ /**
96
+ * Форматирует оставшееся время.
97
+ * @param distance Оставшееся время.
98
+ * @return Отформатированное время.
99
+ */
100
+ function formatDistance({ days, hours, minutes, }) {
101
+ return `${toTimePart(days)}:${toTimePart(hours % 24)}:${toTimePart(minutes % 60)}`;
102
+ }
103
+ exports.formatDistance = formatDistance;
104
+ /**
105
+ * Форматирует число добавляя нули при необходимости.
106
+ * @param n Число.
107
+ * @return Отформатированное число.
108
+ */
109
+ function toTimePart(n) {
110
+ return `${n}`.padStart(2, '0');
111
+ }
112
+ exports.toTimePart = toTimePart;
113
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/common/components/badge/utils.tsx"],"names":[],"mappings":"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"}
@@ -4,4 +4,4 @@ import { ProductInfoImageProps } from '../types';
4
4
  * @param props Свойства.
5
5
  * @return Элемент.
6
6
  */
7
- export declare function ProductInfoImage({ images, href, children, anchorProps, sliderProps, ...restProps }: ProductInfoImageProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare function ProductInfoImage({ images, href, children, anchorProps, sliderProps, anchorRef, ...restProps }: ProductInfoImageProps): import("react/jsx-runtime").JSX.Element;
@@ -17,11 +17,11 @@ const image_m_scss_1 = __importDefault(require("./image.m.scss"));
17
17
  * @param props Свойства.
18
18
  * @return Элемент.
19
19
  */
20
- function ProductInfoImage({ images = [], href, children, anchorProps, sliderProps, ...restProps }) {
20
+ function ProductInfoImage({ images = [], href, children, anchorProps, sliderProps, anchorRef, ...restProps }) {
21
21
  const { restriction } = (0, react_1.useContext)(utils_1.ProductInfoContext);
22
22
  const adult = restriction === 'adult';
23
23
  const rootClassName = (0, classnames_1.default)(image_m_scss_1.default.link, restriction && !adult && image_m_scss_1.default.unavailable, anchorProps === null || anchorProps === void 0 ? void 0 : anchorProps.className);
24
- return ((0, jsx_runtime_1.jsxs)(media_1.ProductInfoMedia, { ...restProps, children: [(0, jsx_runtime_1.jsx)("a", { ...anchorProps, "data-testid": 'product-image-link', href: adult ? undefined : href, className: rootClassName, children: images.length > 1 && !adult ? ((0, jsx_runtime_1.jsx)(hover_slider_1.HoverSlider, { withNav: !adult, ...sliderProps, className: (0, classnames_1.default)(image_m_scss_1.default.slider, sliderProps === null || sliderProps === void 0 ? void 0 : sliderProps.className), children: images.map((imageProps, index) => ((0, jsx_runtime_1.jsx)(hover_slider_1.HoverSliderItem, { children: renderImage(imageProps) }, index))) })) : (images.slice(0, 1).map(renderImage)) }), !adult && (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children })] }));
24
+ return ((0, jsx_runtime_1.jsxs)(media_1.ProductInfoMedia, { ...restProps, children: [(0, jsx_runtime_1.jsx)("a", { ...anchorProps, ref: anchorRef, "data-testid": 'product-image-link', href: adult ? undefined : href, className: rootClassName, children: images.length > 1 && !adult ? ((0, jsx_runtime_1.jsx)(hover_slider_1.HoverSlider, { withNav: !adult, ...sliderProps, className: (0, classnames_1.default)(image_m_scss_1.default.slider, sliderProps === null || sliderProps === void 0 ? void 0 : sliderProps.className), children: images.map((imageProps, index) => ((0, jsx_runtime_1.jsx)(hover_slider_1.HoverSliderItem, { children: renderImage(imageProps) }, index))) })) : (images.slice(0, 1).map(renderImage)) }), !adult && (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children })] }));
25
25
  }
26
26
  exports.ProductInfoImage = ProductInfoImage;
27
27
  /** @inheritdoc */
@@ -1 +1 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../../../../src/common/components/product-info/parts/image.tsx"],"names":[],"mappings":";;;;;;;AACA,iCAAmC;AACnC,uDAAsE;AACtE,qDAAkE;AAClE,oCAA8C;AAC9C,mCAA2C;AAC3C,4DAAoC;AACpC,kEAAoC;AAEpC;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,EAC/B,MAAM,GAAG,EAAE,EACX,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,WAAW,EACX,GAAG,SAAS,EACU;IACtB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,EAAC,0BAAkB,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAG,WAAW,KAAK,OAAO,CAAC;IAEtC,MAAM,aAAa,GAAG,IAAA,oBAAU,EAC9B,sBAAM,CAAC,IAAI,EACX,WAAW,IAAI,CAAC,KAAK,IAAI,sBAAM,CAAC,WAAW,EAC3C,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,CACvB,CAAC;IAEF,OAAO,CACL,wBAAC,wBAAgB,OAAK,SAAS,aAC7B,iCACM,WAAW,iBACH,oBAAoB,EAChC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAC9B,SAAS,EAAE,aAAa,YAEvB,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7B,uBAAC,0BAAW,IACV,OAAO,EAAE,CAAC,KAAK,KACX,WAAW,EACf,SAAS,EAAE,IAAA,oBAAU,EAAC,sBAAM,CAAC,MAAM,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,CAAC,YAE3D,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CACjC,uBAAC,8BAAe,cAAc,WAAW,CAAC,UAAU,CAAC,IAA/B,KAAK,CAA6C,CACzE,CAAC,GACU,CACf,CAAC,CAAC,CAAC,CACF,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CACpC,GACC,EAGH,CAAC,KAAK,IAAI,2DAAG,QAAQ,GAAI,IACT,CACpB,CAAC;AACJ,CAAC;AA7CD,4CA6CC;AAED,kBAAkB;AAClB,SAAS,WAAW,CAAC,KAAwB,EAAE,GAAwC;IACrF,OAAO,CACL,uBAAC,4BAAY,OAAe,KAAK,EAAE,SAAS,EAAE,IAAA,oBAAU,EAAC,sBAAM,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAApE,GAAG,CAAqE,CAC5F,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../../../../src/common/components/product-info/parts/image.tsx"],"names":[],"mappings":";;;;;;;AACA,iCAAmC;AACnC,uDAAsE;AACtE,qDAAkE;AAClE,oCAA8C;AAC9C,mCAA2C;AAC3C,4DAAoC;AACpC,kEAAoC;AAEpC;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,EAC/B,MAAM,GAAG,EAAE,EACX,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,WAAW,EACX,SAAS,EACT,GAAG,SAAS,EACU;IACtB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,EAAC,0BAAkB,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAG,WAAW,KAAK,OAAO,CAAC;IAEtC,MAAM,aAAa,GAAG,IAAA,oBAAU,EAC9B,sBAAM,CAAC,IAAI,EACX,WAAW,IAAI,CAAC,KAAK,IAAI,sBAAM,CAAC,WAAW,EAC3C,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,CACvB,CAAC;IAEF,OAAO,CACL,wBAAC,wBAAgB,OAAK,SAAS,aAC7B,iCACM,WAAW,EACf,GAAG,EAAE,SAAS,iBACF,oBAAoB,EAChC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAC9B,SAAS,EAAE,aAAa,YAEvB,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7B,uBAAC,0BAAW,IACV,OAAO,EAAE,CAAC,KAAK,KACX,WAAW,EACf,SAAS,EAAE,IAAA,oBAAU,EAAC,sBAAM,CAAC,MAAM,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,CAAC,YAE3D,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CACjC,uBAAC,8BAAe,cAAc,WAAW,CAAC,UAAU,CAAC,IAA/B,KAAK,CAA6C,CACzE,CAAC,GACU,CACf,CAAC,CAAC,CAAC,CACF,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CACpC,GACC,EAGH,CAAC,KAAK,IAAI,2DAAG,QAAQ,GAAI,IACT,CACpB,CAAC;AACJ,CAAC;AA/CD,4CA+CC;AAED,kBAAkB;AAClB,SAAS,WAAW,CAAC,KAAwB,EAAE,GAAwC;IACrF,OAAO,CACL,uBAAC,4BAAY,OAAe,KAAK,EAAE,SAAS,EAAE,IAAA,oBAAU,EAAC,sBAAM,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAApE,GAAG,CAAqE,CAC5F,CAAC;AACJ,CAAC"}
@@ -26,8 +26,11 @@ export interface ProductInfoImageProps extends ProductInfoMediaProps {
26
26
  href?: string;
27
27
  /** Картинки. */
28
28
  images?: ProductImageProps[];
29
+ /** Реф элемента-ссылки. */
30
+ anchorRef?: Ref<HTMLAnchorElement>;
29
31
  /** Прочие атрибуты элемента-ссылки. */
30
32
  anchorProps?: AnchorHTMLAttributes<HTMLAnchorElement>;
33
+ /** Свойства слайдера. */
31
34
  sliderProps?: HoverSliderProps;
32
35
  }
33
36
  export interface ImageButtonProps extends Omit<StrokedSVGProps, 'component'> {
@@ -4,4 +4,4 @@ import { ProductCarouselProps } from './types';
4
4
  * @param props Свойства.
5
5
  * @return Элемент.
6
6
  */
7
- export declare function ProductCarousel({ infinite, className, itemSize, itemProps, onInViewport, onNeedRequest, children, }: ProductCarouselProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare function ProductCarousel({ infinite, className, itemSize, itemProps, onInViewport, onNeedRequest, children, controlProps, itemImageRatio, }: ProductCarouselProps): import("react/jsx-runtime").JSX.Element;
@@ -29,7 +29,7 @@ const getSizeClasses = (size) => size && size !== 'unset'
29
29
  * @param props Свойства.
30
30
  * @return Элемент.
31
31
  */
32
- function ProductCarousel({ infinite = true, className, itemSize = { xs: 4, s: 3, m: 2, l: 2, xl: 2 }, itemProps, onInViewport, onNeedRequest, children, }) {
32
+ function ProductCarousel({ infinite = true, className, itemSize = { xs: 4, s: 3, m: 2, l: 2, xl: 2 }, itemProps, onInViewport, onNeedRequest, children, controlProps, itemImageRatio = 1, }) {
33
33
  const layer = (0, helpers_1.useLayer)();
34
34
  const needBigArrows = (0, hooks_2.useMedia)('(min-width: 1600px)');
35
35
  const rootRef = (0, react_1.useRef)(null);
@@ -58,10 +58,12 @@ function ProductCarousel({ infinite = true, className, itemSize = { xs: 4, s: 3,
58
58
  size: needBigArrows ? 'l' : 's',
59
59
  style: {
60
60
  zIndex: layer + 2, // чтобы кнопки были над HoverCard
61
- top: `${itemWidth / 2}px`,
61
+ top: `${(itemWidth * itemImageRatio) / 2}px`,
62
+ ...controlProps === null || controlProps === void 0 ? void 0 : controlProps.style,
62
63
  },
64
+ ...controlProps,
63
65
  }
64
- : undefined, renderItem: (item, realIndex) => ((0, jsx_runtime_1.jsx)(CarouselItem, { rootRef: realIndex === 0 ? firstItemRef : undefined, className: cx(getSizeClasses(itemSize), itemProps === null || itemProps === void 0 ? void 0 : itemProps.className), style: itemProps === null || itemProps === void 0 ? void 0 : itemProps.style, children: item })) })) }));
66
+ : controlProps, renderItem: (item, realIndex) => ((0, jsx_runtime_1.jsx)(CarouselItem, { rootRef: realIndex === 0 ? firstItemRef : undefined, className: cx(getSizeClasses(itemSize), itemProps === null || itemProps === void 0 ? void 0 : itemProps.className), style: itemProps === null || itemProps === void 0 ? void 0 : itemProps.style, children: item })) })) }));
65
67
  }
66
68
  exports.ProductCarousel = ProductCarousel;
67
69
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"product-carousel.js","sourceRoot":"","sources":["../../../../src/desktop/components/product-carousel/product-carousel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"product-carousel.js","sourceRoot":"","sources":["../../../../src/desktop/components/product-carousel/product-carousel.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CSSProperties, ReactNode, RefObject } from 'react';
2
+ import type { CarouselProps } from '@sima-land/ui-nucleons/carousel';
2
3
  export interface ItemSize {
3
4
  xs?: 2 | 3 | 4;
4
5
  s?: 2 | 3 | 4;
@@ -24,6 +25,10 @@ export interface ProductCarouselProps {
24
25
  };
25
26
  /** Активирует "бесконечную" прокрутку карусели. */
26
27
  infinite?: boolean;
28
+ /** Свойства стрелок. */
29
+ controlProps?: CarouselProps['controlProps'];
30
+ /** Отношение высоты картинки товара к ее ширине. Нужно для позиционирования стрелок. */
31
+ itemImageRatio?: number;
27
32
  }
28
33
  export interface HoverCardProps {
29
34
  targetRef: RefObject<HTMLElement | null>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sima-land/moleculas",
3
3
  "type": "commonjs",
4
- "version": "16.0.0-alpha.30",
4
+ "version": "16.0.0-alpha.32",
5
5
  "repository": "ssh://git@github.com:sima-land/moleculas.git",
6
6
  "author": "www.sima-land.ru team",
7
7
  "license": "Apache-2.0",
@@ -56,7 +56,7 @@
56
56
  "typescript": "^5.3.3"
57
57
  },
58
58
  "peerDependencies": {
59
- "@sima-land/ui-nucleons": "^45.0.0-alpha.19",
59
+ "@sima-land/ui-nucleons": "^45.0.0-alpha.20",
60
60
  "@sima-land/ui-quarks": "^5.0.0",
61
61
  "react": "^17.0 || ^18.0"
62
62
  }