mimir-ui-kit 1.42.1 → 1.42.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/dist/assets/CardTrail.css +1 -1
- package/dist/components/CardTrail/CardTrail.js +47 -46
- package/dist/components/CardTrail/utils.d.ts +0 -1
- package/dist/components/CardTrail/utils.js +7 -8
- package/dist/components/Image/Image.d.ts +16 -0
- package/dist/components/Image/Image.js +65 -37
- package/package.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
._card-
|
1
|
+
._card-trail_1wzbr_3{display:flex;flex-direction:column}._card-trail-header_1wzbr_7{display:flex;align-items:flex-end;justify-content:space-between}._card-trail-header_1wzbr_7:not(:last-child){margin-bottom:var(--mimir-space-xs)}._card-trail-header-title_1wzbr_15{margin-bottom:0;font-weight:var(--mimir-font-weight-text-medium);font-size:var(--mimir-size-text-l);font-family:var(--mimir-font-montserrat);line-height:var(--mimir-line-height-text-s1);letter-spacing:calc(var(--mimir-size-text-l) * -.02)}@media (max-width: 600px){._card-trail-header-title_1wzbr_15{font-size:var(--mimir-size-text-m);letter-spacing:calc(var(--mimir-size-text-m) * -.02)}}._card-trail-header-merged-button_1wzbr_29{margin-left:auto}._card-trail-list_1wzbr_32{display:flex;margin-bottom:0;padding:0;overflow:auto;white-space:nowrap;scroll-behavior:smooth;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none}._card-trail-list_1wzbr_32::-webkit-scrollbar{display:none}._card-trail-list-item_1wzbr_46{white-space:normal;white-space:initial;scroll-snap-align:start}._card-trail-list-item_1wzbr_46._pointer_1wzbr_50{cursor:pointer}
|
@@ -6,52 +6,53 @@ import { hasHorizontalScroll as g, isScrollAtEdge as T } from "./utils.js";
|
|
6
6
|
import { useMergeRefs as Q } from "../../hooks/useMergeRefs/useMergeRefs.js";
|
7
7
|
import { useThrottledCallback as Z } from "../../hooks/useThrottledCallback/index.js";
|
8
8
|
import { MergedButton as rr } from "../MergedButton/MergedButton.js";
|
9
|
-
import '../../assets/CardTrail.css';const tr = "
|
10
|
-
"card-trail": "_card-
|
11
|
-
"card-trail-header": "_card-trail-
|
12
|
-
"card-trail-header-title": "_card-trail-header-
|
13
|
-
"card-trail-header-merged-button": "_card-trail-header-merged-
|
14
|
-
"card-trail-list": "_card-trail-
|
15
|
-
"card-trail-list-item": "_card-trail-list-
|
9
|
+
import '../../assets/CardTrail.css';const tr = "_pointer_1wzbr_50", i = {
|
10
|
+
"card-trail": "_card-trail_1wzbr_3",
|
11
|
+
"card-trail-header": "_card-trail-header_1wzbr_7",
|
12
|
+
"card-trail-header-title": "_card-trail-header-title_1wzbr_15",
|
13
|
+
"card-trail-header-merged-button": "_card-trail-header-merged-button_1wzbr_29",
|
14
|
+
"card-trail-list": "_card-trail-list_1wzbr_32",
|
15
|
+
"card-trail-list-item": "_card-trail-list-item_1wzbr_46",
|
16
16
|
pointer: tr
|
17
17
|
};
|
18
18
|
let v = {};
|
19
|
-
const dr = q((
|
19
|
+
const dr = q((w, D) => {
|
20
20
|
const {
|
21
|
-
cardClassName:
|
22
|
-
cardTrailClassName:
|
23
|
-
cardTrailHeaderClassName:
|
24
|
-
cardTrailListClassName:
|
25
|
-
cardTrailMergedButtonClassName:
|
26
|
-
children:
|
27
|
-
title:
|
21
|
+
cardClassName: L,
|
22
|
+
cardTrailClassName: z,
|
23
|
+
cardTrailHeaderClassName: W,
|
24
|
+
cardTrailListClassName: A,
|
25
|
+
cardTrailMergedButtonClassName: R,
|
26
|
+
children: b,
|
27
|
+
title: p,
|
28
28
|
spaceBetween: o = Y,
|
29
|
-
scrollStep:
|
30
|
-
dividedCardWidth:
|
29
|
+
scrollStep: C = G,
|
30
|
+
dividedCardWidth: k = J,
|
31
31
|
currentCardIndex: h = K,
|
32
|
-
mergedButtonProps:
|
33
|
-
scrollToCard:
|
34
|
-
needButtons:
|
32
|
+
mergedButtonProps: c,
|
33
|
+
scrollToCard: B = !1,
|
34
|
+
needButtons: I = !0,
|
35
35
|
padding: l = 0
|
36
|
-
} =
|
36
|
+
} = w, r = f(null), N = f(!0), s = f(null), [d, y] = _({
|
37
37
|
leftButton: !0,
|
38
38
|
rightButton: !1
|
39
39
|
}), [M, x] = _(0), [U, E] = _(
|
40
40
|
() => g(r == null ? void 0 : r.current)
|
41
|
-
), F = Q(r,
|
41
|
+
), F = Q(r, D), H = Z(() => {
|
42
42
|
var a;
|
43
43
|
if (N.current) {
|
44
44
|
N.current = !1;
|
45
45
|
const m = r.current, V = ((a = m == null ? void 0 : m.children[h]) == null ? void 0 : a.clientWidth) ?? 0;
|
46
46
|
x(
|
47
|
-
V /
|
48
|
-
)
|
49
|
-
paddingLeft: l,
|
50
|
-
paddingRight: l,
|
51
|
-
marginLeft: -l,
|
52
|
-
marginRight: -l
|
53
|
-
};
|
47
|
+
V / k + l + o
|
48
|
+
);
|
54
49
|
}
|
50
|
+
v = {
|
51
|
+
paddingLeft: l,
|
52
|
+
paddingRight: l,
|
53
|
+
marginLeft: -l,
|
54
|
+
marginRight: -l
|
55
|
+
};
|
55
56
|
const t = !T(r.current, "left"), e = !T(r.current, "right");
|
56
57
|
y({
|
57
58
|
leftButton: !t,
|
@@ -59,7 +60,7 @@ const dr = q((D, L) => {
|
|
59
60
|
});
|
60
61
|
}, 300), O = (t) => () => {
|
61
62
|
var a;
|
62
|
-
if (!
|
63
|
+
if (!B)
|
63
64
|
return;
|
64
65
|
const e = (a = r == null ? void 0 : r.current) == null ? void 0 : a.querySelector(
|
65
66
|
`[data-active-card='${t}']`
|
@@ -74,7 +75,7 @@ const dr = q((D, L) => {
|
|
74
75
|
if (!r.current || d.leftButton) return;
|
75
76
|
const t = r.current, e = ((a = t.children[h]) == null ? void 0 : a.clientWidth) ?? 0;
|
76
77
|
t.scrollBy({
|
77
|
-
left: -(e + o) *
|
78
|
+
left: -(e + o) * C,
|
78
79
|
behavior: "smooth"
|
79
80
|
});
|
80
81
|
}, j = () => {
|
@@ -82,7 +83,7 @@ const dr = q((D, L) => {
|
|
82
83
|
if (!r.current || d.rightButton) return;
|
83
84
|
const t = r.current, e = ((a = t.children[h]) == null ? void 0 : a.clientWidth) ?? 0;
|
84
85
|
t.scrollBy({
|
85
|
-
left: (e + o) *
|
86
|
+
left: (e + o) * C,
|
86
87
|
behavior: "smooth"
|
87
88
|
});
|
88
89
|
};
|
@@ -94,22 +95,22 @@ const dr = q((D, L) => {
|
|
94
95
|
}), s.current.observe(t), E(g(r == null ? void 0 : r.current)), () => {
|
95
96
|
s.current && s.current.disconnect();
|
96
97
|
};
|
97
|
-
}, [
|
98
|
+
}, [b]), /* @__PURE__ */ S("section", { className: n(i["card-trail"], z), children: [
|
98
99
|
/* @__PURE__ */ S(
|
99
100
|
"header",
|
100
101
|
{
|
101
102
|
className: n(
|
102
|
-
|
103
|
-
|
103
|
+
i["card-trail-header"],
|
104
|
+
W
|
104
105
|
),
|
105
106
|
children: [
|
106
|
-
|
107
|
-
U &&
|
107
|
+
p && /* @__PURE__ */ u("h3", { className: i["card-trail-header-title"], children: p }),
|
108
|
+
U && I && /* @__PURE__ */ u(
|
108
109
|
rr,
|
109
110
|
{
|
110
111
|
buttonsWrapperClassName: n(
|
111
|
-
|
112
|
-
|
112
|
+
i["card-trail-header-merged-button"],
|
113
|
+
R
|
113
114
|
),
|
114
115
|
buttons: [
|
115
116
|
{
|
@@ -119,7 +120,7 @@ const dr = q((D, L) => {
|
|
119
120
|
onClick: $,
|
120
121
|
disabled: d.leftButton,
|
121
122
|
size: "s",
|
122
|
-
...
|
123
|
+
...c == null ? void 0 : c.leftButton
|
123
124
|
},
|
124
125
|
{
|
125
126
|
isIconButton: !0,
|
@@ -128,7 +129,7 @@ const dr = q((D, L) => {
|
|
128
129
|
onClick: j,
|
129
130
|
size: "s",
|
130
131
|
disabled: d.rightButton,
|
131
|
-
...
|
132
|
+
...c == null ? void 0 : c.rightButton
|
132
133
|
}
|
133
134
|
]
|
134
135
|
}
|
@@ -145,18 +146,18 @@ const dr = q((D, L) => {
|
|
145
146
|
scrollPadding: `0 ${M}px`,
|
146
147
|
...v
|
147
148
|
},
|
148
|
-
className: n(
|
149
|
+
className: n(i["card-trail-list"], A),
|
149
150
|
ref: F,
|
150
|
-
children: X.map(
|
151
|
+
children: X.map(b, (t, e) => /* @__PURE__ */ u(
|
151
152
|
"li",
|
152
153
|
{
|
153
154
|
onClick: O(e),
|
154
155
|
"data-active-card": e,
|
155
156
|
"data-testid": `card-trail-item-${e}`,
|
156
157
|
className: n(
|
157
|
-
|
158
|
-
{ [
|
159
|
-
|
158
|
+
i["card-trail-list-item"],
|
159
|
+
{ [i.pointer]: B },
|
160
|
+
L
|
160
161
|
),
|
161
162
|
children: t
|
162
163
|
}
|
@@ -7,4 +7,3 @@
|
|
7
7
|
*/
|
8
8
|
export declare const isScrollAtEdge: (container: HTMLElement | null, direction: "left" | "right", tolerance?: number) => boolean;
|
9
9
|
export declare const hasHorizontalScroll: (element: HTMLElement | null) => boolean;
|
10
|
-
export declare const getCardWidth: <E extends Element>(element?: E) => number;
|
@@ -1,10 +1,9 @@
|
|
1
|
-
const
|
2
|
-
if (!
|
3
|
-
const { scrollLeft:
|
4
|
-
return
|
5
|
-
},
|
1
|
+
const c = (r, i, t = 1) => {
|
2
|
+
if (!r) return !0;
|
3
|
+
const { scrollLeft: l, scrollWidth: s, clientWidth: o } = r;
|
4
|
+
return i === "left" ? l <= t : l >= s - o - t;
|
5
|
+
}, e = (r) => r ? r.scrollWidth > r.clientWidth : !1;
|
6
6
|
export {
|
7
|
-
|
8
|
-
|
9
|
-
o as isScrollAtEdge
|
7
|
+
e as hasHorizontalScroll,
|
8
|
+
c as isScrollAtEdge
|
10
9
|
};
|
@@ -25,6 +25,22 @@ type TProps = ComponentProps<'img'> & {
|
|
25
25
|
* Изображение для мобильной версии
|
26
26
|
*/
|
27
27
|
mobileImage?: string;
|
28
|
+
/**
|
29
|
+
* Изображение для Retina (2x) десктопной версии
|
30
|
+
*/
|
31
|
+
desktopImage2x?: string;
|
32
|
+
/**
|
33
|
+
* Изображение для Retina (2x) мобильной версии
|
34
|
+
*/
|
35
|
+
mobileImage2x?: string;
|
36
|
+
/**
|
37
|
+
* Изображение для Super Retina (3x) десктопной версии
|
38
|
+
*/
|
39
|
+
desktopImage3x?: string;
|
40
|
+
/**
|
41
|
+
* Изображение для Super Retina (3x) мобильной версии
|
42
|
+
*/
|
43
|
+
mobileImage3x?: string;
|
28
44
|
};
|
29
45
|
/**
|
30
46
|
* Компонент для отображения изображения с возможность показа загрузки и ошибки
|
@@ -1,49 +1,77 @@
|
|
1
|
-
import { jsxs as
|
2
|
-
import { c as
|
3
|
-
import { memo as
|
4
|
-
import { EMediaQuery as
|
5
|
-
import '../../assets/Image.css';const
|
6
|
-
picture:
|
7
|
-
image:
|
8
|
-
loading:
|
9
|
-
},
|
1
|
+
import { jsxs as M, jsx as m } from "react/jsx-runtime";
|
2
|
+
import { c as S } from "../../index-DIxK0V-G.js";
|
3
|
+
import { memo as j, useState as _, useLayoutEffect as Q } from "react";
|
4
|
+
import { EMediaQuery as $, EMinMediaQuery as w } from "../../hooks/useMediaQuery/constants.js";
|
5
|
+
import '../../assets/Image.css';const z = "_picture_1hx49_2", A = "_image_1hx49_3", C = "_loading_1hx49_10", a = {
|
6
|
+
picture: z,
|
7
|
+
image: A,
|
8
|
+
loading: C
|
9
|
+
}, q = j((h) => {
|
10
10
|
const {
|
11
|
-
className:
|
12
|
-
src:
|
13
|
-
alt:
|
14
|
-
desktopImage:
|
15
|
-
mobileImage:
|
16
|
-
pictureClassName:
|
17
|
-
errorFallback:
|
18
|
-
fallback:
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
11
|
+
className: b,
|
12
|
+
src: o,
|
13
|
+
alt: k = "image",
|
14
|
+
desktopImage: r,
|
15
|
+
mobileImage: s,
|
16
|
+
pictureClassName: E,
|
17
|
+
errorFallback: l,
|
18
|
+
fallback: n,
|
19
|
+
desktopImage2x: g,
|
20
|
+
mobileImage2x: u,
|
21
|
+
desktopImage3x: d,
|
22
|
+
mobileImage3x: p,
|
23
|
+
...N
|
24
|
+
} = h, [t, f] = _(!0), [y, L] = _(!1);
|
25
|
+
if (Q(() => {
|
26
|
+
const e = new Image();
|
27
|
+
e.src = o ?? r ?? s ?? "", e.onload = () => {
|
28
|
+
f(!1);
|
29
|
+
}, e.onerror = () => {
|
30
|
+
f(!1), L(!0);
|
27
31
|
};
|
28
|
-
}, [
|
32
|
+
}, [o, r, s]), t && n)
|
33
|
+
return n;
|
34
|
+
if (y && l)
|
35
|
+
return l;
|
36
|
+
const i = (e, x, I) => {
|
37
|
+
let c = e;
|
38
|
+
return x && (c += `, ${x} 2x`), I && (c += `, ${I} 3x`), c;
|
39
|
+
};
|
40
|
+
return /* @__PURE__ */ M(
|
29
41
|
"picture",
|
30
42
|
{
|
31
|
-
className:
|
32
|
-
[
|
43
|
+
className: S(a.picture, E, {
|
44
|
+
[a.loading]: t
|
33
45
|
}),
|
34
46
|
children: [
|
35
|
-
|
36
|
-
|
37
|
-
|
47
|
+
s && /* @__PURE__ */ m(
|
48
|
+
"source",
|
49
|
+
{
|
50
|
+
srcSet: i(s, u, p),
|
51
|
+
media: $.XS1
|
52
|
+
}
|
53
|
+
),
|
54
|
+
r && /* @__PURE__ */ m(
|
55
|
+
"source",
|
56
|
+
{
|
57
|
+
srcSet: i(r, g, d),
|
58
|
+
media: w.S
|
59
|
+
}
|
60
|
+
),
|
61
|
+
/* @__PURE__ */ m(
|
38
62
|
"img",
|
39
63
|
{
|
40
|
-
...
|
41
|
-
className:
|
42
|
-
[
|
64
|
+
...N,
|
65
|
+
className: S(a.image, b, {
|
66
|
+
[a.loading]: t
|
43
67
|
}),
|
44
68
|
loading: "lazy",
|
45
|
-
|
46
|
-
|
69
|
+
srcSet: i(
|
70
|
+
o ?? "",
|
71
|
+
g ?? u,
|
72
|
+
d ?? p
|
73
|
+
),
|
74
|
+
alt: k
|
47
75
|
}
|
48
76
|
)
|
49
77
|
]
|
@@ -51,5 +79,5 @@ import '../../assets/Image.css';const b = "_picture_1hx49_2", k = "_image_1hx49_
|
|
51
79
|
);
|
52
80
|
});
|
53
81
|
export {
|
54
|
-
|
82
|
+
q as AppImage
|
55
83
|
};
|