@wallarm-org/design-system 2.1.2 → 2.2.0-rc-fix-overflow-list-api.1
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/components/Drawer/DrawerContent.d.ts +1 -1
- package/dist/components/Drawer/DrawerContent.js +54 -31
- package/dist/components/Drawer/DrawerContext/DrawerProvider.js +27 -24
- package/dist/components/Drawer/DrawerContext/types.d.ts +2 -0
- package/dist/components/Drawer/DrawerRoot.d.ts +16 -2
- package/dist/components/Drawer/DrawerRoot.js +54 -16
- package/dist/components/OverflowList/OverflowList.d.ts +18 -9
- package/dist/components/OverflowList/OverflowList.js +193 -204
- package/dist/components/OverflowList/OverflowListContext.d.ts +25 -0
- package/dist/components/OverflowList/OverflowListContext.js +12 -0
- package/dist/components/OverflowList/OverflowListMore.d.ts +17 -0
- package/dist/components/OverflowList/OverflowListMore.js +85 -0
- package/dist/components/OverflowList/OverflowListMoreContent.d.ts +7 -0
- package/dist/components/OverflowList/OverflowListMoreContent.js +60 -0
- package/dist/components/OverflowList/OverflowListMoreCount.d.ts +8 -0
- package/dist/components/OverflowList/OverflowListMoreCount.js +41 -0
- package/dist/components/OverflowList/OverflowListMoreHeader.d.ts +7 -0
- package/dist/components/OverflowList/OverflowListMoreHeader.js +36 -0
- package/dist/components/OverflowList/OverflowListMoreItems.d.ts +18 -0
- package/dist/components/OverflowList/OverflowListMoreItems.js +105 -0
- package/dist/components/OverflowList/OverflowListMoreTrigger.d.ts +10 -0
- package/dist/components/OverflowList/OverflowListMoreTrigger.js +143 -0
- package/dist/components/OverflowList/classes.d.ts +3 -0
- package/dist/components/OverflowList/classes.js +13 -0
- package/dist/components/OverflowList/index.d.ts +8 -1
- package/dist/components/OverflowList/index.js +7 -0
- package/dist/components/OverflowList/useOverflowListMore.d.ts +12 -0
- package/dist/components/OverflowList/useOverflowListMore.js +22 -0
- package/dist/components/Popover/index.d.ts +1 -1
- package/dist/components/Select/SelectInput/SelectInputOverflowRenderer.d.ts +1 -3
- package/dist/components/Select/SelectInput/SelectInputOverflowRenderer.js +16 -26
- package/dist/components/Table/hooks/useMasterCell.js +1 -0
- package/dist/metadata/components.json +2050 -506
- package/package.json +1 -1
- package/dist/components/OverflowList/DefaultOverflowRenderer.d.ts +0 -17
- package/dist/components/OverflowList/DefaultOverflowRenderer.js +0 -179
|
@@ -1,194 +1,124 @@
|
|
|
1
1
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { c } from "react/compiler-runtime";
|
|
3
|
-
import { memo, useEffect, useRef
|
|
3
|
+
import { memo, useEffect, useRef } from "react";
|
|
4
4
|
import { useOverflowItems } from "../../hooks/index.js";
|
|
5
5
|
import { cn } from "../../utils/cn.js";
|
|
6
|
-
import { DefaultOverflowRenderer } from "./DefaultOverflowRenderer.js";
|
|
7
6
|
import { OVERFLOW_RESERVE_SPACE, areItemsShallowEqual, resolveVisibleItems } from "./OverflowList.helpers.js";
|
|
7
|
+
import { OverflowListProvider } from "./OverflowListContext.js";
|
|
8
|
+
import { OverflowListMore } from "./OverflowListMore.js";
|
|
9
|
+
const NO_ITEMS = [];
|
|
10
|
+
const renderDefaultOverflow = ()=>/*#__PURE__*/ jsx(OverflowListMore, {});
|
|
8
11
|
const OverflowListComponent = (t0)=>{
|
|
9
|
-
const $ = c(
|
|
12
|
+
const $ = c(74);
|
|
10
13
|
let className;
|
|
11
14
|
let itemRenderer;
|
|
12
15
|
let items;
|
|
13
16
|
let onOverflow;
|
|
14
|
-
let overflowHeaderLabel;
|
|
15
|
-
let overflowRenderer;
|
|
16
17
|
let props;
|
|
17
18
|
let t1;
|
|
18
19
|
let t2;
|
|
19
20
|
let t3;
|
|
20
21
|
let t4;
|
|
21
|
-
let
|
|
22
|
-
let t6;
|
|
22
|
+
let testId;
|
|
23
23
|
if ($[0] !== t0) {
|
|
24
|
-
({ items, itemRenderer, overflowRenderer
|
|
24
|
+
({ items, itemRenderer, overflowRenderer: t1, className, collapseFrom: t2, minVisibleItems: t3, alwaysRenderOverflow: t4, onOverflow, "data-testid": testId, ...props } = t0);
|
|
25
25
|
$[0] = t0;
|
|
26
26
|
$[1] = className;
|
|
27
27
|
$[2] = itemRenderer;
|
|
28
28
|
$[3] = items;
|
|
29
29
|
$[4] = onOverflow;
|
|
30
|
-
$[5] =
|
|
31
|
-
$[6] =
|
|
32
|
-
$[7] =
|
|
33
|
-
$[8] =
|
|
34
|
-
$[9] =
|
|
35
|
-
$[10] =
|
|
36
|
-
$[11] = t4;
|
|
37
|
-
$[12] = t5;
|
|
38
|
-
$[13] = t6;
|
|
30
|
+
$[5] = props;
|
|
31
|
+
$[6] = t1;
|
|
32
|
+
$[7] = t2;
|
|
33
|
+
$[8] = t3;
|
|
34
|
+
$[9] = t4;
|
|
35
|
+
$[10] = testId;
|
|
39
36
|
} else {
|
|
40
37
|
className = $[1];
|
|
41
38
|
itemRenderer = $[2];
|
|
42
39
|
items = $[3];
|
|
43
40
|
onOverflow = $[4];
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
t4 = $[11];
|
|
51
|
-
t5 = $[12];
|
|
52
|
-
t6 = $[13];
|
|
41
|
+
props = $[5];
|
|
42
|
+
t1 = $[6];
|
|
43
|
+
t2 = $[7];
|
|
44
|
+
t3 = $[8];
|
|
45
|
+
t4 = $[9];
|
|
46
|
+
testId = $[10];
|
|
53
47
|
}
|
|
54
|
-
const
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
const
|
|
58
|
-
const minVisibleItems = void 0 === t5 ? 0 : t5;
|
|
59
|
-
const alwaysRenderOverflow = void 0 === t6 ? false : t6;
|
|
48
|
+
const overflowRenderer = void 0 === t1 ? renderDefaultOverflow : t1;
|
|
49
|
+
const collapseFrom = void 0 === t2 ? "end" : t2;
|
|
50
|
+
const minVisibleItems = void 0 === t3 ? 0 : t3;
|
|
51
|
+
const alwaysRenderOverflow = void 0 === t4 ? false : t4;
|
|
60
52
|
let map;
|
|
61
|
-
if ($[
|
|
53
|
+
if ($[11] !== items) {
|
|
62
54
|
map = new Map();
|
|
63
55
|
items.forEach((item, index)=>{
|
|
64
56
|
if (!map.has(item)) map.set(item, index);
|
|
65
57
|
});
|
|
66
|
-
$[
|
|
67
|
-
$[
|
|
68
|
-
} else map = $[
|
|
58
|
+
$[11] = items;
|
|
59
|
+
$[12] = map;
|
|
60
|
+
} else map = $[12];
|
|
69
61
|
const indexMap = map;
|
|
70
|
-
let
|
|
62
|
+
let t5;
|
|
63
|
+
if ($[13] !== indexMap || $[14] !== itemRenderer) {
|
|
64
|
+
t5 = (item_0)=>itemRenderer(item_0, indexMap.get(item_0) ?? 0);
|
|
65
|
+
$[13] = indexMap;
|
|
66
|
+
$[14] = itemRenderer;
|
|
67
|
+
$[15] = t5;
|
|
68
|
+
} else t5 = $[15];
|
|
69
|
+
const memoizedItemRenderer = t5;
|
|
70
|
+
let t6;
|
|
71
71
|
if ($[16] !== indexMap || $[17] !== itemRenderer) {
|
|
72
|
-
|
|
72
|
+
t6 = (item_1)=>itemRenderer(item_1, indexMap.get(item_1) ?? 0);
|
|
73
73
|
$[16] = indexMap;
|
|
74
74
|
$[17] = itemRenderer;
|
|
75
|
-
$[18] =
|
|
76
|
-
} else
|
|
77
|
-
const
|
|
78
|
-
let
|
|
79
|
-
if ($[19] !==
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
$[21] = t8;
|
|
84
|
-
} else t8 = $[21];
|
|
85
|
-
const memoizedMeasurementRenderer = t8;
|
|
86
|
-
const [overlayOffset, setOverlayOffset] = useState(0);
|
|
87
|
-
const triggerRef = useRef(null);
|
|
88
|
-
let t9;
|
|
89
|
-
if ($[22] !== dimVisibleItems || $[23] !== itemRenderer || $[24] !== overflowHeaderLabel || $[25] !== overlayOffset || $[26] !== overlayOrigin || $[27] !== showAll) {
|
|
90
|
-
t9 = (data)=>/*#__PURE__*/ jsx(DefaultOverflowRenderer, {
|
|
91
|
-
data: data,
|
|
92
|
-
itemRenderer: itemRenderer,
|
|
93
|
-
overflowHeaderLabel: overflowHeaderLabel,
|
|
94
|
-
showAll: showAll,
|
|
95
|
-
overlayOrigin: overlayOrigin,
|
|
96
|
-
dimVisibleItems: dimVisibleItems,
|
|
97
|
-
overlayOffset: overlayOffset,
|
|
98
|
-
triggerRef: triggerRef
|
|
75
|
+
$[18] = t6;
|
|
76
|
+
} else t6 = $[18];
|
|
77
|
+
const memoizedMeasurementRenderer = t6;
|
|
78
|
+
let t7;
|
|
79
|
+
if ($[19] !== overflowRenderer) {
|
|
80
|
+
t7 = (allItems)=>overflowRenderer(allItems, {
|
|
81
|
+
allItems,
|
|
82
|
+
visibleItems: NO_ITEMS
|
|
99
83
|
});
|
|
100
|
-
$[
|
|
101
|
-
$[
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
} else t9 = $[28];
|
|
108
|
-
const defaultOverflowRenderer = t9;
|
|
109
|
-
const finalOverflowRenderer = overflowRenderer ?? defaultOverflowRenderer;
|
|
110
|
-
let t10;
|
|
111
|
-
if ($[29] !== finalOverflowRenderer || $[30] !== items) {
|
|
112
|
-
t10 = (hiddenItems)=>{
|
|
113
|
-
const data_0 = {
|
|
114
|
-
allItems: items,
|
|
115
|
-
visibleCount: items.length - hiddenItems.length,
|
|
116
|
-
hiddenCount: hiddenItems.length
|
|
117
|
-
};
|
|
118
|
-
return finalOverflowRenderer(data_0);
|
|
119
|
-
};
|
|
120
|
-
$[29] = finalOverflowRenderer;
|
|
121
|
-
$[30] = items;
|
|
122
|
-
$[31] = t10;
|
|
123
|
-
} else t10 = $[31];
|
|
124
|
-
const wrappedOverflowRenderer = t10;
|
|
125
|
-
let t11;
|
|
126
|
-
if ($[32] !== items || $[33] !== memoizedMeasurementRenderer || $[34] !== wrappedOverflowRenderer) {
|
|
127
|
-
t11 = {
|
|
84
|
+
$[19] = overflowRenderer;
|
|
85
|
+
$[20] = t7;
|
|
86
|
+
} else t7 = $[20];
|
|
87
|
+
const measurementOverflowRenderer = t7;
|
|
88
|
+
let t8;
|
|
89
|
+
if ($[21] !== items || $[22] !== measurementOverflowRenderer || $[23] !== memoizedMeasurementRenderer) {
|
|
90
|
+
t8 = {
|
|
128
91
|
items,
|
|
129
92
|
renderItem: memoizedMeasurementRenderer,
|
|
130
|
-
overflowRenderer:
|
|
93
|
+
overflowRenderer: measurementOverflowRenderer,
|
|
131
94
|
reserveSpace: OVERFLOW_RESERVE_SPACE
|
|
132
95
|
};
|
|
133
|
-
$[
|
|
134
|
-
$[
|
|
135
|
-
$[
|
|
136
|
-
$[
|
|
137
|
-
} else
|
|
138
|
-
const { containerRef, visibleItems, hiddenItems
|
|
139
|
-
let
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
t12 = ()=>{
|
|
143
|
-
if (!overlayOrigin || !containerRef.current || !triggerRef.current) return;
|
|
144
|
-
const updateOffset = ()=>{
|
|
145
|
-
if (containerRef.current && triggerRef.current) {
|
|
146
|
-
const containerRect = containerRef.current.getBoundingClientRect();
|
|
147
|
-
const triggerRect = triggerRef.current.getBoundingClientRect();
|
|
148
|
-
const offset = -(triggerRect.left - containerRect.left);
|
|
149
|
-
setOverlayOffset(offset);
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
updateOffset();
|
|
153
|
-
const resizeObserver = new ResizeObserver(updateOffset);
|
|
154
|
-
resizeObserver.observe(containerRef.current);
|
|
155
|
-
if (triggerRef.current) resizeObserver.observe(triggerRef.current);
|
|
156
|
-
return ()=>resizeObserver.disconnect();
|
|
157
|
-
};
|
|
158
|
-
t13 = [
|
|
159
|
-
overlayOrigin,
|
|
160
|
-
containerRef
|
|
161
|
-
];
|
|
162
|
-
$[36] = containerRef;
|
|
163
|
-
$[37] = overlayOrigin;
|
|
164
|
-
$[38] = t12;
|
|
165
|
-
$[39] = t13;
|
|
166
|
-
} else {
|
|
167
|
-
t12 = $[38];
|
|
168
|
-
t13 = $[39];
|
|
169
|
-
}
|
|
170
|
-
useEffect(t12, t13);
|
|
171
|
-
let t14;
|
|
172
|
-
if ($[40] !== hiddenItems_0 || $[41] !== items || $[42] !== minVisibleItems || $[43] !== visibleItems) {
|
|
173
|
-
t14 = resolveVisibleItems({
|
|
96
|
+
$[21] = items;
|
|
97
|
+
$[22] = measurementOverflowRenderer;
|
|
98
|
+
$[23] = memoizedMeasurementRenderer;
|
|
99
|
+
$[24] = t8;
|
|
100
|
+
} else t8 = $[24];
|
|
101
|
+
const { containerRef, visibleItems, hiddenItems, MeasurementContainer } = useOverflowItems(t8);
|
|
102
|
+
let t9;
|
|
103
|
+
if ($[25] !== hiddenItems || $[26] !== items || $[27] !== minVisibleItems || $[28] !== visibleItems) {
|
|
104
|
+
t9 = resolveVisibleItems({
|
|
174
105
|
items,
|
|
175
106
|
visibleItems,
|
|
176
|
-
hiddenItems
|
|
107
|
+
hiddenItems,
|
|
177
108
|
minVisibleItems
|
|
178
109
|
});
|
|
179
|
-
$[
|
|
180
|
-
$[
|
|
181
|
-
$[
|
|
182
|
-
$[
|
|
183
|
-
$[
|
|
184
|
-
} else
|
|
185
|
-
const { visibleItems: finalVisibleItems, hiddenItems: finalHiddenItems } =
|
|
186
|
-
const finalHiddenCount = finalHiddenItems.length;
|
|
110
|
+
$[25] = hiddenItems;
|
|
111
|
+
$[26] = items;
|
|
112
|
+
$[27] = minVisibleItems;
|
|
113
|
+
$[28] = visibleItems;
|
|
114
|
+
$[29] = t9;
|
|
115
|
+
} else t9 = $[29];
|
|
116
|
+
const { visibleItems: finalVisibleItems, hiddenItems: finalHiddenItems } = t9;
|
|
187
117
|
const prevHiddenRef = useRef(null);
|
|
188
|
-
let
|
|
189
|
-
let
|
|
190
|
-
if ($[
|
|
191
|
-
|
|
118
|
+
let t10;
|
|
119
|
+
let t11;
|
|
120
|
+
if ($[30] !== finalHiddenItems || $[31] !== onOverflow) {
|
|
121
|
+
t10 = ()=>{
|
|
192
122
|
if (!onOverflow || 0 === finalHiddenItems.length) {
|
|
193
123
|
prevHiddenRef.current = finalHiddenItems;
|
|
194
124
|
return;
|
|
@@ -196,97 +126,156 @@ const OverflowListComponent = (t0)=>{
|
|
|
196
126
|
if (!areItemsShallowEqual(prevHiddenRef.current, finalHiddenItems)) onOverflow(finalHiddenItems);
|
|
197
127
|
prevHiddenRef.current = finalHiddenItems;
|
|
198
128
|
};
|
|
199
|
-
|
|
129
|
+
t11 = [
|
|
200
130
|
finalHiddenItems,
|
|
201
131
|
onOverflow
|
|
202
132
|
];
|
|
203
|
-
$[
|
|
204
|
-
$[
|
|
205
|
-
$[
|
|
206
|
-
$[
|
|
133
|
+
$[30] = finalHiddenItems;
|
|
134
|
+
$[31] = onOverflow;
|
|
135
|
+
$[32] = t10;
|
|
136
|
+
$[33] = t11;
|
|
207
137
|
} else {
|
|
208
|
-
|
|
209
|
-
|
|
138
|
+
t10 = $[32];
|
|
139
|
+
t11 = $[33];
|
|
210
140
|
}
|
|
211
|
-
useEffect(
|
|
212
|
-
let
|
|
141
|
+
useEffect(t10, t11);
|
|
142
|
+
let t12;
|
|
143
|
+
if ($[34] !== containerRef || $[35] !== finalHiddenItems || $[36] !== finalVisibleItems || $[37] !== itemRenderer || $[38] !== items || $[39] !== testId) {
|
|
144
|
+
t12 = {
|
|
145
|
+
allItems: items,
|
|
146
|
+
visibleItems: finalVisibleItems,
|
|
147
|
+
hiddenItems: finalHiddenItems,
|
|
148
|
+
itemRenderer,
|
|
149
|
+
containerRef,
|
|
150
|
+
measuring: false,
|
|
151
|
+
testId
|
|
152
|
+
};
|
|
153
|
+
$[34] = containerRef;
|
|
154
|
+
$[35] = finalHiddenItems;
|
|
155
|
+
$[36] = finalVisibleItems;
|
|
156
|
+
$[37] = itemRenderer;
|
|
157
|
+
$[38] = items;
|
|
158
|
+
$[39] = testId;
|
|
159
|
+
$[40] = t12;
|
|
160
|
+
} else t12 = $[40];
|
|
161
|
+
const context = t12;
|
|
162
|
+
let t13;
|
|
163
|
+
if ($[41] !== containerRef || $[42] !== itemRenderer || $[43] !== items) {
|
|
164
|
+
t13 = {
|
|
165
|
+
allItems: items,
|
|
166
|
+
visibleItems: NO_ITEMS,
|
|
167
|
+
hiddenItems: items,
|
|
168
|
+
itemRenderer,
|
|
169
|
+
containerRef,
|
|
170
|
+
measuring: true,
|
|
171
|
+
testId: void 0
|
|
172
|
+
};
|
|
173
|
+
$[41] = containerRef;
|
|
174
|
+
$[42] = itemRenderer;
|
|
175
|
+
$[43] = items;
|
|
176
|
+
$[44] = t13;
|
|
177
|
+
} else t13 = $[44];
|
|
178
|
+
const measurementContext = t13;
|
|
179
|
+
let t14;
|
|
213
180
|
bb0: {
|
|
214
|
-
if (0 ===
|
|
215
|
-
|
|
181
|
+
if (0 === finalHiddenItems.length && !alwaysRenderOverflow) {
|
|
182
|
+
t14 = null;
|
|
216
183
|
break bb0;
|
|
217
184
|
}
|
|
218
|
-
let
|
|
219
|
-
if ($[
|
|
220
|
-
|
|
185
|
+
let t15;
|
|
186
|
+
if ($[45] !== finalHiddenItems || $[46] !== finalVisibleItems || $[47] !== items || $[48] !== overflowRenderer) {
|
|
187
|
+
t15 = overflowRenderer(finalHiddenItems, {
|
|
221
188
|
allItems: items,
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
$[
|
|
227
|
-
$[
|
|
228
|
-
$[
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
} else t18 = $[53];
|
|
232
|
-
t17 = t18;
|
|
189
|
+
visibleItems: finalVisibleItems
|
|
190
|
+
});
|
|
191
|
+
$[45] = finalHiddenItems;
|
|
192
|
+
$[46] = finalVisibleItems;
|
|
193
|
+
$[47] = items;
|
|
194
|
+
$[48] = overflowRenderer;
|
|
195
|
+
$[49] = t15;
|
|
196
|
+
} else t15 = $[49];
|
|
197
|
+
t14 = t15;
|
|
233
198
|
}
|
|
234
|
-
const overflowElement =
|
|
199
|
+
const overflowElement = t14;
|
|
200
|
+
let t15;
|
|
201
|
+
if ($[50] !== finalVisibleItems || $[51] !== memoizedItemRenderer) {
|
|
202
|
+
t15 = finalVisibleItems.map(memoizedItemRenderer);
|
|
203
|
+
$[50] = finalVisibleItems;
|
|
204
|
+
$[51] = memoizedItemRenderer;
|
|
205
|
+
$[52] = t15;
|
|
206
|
+
} else t15 = $[52];
|
|
207
|
+
const visibleElements = t15;
|
|
208
|
+
let t16;
|
|
209
|
+
if ($[53] !== context || $[54] !== overflowElement) {
|
|
210
|
+
t16 = overflowElement && /*#__PURE__*/ jsx(OverflowListProvider, {
|
|
211
|
+
value: context,
|
|
212
|
+
children: overflowElement
|
|
213
|
+
});
|
|
214
|
+
$[53] = context;
|
|
215
|
+
$[54] = overflowElement;
|
|
216
|
+
$[55] = t16;
|
|
217
|
+
} else t16 = $[55];
|
|
218
|
+
const overflow = t16;
|
|
219
|
+
const t17 = measurementContext;
|
|
235
220
|
let t18;
|
|
236
|
-
if ($[
|
|
237
|
-
t18 =
|
|
238
|
-
$[
|
|
239
|
-
$[
|
|
240
|
-
|
|
241
|
-
} else t18 = $[56];
|
|
242
|
-
const visibleElements = t18;
|
|
221
|
+
if ($[56] !== MeasurementContainer) {
|
|
222
|
+
t18 = /*#__PURE__*/ jsx(MeasurementContainer, {});
|
|
223
|
+
$[56] = MeasurementContainer;
|
|
224
|
+
$[57] = t18;
|
|
225
|
+
} else t18 = $[57];
|
|
243
226
|
let t19;
|
|
244
|
-
if ($[
|
|
245
|
-
t19 = /*#__PURE__*/ jsx(
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
227
|
+
if ($[58] !== t17 || $[59] !== t18) {
|
|
228
|
+
t19 = /*#__PURE__*/ jsx(OverflowListProvider, {
|
|
229
|
+
value: t17,
|
|
230
|
+
children: t18
|
|
231
|
+
});
|
|
232
|
+
$[58] = t17;
|
|
233
|
+
$[59] = t18;
|
|
234
|
+
$[60] = t19;
|
|
235
|
+
} else t19 = $[60];
|
|
249
236
|
let t20;
|
|
250
|
-
if ($[
|
|
237
|
+
if ($[61] !== className) {
|
|
251
238
|
t20 = cn("flex w-full min-w-0", className);
|
|
252
|
-
$[
|
|
253
|
-
$[
|
|
254
|
-
} else t20 = $[
|
|
255
|
-
const t21 = "start" === collapseFrom &&
|
|
256
|
-
const t22 = "end" === collapseFrom &&
|
|
239
|
+
$[61] = className;
|
|
240
|
+
$[62] = t20;
|
|
241
|
+
} else t20 = $[62];
|
|
242
|
+
const t21 = "start" === collapseFrom && overflow;
|
|
243
|
+
const t22 = "end" === collapseFrom && overflow;
|
|
257
244
|
let t23;
|
|
258
|
-
if ($[
|
|
245
|
+
if ($[63] !== containerRef || $[64] !== props || $[65] !== t20 || $[66] !== t21 || $[67] !== t22 || $[68] !== testId || $[69] !== visibleElements) {
|
|
259
246
|
t23 = /*#__PURE__*/ jsxs("div", {
|
|
247
|
+
...props,
|
|
260
248
|
ref: containerRef,
|
|
261
249
|
"data-slot": "overflow-list",
|
|
250
|
+
"data-testid": testId,
|
|
262
251
|
className: t20,
|
|
263
|
-
...props,
|
|
264
252
|
children: [
|
|
265
253
|
t21,
|
|
266
254
|
visibleElements,
|
|
267
255
|
t22
|
|
268
256
|
]
|
|
269
257
|
});
|
|
270
|
-
$[
|
|
271
|
-
$[
|
|
272
|
-
$[
|
|
273
|
-
$[
|
|
274
|
-
$[
|
|
275
|
-
$[
|
|
276
|
-
$[
|
|
277
|
-
|
|
258
|
+
$[63] = containerRef;
|
|
259
|
+
$[64] = props;
|
|
260
|
+
$[65] = t20;
|
|
261
|
+
$[66] = t21;
|
|
262
|
+
$[67] = t22;
|
|
263
|
+
$[68] = testId;
|
|
264
|
+
$[69] = visibleElements;
|
|
265
|
+
$[70] = t23;
|
|
266
|
+
} else t23 = $[70];
|
|
278
267
|
let t24;
|
|
279
|
-
if ($[
|
|
268
|
+
if ($[71] !== t19 || $[72] !== t23) {
|
|
280
269
|
t24 = /*#__PURE__*/ jsxs(Fragment, {
|
|
281
270
|
children: [
|
|
282
271
|
t19,
|
|
283
272
|
t23
|
|
284
273
|
]
|
|
285
274
|
});
|
|
286
|
-
$[
|
|
287
|
-
$[
|
|
288
|
-
$[
|
|
289
|
-
} else t24 = $[
|
|
275
|
+
$[71] = t19;
|
|
276
|
+
$[72] = t23;
|
|
277
|
+
$[73] = t24;
|
|
278
|
+
} else t24 = $[73];
|
|
290
279
|
return t24;
|
|
291
280
|
};
|
|
292
281
|
const OverflowList = /*#__PURE__*/ memo(OverflowListComponent);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ReactNode, type RefObject } from 'react';
|
|
2
|
+
export interface OverflowListContextValue<T = unknown> {
|
|
3
|
+
/** Full source list, in order. */
|
|
4
|
+
allItems: T[];
|
|
5
|
+
/** Items rendered in the row. */
|
|
6
|
+
visibleItems: T[];
|
|
7
|
+
/** Items folded into the overflow indicator. */
|
|
8
|
+
hiddenItems: T[];
|
|
9
|
+
/** The list's own `itemRenderer`, reused by `OverflowListMoreItems`. */
|
|
10
|
+
itemRenderer: (item: T, index: number) => ReactNode;
|
|
11
|
+
/** The row element — the anchor for `OverflowListMore placement='cover'`. */
|
|
12
|
+
containerRef: RefObject<HTMLDivElement | null>;
|
|
13
|
+
/**
|
|
14
|
+
* True inside the hidden measurement layer. `OverflowListMore` parts render
|
|
15
|
+
* only the bare trigger chip there — no popover, no refs, no test ids.
|
|
16
|
+
*/
|
|
17
|
+
measuring: boolean;
|
|
18
|
+
/** The list's `data-testid` — the base `OverflowListMore` derives `--more` from. */
|
|
19
|
+
testId: string | undefined;
|
|
20
|
+
}
|
|
21
|
+
export declare const OverflowListProvider: import("react").Provider<OverflowListContextValue<unknown> | null>;
|
|
22
|
+
export declare const useOverflowListContext: <T = unknown>() => OverflowListContextValue<T>;
|
|
23
|
+
export declare const OverflowListMoreTriggerRefProvider: import("react").Provider<RefObject<HTMLButtonElement | null> | null>;
|
|
24
|
+
/** The `OverflowListMore` trigger ref — `cover` placement anchors to its top edge. */
|
|
25
|
+
export declare const useOverflowListMoreTriggerRef: () => RefObject<HTMLButtonElement | null> | null;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
const OverflowListContext = createContext(null);
|
|
3
|
+
const OverflowListProvider = OverflowListContext.Provider;
|
|
4
|
+
const useOverflowListContext = ()=>{
|
|
5
|
+
const context = useContext(OverflowListContext);
|
|
6
|
+
if (!context) throw new Error("OverflowListMore parts must be rendered inside an OverflowList overflowRenderer");
|
|
7
|
+
return context;
|
|
8
|
+
};
|
|
9
|
+
const OverflowListMoreTriggerRefContext = createContext(null);
|
|
10
|
+
const OverflowListMoreTriggerRefProvider = OverflowListMoreTriggerRefContext.Provider;
|
|
11
|
+
const useOverflowListMoreTriggerRef = ()=>useContext(OverflowListMoreTriggerRefContext);
|
|
12
|
+
export { OverflowListMoreTriggerRefProvider, OverflowListProvider, useOverflowListContext, useOverflowListMoreTriggerRef };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type FC, type ReactNode } from 'react';
|
|
2
|
+
import { type TestableProps } from '../../utils/testId.js';
|
|
3
|
+
import { type PopoverProps } from '../Popover/index.js';
|
|
4
|
+
export interface OverflowListMoreProps extends Pick<PopoverProps, 'open' | 'onOpenChange'>, TestableProps {
|
|
5
|
+
/**
|
|
6
|
+
* Defaults to `<OverflowListMoreTrigger />` + `<OverflowListMoreContent />`.
|
|
7
|
+
* Compose from the `OverflowListMore*` parts only — they know to render a bare
|
|
8
|
+
* chip in the hidden measurement layer, where there is no popover root.
|
|
9
|
+
*/
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* `trigger` — the popover opens below the "+N" chip.
|
|
13
|
+
* `cover` — the popover opens over the row, from the list's left edge.
|
|
14
|
+
*/
|
|
15
|
+
placement?: 'trigger' | 'cover';
|
|
16
|
+
}
|
|
17
|
+
export declare const OverflowListMore: FC<OverflowListMoreProps>;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { c } from "react/compiler-runtime";
|
|
3
|
+
import { useRef } from "react";
|
|
4
|
+
import { TestIdProvider } from "../../utils/testId.js";
|
|
5
|
+
import { Popover } from "../Popover/index.js";
|
|
6
|
+
import { OverflowListMoreTriggerRefProvider, useOverflowListContext } from "./OverflowListContext.js";
|
|
7
|
+
import { OverflowListMoreContent } from "./OverflowListMoreContent.js";
|
|
8
|
+
import { OverflowListMoreTrigger } from "./OverflowListMoreTrigger.js";
|
|
9
|
+
const DEFAULT_CHILDREN = /*#__PURE__*/ jsxs(Fragment, {
|
|
10
|
+
children: [
|
|
11
|
+
/*#__PURE__*/ jsx(OverflowListMoreTrigger, {}),
|
|
12
|
+
/*#__PURE__*/ jsx(OverflowListMoreContent, {})
|
|
13
|
+
]
|
|
14
|
+
});
|
|
15
|
+
const OverflowListMore = (t0)=>{
|
|
16
|
+
const $ = c(11);
|
|
17
|
+
const { children: t1, placement: t2, open, onOpenChange, "data-testid": testIdProp } = t0;
|
|
18
|
+
const children = void 0 === t1 ? DEFAULT_CHILDREN : t1;
|
|
19
|
+
const placement = void 0 === t2 ? "trigger" : t2;
|
|
20
|
+
const { hiddenItems, containerRef, measuring, testId: listTestId } = useOverflowListContext();
|
|
21
|
+
const testId = testIdProp ?? (listTestId ? `${listTestId}--more` : void 0);
|
|
22
|
+
const triggerRef = useRef(null);
|
|
23
|
+
if (measuring) {
|
|
24
|
+
let t3;
|
|
25
|
+
if ($[0] !== children) {
|
|
26
|
+
t3 = /*#__PURE__*/ jsx(TestIdProvider, {
|
|
27
|
+
value: void 0,
|
|
28
|
+
children: children
|
|
29
|
+
});
|
|
30
|
+
$[0] = children;
|
|
31
|
+
$[1] = t3;
|
|
32
|
+
} else t3 = $[1];
|
|
33
|
+
return t3;
|
|
34
|
+
}
|
|
35
|
+
if (0 === hiddenItems.length) return null;
|
|
36
|
+
let t3;
|
|
37
|
+
if ($[2] !== containerRef || $[3] !== placement) {
|
|
38
|
+
t3 = "cover" === placement ? {
|
|
39
|
+
placement: "bottom-start",
|
|
40
|
+
gutter: 0,
|
|
41
|
+
offset: {
|
|
42
|
+
mainAxis: 0,
|
|
43
|
+
crossAxis: 0
|
|
44
|
+
},
|
|
45
|
+
getAnchorElement: ()=>{
|
|
46
|
+
const container = containerRef.current;
|
|
47
|
+
if (!container) return null;
|
|
48
|
+
return {
|
|
49
|
+
contextElement: container,
|
|
50
|
+
getBoundingClientRect: ()=>{
|
|
51
|
+
const row = container.getBoundingClientRect();
|
|
52
|
+
const top = triggerRef.current?.getBoundingClientRect().top ?? row.top;
|
|
53
|
+
return new DOMRect(row.left, top, row.width, 0);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
} : void 0;
|
|
58
|
+
$[2] = containerRef;
|
|
59
|
+
$[3] = placement;
|
|
60
|
+
$[4] = t3;
|
|
61
|
+
} else t3 = $[4];
|
|
62
|
+
const positioning = t3;
|
|
63
|
+
let t4;
|
|
64
|
+
if ($[5] !== children || $[6] !== onOpenChange || $[7] !== open || $[8] !== positioning || $[9] !== testId) {
|
|
65
|
+
t4 = /*#__PURE__*/ jsx(OverflowListMoreTriggerRefProvider, {
|
|
66
|
+
value: triggerRef,
|
|
67
|
+
children: /*#__PURE__*/ jsx(Popover, {
|
|
68
|
+
open: open,
|
|
69
|
+
onOpenChange: onOpenChange,
|
|
70
|
+
positioning: positioning,
|
|
71
|
+
"data-testid": testId,
|
|
72
|
+
children: children
|
|
73
|
+
})
|
|
74
|
+
});
|
|
75
|
+
$[5] = children;
|
|
76
|
+
$[6] = onOpenChange;
|
|
77
|
+
$[7] = open;
|
|
78
|
+
$[8] = positioning;
|
|
79
|
+
$[9] = testId;
|
|
80
|
+
$[10] = t4;
|
|
81
|
+
} else t4 = $[10];
|
|
82
|
+
return t4;
|
|
83
|
+
};
|
|
84
|
+
OverflowListMore.displayName = "OverflowListMore";
|
|
85
|
+
export { OverflowListMore };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FC, ReactNode } from 'react';
|
|
2
|
+
import { type PopoverContentProps } from '../Popover/index.js';
|
|
3
|
+
export interface OverflowListMoreContentProps extends Omit<PopoverContentProps, 'children'> {
|
|
4
|
+
/** Defaults to `<OverflowListMoreItems />`. */
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export declare const OverflowListMoreContent: FC<OverflowListMoreContentProps>;
|