mimir-ui-kit 1.41.5 → 1.41.6
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.
@@ -1 +1 @@
|
|
1
|
-
._card-
|
1
|
+
._card-trail_c21mz_3{display:flex;flex-direction:column}._card-trail-header_c21mz_7{display:flex;align-items:flex-end;justify-content:space-between}._card-trail-header_c21mz_7:not(:last-child){margin-bottom:var(--mimir-space-xs)}._card-trail-header-title_c21mz_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_c21mz_15{font-size:var(--mimir-size-text-m);letter-spacing:calc(var(--mimir-size-text-m) * -.02)}}._card-trail-header-merged-button_c21mz_29{margin-left:auto}._card-trail-list_c21mz_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}._card-trail-list_c21mz_32::-webkit-scrollbar{display:none}._card-trail-list-item_c21mz_45{white-space:normal;white-space:initial;scroll-snap-align:start}._card-trail-list-item_c21mz_45._pointer_c21mz_49{cursor:pointer}
|
@@ -9,10 +9,18 @@ export type TProps = {
|
|
9
9
|
* Расстояние между карточками.
|
10
10
|
*/
|
11
11
|
spaceBetween?: number;
|
12
|
+
/**
|
13
|
+
* Делитель ширины карточками, который позволяет оставлять предыдщую карточку немного выглядывать.
|
14
|
+
*/
|
15
|
+
dividedCardWidth?: number;
|
12
16
|
/**
|
13
17
|
* Количество карточек для перелистывания.
|
14
18
|
*/
|
15
19
|
scrollStep?: number;
|
20
|
+
/**
|
21
|
+
* Index карточке, у которой надо брать ширирну.
|
22
|
+
*/
|
23
|
+
currentCardIndex?: number;
|
16
24
|
/**
|
17
25
|
* Флаг, определяющий, нужно ли при клике на карточку скроллиться до нее.
|
18
26
|
*/
|
@@ -1,116 +1,118 @@
|
|
1
|
-
import { jsxs as
|
1
|
+
import { jsxs as N, jsx as s } from "react/jsx-runtime";
|
2
2
|
import { c as i } from "../../index-DIxK0V-G.js";
|
3
|
-
import { forwardRef as
|
4
|
-
import { DEFAULT_SPACE_BETWEEN as
|
5
|
-
import { hasHorizontalScroll as
|
6
|
-
import { useMergeRefs as
|
7
|
-
import { useThrottledCallback as
|
8
|
-
import { MergedButton as
|
9
|
-
import '../../assets/CardTrail.css';const
|
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-
|
16
|
-
pointer:
|
17
|
-
},
|
3
|
+
import { forwardRef as H, useRef as E, useState as u, useEffect as O, Children as $ } from "react";
|
4
|
+
import { DEFAULT_SPACE_BETWEEN as j, DEFAULT_SCROLL_STEP as V, DEFAULT_DIVIDED as q, DEFAULT_CARD_INDEX as X } from "./constants.js";
|
5
|
+
import { hasHorizontalScroll as h, isScrollAtEdge as S } from "./utils.js";
|
6
|
+
import { useMergeRefs as G } from "../../hooks/useMergeRefs/useMergeRefs.js";
|
7
|
+
import { useThrottledCallback as J } from "../../hooks/useThrottledCallback/index.js";
|
8
|
+
import { MergedButton as K } from "../MergedButton/MergedButton.js";
|
9
|
+
import '../../assets/CardTrail.css';const P = "_pointer_c21mz_49", c = {
|
10
|
+
"card-trail": "_card-trail_c21mz_3",
|
11
|
+
"card-trail-header": "_card-trail-header_c21mz_7",
|
12
|
+
"card-trail-header-title": "_card-trail-header-title_c21mz_15",
|
13
|
+
"card-trail-header-merged-button": "_card-trail-header-merged-button_c21mz_29",
|
14
|
+
"card-trail-list": "_card-trail-list_c21mz_32",
|
15
|
+
"card-trail-list-item": "_card-trail-list-item_c21mz_45",
|
16
|
+
pointer: P
|
17
|
+
}, lr = H((v, D) => {
|
18
18
|
const {
|
19
|
-
cardClassName:
|
20
|
-
cardTrailClassName:
|
21
|
-
cardTrailHeaderClassName:
|
22
|
-
cardTrailListClassName:
|
23
|
-
cardTrailMergedButtonClassName:
|
24
|
-
children:
|
25
|
-
title:
|
26
|
-
spaceBetween: d =
|
27
|
-
scrollStep:
|
28
|
-
mergedButtonProps:
|
29
|
-
scrollToCard:
|
30
|
-
needButtons:
|
31
|
-
|
19
|
+
cardClassName: T,
|
20
|
+
cardTrailClassName: z,
|
21
|
+
cardTrailHeaderClassName: L,
|
22
|
+
cardTrailListClassName: A,
|
23
|
+
cardTrailMergedButtonClassName: W,
|
24
|
+
children: m,
|
25
|
+
title: f,
|
26
|
+
spaceBetween: d = j,
|
27
|
+
scrollStep: _ = V,
|
28
|
+
mergedButtonProps: l,
|
29
|
+
scrollToCard: C = !1,
|
30
|
+
needButtons: k = !0,
|
31
|
+
dividedCardWidth: p = q,
|
32
|
+
currentCardIndex: g = X
|
33
|
+
} = v, r = E(null), n = E(null), [o, I] = u({
|
32
34
|
leftButton: !0,
|
33
35
|
rightButton: !1
|
34
|
-
}), [
|
35
|
-
() =>
|
36
|
-
),
|
37
|
-
const
|
38
|
-
|
39
|
-
leftButton: !
|
40
|
-
rightButton: !
|
36
|
+
}), [w, B] = u(0), [y, b] = u(
|
37
|
+
() => h(r == null ? void 0 : r.current)
|
38
|
+
), x = G(r, D), M = J(() => {
|
39
|
+
const e = !S(r.current, "left"), t = !S(r.current, "right");
|
40
|
+
I({
|
41
|
+
leftButton: !e,
|
42
|
+
rightButton: !t
|
41
43
|
});
|
42
|
-
}, 300),
|
44
|
+
}, 300), F = (e) => () => {
|
43
45
|
var a;
|
44
|
-
if (!
|
46
|
+
if (!C)
|
45
47
|
return;
|
46
|
-
const
|
47
|
-
`[data-active-card='${
|
48
|
+
const t = (a = r == null ? void 0 : r.current) == null ? void 0 : a.querySelector(
|
49
|
+
`[data-active-card='${e}']`
|
48
50
|
);
|
49
|
-
|
51
|
+
t && (t == null || t.scrollIntoView({
|
50
52
|
behavior: "smooth",
|
51
53
|
block: "nearest",
|
52
54
|
inline: "center"
|
53
55
|
}));
|
54
|
-
},
|
56
|
+
}, R = () => {
|
55
57
|
var a;
|
56
58
|
if (!r.current || o.leftButton) return;
|
57
|
-
const
|
58
|
-
t.scrollBy({
|
59
|
-
left: -(
|
59
|
+
const e = r.current, t = ((a = e.children[g]) == null ? void 0 : a.clientWidth) ?? 0;
|
60
|
+
B(t / p), e.scrollBy({
|
61
|
+
left: -(t + d) * _,
|
60
62
|
behavior: "smooth"
|
61
63
|
});
|
62
|
-
},
|
64
|
+
}, U = () => {
|
63
65
|
var a;
|
64
66
|
if (!r.current || o.rightButton) return;
|
65
|
-
const
|
66
|
-
t.scrollBy({
|
67
|
-
left: (
|
67
|
+
const e = r.current, t = ((a = e.children[g]) == null ? void 0 : a.clientWidth) ?? 0;
|
68
|
+
B(t / p), e.scrollBy({
|
69
|
+
left: (t + d) * _,
|
68
70
|
behavior: "smooth"
|
69
71
|
});
|
70
72
|
};
|
71
|
-
return
|
72
|
-
const
|
73
|
-
if (
|
73
|
+
return O(() => {
|
74
|
+
const e = r.current;
|
75
|
+
if (e)
|
74
76
|
return n.current = new ResizeObserver(() => {
|
75
|
-
|
76
|
-
}), n.current.observe(
|
77
|
+
b(h(r == null ? void 0 : r.current));
|
78
|
+
}), n.current.observe(e), b(h(r == null ? void 0 : r.current)), () => {
|
77
79
|
n.current && n.current.disconnect();
|
78
80
|
};
|
79
|
-
}, [
|
80
|
-
/* @__PURE__ */
|
81
|
+
}, [m]), /* @__PURE__ */ N("section", { className: i(c["card-trail"], z), children: [
|
82
|
+
/* @__PURE__ */ N(
|
81
83
|
"header",
|
82
84
|
{
|
83
85
|
className: i(
|
84
|
-
|
85
|
-
|
86
|
+
c["card-trail-header"],
|
87
|
+
L
|
86
88
|
),
|
87
89
|
children: [
|
88
|
-
|
89
|
-
|
90
|
-
|
90
|
+
f && /* @__PURE__ */ s("h3", { className: c["card-trail-header-title"], children: f }),
|
91
|
+
y && k && /* @__PURE__ */ s(
|
92
|
+
K,
|
91
93
|
{
|
92
94
|
buttonsWrapperClassName: i(
|
93
|
-
|
94
|
-
|
95
|
+
c["card-trail-header-merged-button"],
|
96
|
+
W
|
95
97
|
),
|
96
98
|
buttons: [
|
97
99
|
{
|
98
100
|
isIconButton: !0,
|
99
101
|
iconName: "ArrowLeft16px",
|
100
102
|
variant: "gray",
|
101
|
-
onClick:
|
103
|
+
onClick: R,
|
102
104
|
disabled: o.leftButton,
|
103
105
|
size: "s",
|
104
|
-
...
|
106
|
+
...l == null ? void 0 : l.leftButton
|
105
107
|
},
|
106
108
|
{
|
107
109
|
isIconButton: !0,
|
108
110
|
iconName: "ArrowRight16px",
|
109
111
|
variant: "gray",
|
110
|
-
onClick:
|
112
|
+
onClick: U,
|
111
113
|
size: "s",
|
112
114
|
disabled: o.rightButton,
|
113
|
-
...
|
115
|
+
...l == null ? void 0 : l.rightButton
|
114
116
|
}
|
115
117
|
]
|
116
118
|
}
|
@@ -121,22 +123,22 @@ import '../../assets/CardTrail.css';const q = "_pointer_vv8gl_49", l = {
|
|
121
123
|
/* @__PURE__ */ s(
|
122
124
|
"ul",
|
123
125
|
{
|
124
|
-
onScroll:
|
125
|
-
style: { gap: d },
|
126
|
-
className: i(
|
127
|
-
ref:
|
128
|
-
children:
|
126
|
+
onScroll: M,
|
127
|
+
style: { gap: d, scrollPadding: `0 ${w}px` },
|
128
|
+
className: i(c["card-trail-list"], A),
|
129
|
+
ref: x,
|
130
|
+
children: $.map(m, (e, t) => /* @__PURE__ */ s(
|
129
131
|
"li",
|
130
132
|
{
|
131
|
-
onClick:
|
132
|
-
"data-active-card":
|
133
|
-
"data-testid": `card-trail-item-${
|
133
|
+
onClick: F(t),
|
134
|
+
"data-active-card": t,
|
135
|
+
"data-testid": `card-trail-item-${t}`,
|
134
136
|
className: i(
|
135
|
-
|
136
|
-
{ [
|
137
|
-
|
137
|
+
c["card-trail-list-item"],
|
138
|
+
{ [c.pointer]: C },
|
139
|
+
T
|
138
140
|
),
|
139
|
-
children:
|
141
|
+
children: e
|
140
142
|
}
|
141
143
|
))
|
142
144
|
}
|
@@ -144,5 +146,5 @@ import '../../assets/CardTrail.css';const q = "_pointer_vv8gl_49", l = {
|
|
144
146
|
] });
|
145
147
|
});
|
146
148
|
export {
|
147
|
-
|
149
|
+
lr as CardTrail
|
148
150
|
};
|