@wix/site-ui 1.30.0 → 1.32.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/1268.js +99 -0
- package/dist/1279.js +7 -0
- package/dist/1457.js +10 -0
- package/dist/1477.js +106 -0
- package/dist/1500.js +111 -0
- package/dist/167.js +6 -0
- package/dist/2274.js +34 -0
- package/dist/2287.js +17 -0
- package/dist/2418.js +31 -0
- package/dist/2801.js +20 -0
- package/dist/285.js +86 -0
- package/dist/2861.js +6 -0
- package/dist/3020.js +7 -0
- package/dist/3021.js +72 -0
- package/dist/3056.js +229 -0
- package/dist/3140.js +4 -0
- package/dist/3248.js +307 -0
- package/dist/3296.js +4 -0
- package/dist/3319.js +400 -0
- package/dist/3395.js +4 -0
- package/dist/3485.js +854 -0
- package/dist/353.js +14 -0
- package/dist/3670.js +418 -0
- package/dist/3829.js +113 -0
- package/dist/4026.js +12 -0
- package/dist/4143.js +46 -0
- package/dist/42.js +32 -0
- package/dist/4281.js +30 -0
- package/dist/4346.js +2 -0
- package/dist/4388.js +418 -0
- package/dist/4490.js +32 -0
- package/dist/4495.js +9 -0
- package/dist/4549.js +24 -0
- package/dist/4586.js +41 -0
- package/dist/4586.js.LICENSE.txt +19 -0
- package/dist/4707.js +19 -0
- package/dist/4723.js +7 -0
- package/dist/4745.js +7 -0
- package/dist/4768.js +35 -0
- package/dist/4922.js +15 -0
- package/dist/5036.js +17 -0
- package/dist/5085.js +20 -0
- package/dist/5299.js +597 -0
- package/dist/5659.js +4 -0
- package/dist/5778.js +10 -0
- package/dist/5864.js +86 -0
- package/dist/5992.js +913 -0
- package/dist/5992.js.LICENSE.txt +19 -0
- package/dist/6003.js +10 -0
- package/dist/6046.js +29 -0
- package/dist/6089.js +2355 -0
- package/dist/6107.js +10 -0
- package/dist/6247.js +20 -0
- package/dist/6270.js +487 -0
- package/dist/6329.js +32 -0
- package/dist/6330.js +30 -0
- package/dist/6499.js +7 -0
- package/dist/6535.js +71 -0
- package/dist/6588.js +382 -0
- package/dist/6706.js +16 -0
- package/dist/6825.js +7 -0
- package/dist/6882.js +1562 -0
- package/dist/6914.js +30 -0
- package/dist/7021.js +13 -0
- package/dist/7366.js +83 -0
- package/dist/7373.js +25 -0
- package/dist/7541.js +25 -0
- package/dist/7564.js +10 -0
- package/dist/7642.js +20 -0
- package/dist/7725.js +10 -0
- package/dist/7871.js +38 -0
- package/dist/8052.js +352 -0
- package/dist/8106.js +238 -0
- package/dist/8171.js +346 -0
- package/dist/8225.js +21 -0
- package/dist/8272.js +333 -0
- package/dist/8527.js +58 -0
- package/dist/8724.js +10 -0
- package/dist/8750.js +1920 -0
- package/dist/8758.js +43 -0
- package/dist/880.js +149 -0
- package/dist/8935.js +8 -0
- package/dist/8960.js +22 -0
- package/dist/8971.js +40 -0
- package/dist/8979.js +10 -0
- package/dist/8996.js +71 -0
- package/dist/904.js +121 -0
- package/dist/9048.js +52 -0
- package/dist/9087.js +256 -0
- package/dist/9189.js +158 -0
- package/dist/9255.js +136 -0
- package/dist/9352.js +148 -0
- package/dist/951.js +22 -0
- package/dist/9635.js +22 -0
- package/dist/9829.js +4 -0
- package/dist/9863.js +8 -0
- package/dist/Accordion/index.d.ts +569 -12
- package/dist/Accordion/index.js +423 -8
- package/dist/AlertDialog/index.d.ts +1417 -18
- package/dist/AlertDialog/index.js +34 -14
- package/dist/Autocomplete/index.d.ts +1861 -38
- package/dist/Autocomplete/index.js +98 -24
- package/dist/Avatar/index.d.ts +129 -7
- package/dist/Avatar/index.js +149 -6
- package/dist/Breadcrumbs/index.d.ts +960 -7
- package/dist/Breadcrumbs/index.js +5 -5
- package/dist/Button/index.d.ts +88 -6
- package/dist/Button/index.js +27 -3
- package/dist/Checkbox/index.d.ts +425 -5
- package/dist/Checkbox/index.js +45 -5
- package/dist/CheckboxGroup/index.d.ts +318 -3
- package/dist/CheckboxGroup/index.js +166 -3
- package/dist/Collapsible/index.d.ts +377 -7
- package/dist/Collapsible/index.js +160 -6
- package/dist/Combobox/index.d.ts +1984 -48
- package/dist/Combobox/index.js +352 -29
- package/dist/ContextMenu/index.d.ts +2340 -36
- package/dist/ContextMenu/index.js +197 -22
- package/dist/Dialog/index.d.ts +1355 -18
- package/dist/Dialog/index.js +16 -14
- package/dist/Drawer/index.d.ts +1653 -18
- package/dist/Drawer/index.js +2797 -20
- package/dist/Field/index.d.ts +655 -15
- package/dist/Field/index.js +677 -10
- package/dist/Fieldset/index.d.ts +94 -5
- package/dist/Fieldset/index.js +68 -5
- package/dist/Form/index.d.ts +331 -2
- package/dist/Form/index.js +106 -3
- package/dist/Input/index.d.ts +692 -3
- package/dist/Input/index.js +10 -3
- package/dist/Menu/index.d.ts +2301 -36
- package/dist/Menu/index.js +365 -26
- package/dist/Menubar/index.d.ts +2301 -3
- package/dist/Menubar/index.js +105 -3
- package/dist/Meter/index.d.ts +175 -11
- package/dist/Meter/index.js +129 -9
- package/dist/NavigationMenu/index.d.ts +978 -28
- package/dist/NavigationMenu/index.js +1034 -17
- package/dist/NumberField/index.d.ts +612 -15
- package/dist/NumberField/index.js +1409 -11
- package/dist/Popover/index.d.ts +1655 -20
- package/dist/Popover/index.js +792 -17
- package/dist/PreviewCard/index.d.ts +1523 -14
- package/dist/PreviewCard/index.js +679 -14
- package/dist/Progress/index.d.ts +183 -11
- package/dist/Progress/index.js +181 -9
- package/dist/Radio/index.d.ts +185 -6
- package/dist/Radio/index.js +253 -6
- package/dist/RadioGroup/index.d.ts +341 -2
- package/dist/RadioGroup/index.js +154 -3
- package/dist/ScrollArea/index.d.ts +265 -13
- package/dist/ScrollArea/index.js +892 -10
- package/dist/Select/index.d.ts +1493 -38
- package/dist/Select/index.js +1824 -23
- package/dist/Separator/index.d.ts +80 -6
- package/dist/Separator/index.js +3 -3
- package/dist/Slider/index.d.ts +678 -16
- package/dist/Slider/index.js +1199 -11
- package/dist/Switch/index.d.ts +393 -5
- package/dist/Switch/index.js +208 -6
- package/dist/Tabs/index.d.ts +523 -12
- package/dist/Tabs/index.js +685 -9
- package/dist/Toggle/index.d.ts +305 -2
- package/dist/Toggle/index.js +76 -3
- package/dist/ToggleGroup/index.d.ts +316 -2
- package/dist/ToggleGroup/index.js +102 -3
- package/dist/Toolbar/index.d.ts +282 -13
- package/dist/Toolbar/index.js +230 -9
- package/dist/Tooltip/index.d.ts +1572 -14
- package/dist/Tooltip/index.js +965 -14
- package/dist/index.d.ts +12749 -652
- package/dist/rslib-runtime.js +18 -0
- package/package.json +3 -3
package/dist/3319.js
ADDED
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
import { ARROW_LEFT, ARROW_UP, ARROW_DOWN, ARROW_RIGHT } from "./4745.js";
|
|
2
|
+
import { stopEvent } from "./6330.js";
|
|
3
|
+
import { getComputedStyle } from "./3829.js";
|
|
4
|
+
const sides = [
|
|
5
|
+
'top',
|
|
6
|
+
'right',
|
|
7
|
+
'bottom',
|
|
8
|
+
'left'
|
|
9
|
+
];
|
|
10
|
+
const min = Math.min;
|
|
11
|
+
const max = Math.max;
|
|
12
|
+
const round = Math.round;
|
|
13
|
+
const floor = Math.floor;
|
|
14
|
+
const createCoords = (v)=>({
|
|
15
|
+
x: v,
|
|
16
|
+
y: v
|
|
17
|
+
});
|
|
18
|
+
const oppositeSideMap = {
|
|
19
|
+
left: 'right',
|
|
20
|
+
right: 'left',
|
|
21
|
+
bottom: 'top',
|
|
22
|
+
top: 'bottom'
|
|
23
|
+
};
|
|
24
|
+
function clamp(start, value, end) {
|
|
25
|
+
return max(start, min(value, end));
|
|
26
|
+
}
|
|
27
|
+
function evaluate(value, param) {
|
|
28
|
+
return 'function' == typeof value ? value(param) : value;
|
|
29
|
+
}
|
|
30
|
+
function getSide(placement) {
|
|
31
|
+
return placement.split('-')[0];
|
|
32
|
+
}
|
|
33
|
+
function getAlignment(placement) {
|
|
34
|
+
return placement.split('-')[1];
|
|
35
|
+
}
|
|
36
|
+
function getOppositeAxis(axis) {
|
|
37
|
+
return 'x' === axis ? 'y' : 'x';
|
|
38
|
+
}
|
|
39
|
+
function getAxisLength(axis) {
|
|
40
|
+
return 'y' === axis ? 'height' : 'width';
|
|
41
|
+
}
|
|
42
|
+
function getSideAxis(placement) {
|
|
43
|
+
const firstChar = placement[0];
|
|
44
|
+
return 't' === firstChar || 'b' === firstChar ? 'y' : 'x';
|
|
45
|
+
}
|
|
46
|
+
function getAlignmentAxis(placement) {
|
|
47
|
+
return getOppositeAxis(getSideAxis(placement));
|
|
48
|
+
}
|
|
49
|
+
function getAlignmentSides(placement, rects, rtl) {
|
|
50
|
+
if (void 0 === rtl) rtl = false;
|
|
51
|
+
const alignment = getAlignment(placement);
|
|
52
|
+
const alignmentAxis = getAlignmentAxis(placement);
|
|
53
|
+
const length = getAxisLength(alignmentAxis);
|
|
54
|
+
let mainAlignmentSide = 'x' === alignmentAxis ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : 'start' === alignment ? 'bottom' : 'top';
|
|
55
|
+
if (rects.reference[length] > rects.floating[length]) mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
|
|
56
|
+
return [
|
|
57
|
+
mainAlignmentSide,
|
|
58
|
+
getOppositePlacement(mainAlignmentSide)
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
function getExpandedPlacements(placement) {
|
|
62
|
+
const oppositePlacement = getOppositePlacement(placement);
|
|
63
|
+
return [
|
|
64
|
+
getOppositeAlignmentPlacement(placement),
|
|
65
|
+
oppositePlacement,
|
|
66
|
+
getOppositeAlignmentPlacement(oppositePlacement)
|
|
67
|
+
];
|
|
68
|
+
}
|
|
69
|
+
function getOppositeAlignmentPlacement(placement) {
|
|
70
|
+
return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');
|
|
71
|
+
}
|
|
72
|
+
const lrPlacement = [
|
|
73
|
+
'left',
|
|
74
|
+
'right'
|
|
75
|
+
];
|
|
76
|
+
const rlPlacement = [
|
|
77
|
+
'right',
|
|
78
|
+
'left'
|
|
79
|
+
];
|
|
80
|
+
const tbPlacement = [
|
|
81
|
+
'top',
|
|
82
|
+
'bottom'
|
|
83
|
+
];
|
|
84
|
+
const btPlacement = [
|
|
85
|
+
'bottom',
|
|
86
|
+
'top'
|
|
87
|
+
];
|
|
88
|
+
function getSideList(side, isStart, rtl) {
|
|
89
|
+
switch(side){
|
|
90
|
+
case 'top':
|
|
91
|
+
case 'bottom':
|
|
92
|
+
if (rtl) return isStart ? rlPlacement : lrPlacement;
|
|
93
|
+
return isStart ? lrPlacement : rlPlacement;
|
|
94
|
+
case 'left':
|
|
95
|
+
case 'right':
|
|
96
|
+
return isStart ? tbPlacement : btPlacement;
|
|
97
|
+
default:
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
|
|
102
|
+
const alignment = getAlignment(placement);
|
|
103
|
+
let list = getSideList(getSide(placement), 'start' === direction, rtl);
|
|
104
|
+
if (alignment) {
|
|
105
|
+
list = list.map((side)=>side + "-" + alignment);
|
|
106
|
+
if (flipAlignment) list = list.concat(list.map(getOppositeAlignmentPlacement));
|
|
107
|
+
}
|
|
108
|
+
return list;
|
|
109
|
+
}
|
|
110
|
+
function getOppositePlacement(placement) {
|
|
111
|
+
const side = getSide(placement);
|
|
112
|
+
return oppositeSideMap[side] + placement.slice(side.length);
|
|
113
|
+
}
|
|
114
|
+
function expandPaddingObject(padding) {
|
|
115
|
+
return {
|
|
116
|
+
top: 0,
|
|
117
|
+
right: 0,
|
|
118
|
+
bottom: 0,
|
|
119
|
+
left: 0,
|
|
120
|
+
...padding
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function getPaddingObject(padding) {
|
|
124
|
+
return 'number' != typeof padding ? expandPaddingObject(padding) : {
|
|
125
|
+
top: padding,
|
|
126
|
+
right: padding,
|
|
127
|
+
bottom: padding,
|
|
128
|
+
left: padding
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function rectToClientRect(rect) {
|
|
132
|
+
const { x, y, width, height } = rect;
|
|
133
|
+
return {
|
|
134
|
+
width,
|
|
135
|
+
height,
|
|
136
|
+
top: y,
|
|
137
|
+
left: x,
|
|
138
|
+
right: x + width,
|
|
139
|
+
bottom: y + height,
|
|
140
|
+
x,
|
|
141
|
+
y
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function isDifferentGridRow(index, cols, prevRow) {
|
|
145
|
+
return Math.floor(index / cols) !== prevRow;
|
|
146
|
+
}
|
|
147
|
+
function isIndexOutOfListBounds(list, index) {
|
|
148
|
+
return index < 0 || index >= list.length;
|
|
149
|
+
}
|
|
150
|
+
function getMinListIndex(listRef, disabledIndices) {
|
|
151
|
+
return findNonDisabledListIndex(listRef.current, {
|
|
152
|
+
disabledIndices
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
function getMaxListIndex(listRef, disabledIndices) {
|
|
156
|
+
return findNonDisabledListIndex(listRef.current, {
|
|
157
|
+
decrement: true,
|
|
158
|
+
startingIndex: listRef.current.length,
|
|
159
|
+
disabledIndices
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
function findNonDisabledListIndex(list, { startingIndex = -1, decrement = false, disabledIndices, amount = 1 } = {}) {
|
|
163
|
+
let index = startingIndex;
|
|
164
|
+
do index += decrement ? -amount : amount;
|
|
165
|
+
while (index >= 0 && index <= list.length - 1 && isListIndexDisabled(list, index, disabledIndices));
|
|
166
|
+
return index;
|
|
167
|
+
}
|
|
168
|
+
function getGridNavigatedIndex(list, { event, orientation, loopFocus, onLoop, rtl, cols, disabledIndices, minIndex, maxIndex, prevIndex, stopEvent: stop = false }) {
|
|
169
|
+
let nextIndex = prevIndex;
|
|
170
|
+
let verticalDirection;
|
|
171
|
+
if (event.key === ARROW_UP) verticalDirection = 'up';
|
|
172
|
+
else if (event.key === ARROW_DOWN) verticalDirection = 'down';
|
|
173
|
+
if (verticalDirection) {
|
|
174
|
+
const rows = [];
|
|
175
|
+
const rowIndexMap = [];
|
|
176
|
+
let hasRoleRow = false;
|
|
177
|
+
let visibleItemCount = 0;
|
|
178
|
+
{
|
|
179
|
+
let currentRowEl = null;
|
|
180
|
+
let currentRowIndex = -1;
|
|
181
|
+
list.forEach((el, idx)=>{
|
|
182
|
+
if (null == el) return;
|
|
183
|
+
visibleItemCount += 1;
|
|
184
|
+
const rowEl = el.closest('[role="row"]');
|
|
185
|
+
if (rowEl) hasRoleRow = true;
|
|
186
|
+
if (rowEl !== currentRowEl || -1 === currentRowIndex) {
|
|
187
|
+
currentRowEl = rowEl;
|
|
188
|
+
currentRowIndex += 1;
|
|
189
|
+
rows[currentRowIndex] = [];
|
|
190
|
+
}
|
|
191
|
+
rows[currentRowIndex].push(idx);
|
|
192
|
+
rowIndexMap[idx] = currentRowIndex;
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
let hasDomRows = false;
|
|
196
|
+
let inferredDomCols = 0;
|
|
197
|
+
if (hasRoleRow) for (const row of rows){
|
|
198
|
+
const rowLength = row.length;
|
|
199
|
+
if (rowLength > inferredDomCols) inferredDomCols = rowLength;
|
|
200
|
+
if (rowLength !== cols) hasDomRows = true;
|
|
201
|
+
}
|
|
202
|
+
const hasVirtualizedGaps = hasDomRows && visibleItemCount < list.length;
|
|
203
|
+
const verticalCols = inferredDomCols || cols;
|
|
204
|
+
const navigateVertically = (direction)=>{
|
|
205
|
+
if (!hasDomRows || -1 === prevIndex) return;
|
|
206
|
+
const currentRow = rowIndexMap[prevIndex];
|
|
207
|
+
if (null == currentRow) return;
|
|
208
|
+
const colInRow = rows[currentRow].indexOf(prevIndex);
|
|
209
|
+
const step = 'up' === direction ? -1 : 1;
|
|
210
|
+
for(let nextRow = currentRow + step, i = 0; i < rows.length; i += 1, nextRow += step){
|
|
211
|
+
if (nextRow < 0 || nextRow >= rows.length) {
|
|
212
|
+
if (!loopFocus || hasVirtualizedGaps) return;
|
|
213
|
+
nextRow = nextRow < 0 ? rows.length - 1 : 0;
|
|
214
|
+
if (onLoop) {
|
|
215
|
+
const clampedCol = Math.min(colInRow, rows[nextRow].length - 1);
|
|
216
|
+
const targetItemIndex = rows[nextRow][clampedCol] ?? rows[nextRow][0];
|
|
217
|
+
const returnedItemIndex = onLoop(event, prevIndex, targetItemIndex);
|
|
218
|
+
nextRow = rowIndexMap[returnedItemIndex] ?? nextRow;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
const targetRow = rows[nextRow];
|
|
222
|
+
for(let col = Math.min(colInRow, targetRow.length - 1); col >= 0; col -= 1){
|
|
223
|
+
const candidate = targetRow[col];
|
|
224
|
+
if (!isListIndexDisabled(list, candidate, disabledIndices)) return candidate;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
const navigateVerticallyWithInferredRows = (direction)=>{
|
|
229
|
+
if (!hasVirtualizedGaps || -1 === prevIndex) return;
|
|
230
|
+
const colInRow = prevIndex % verticalCols;
|
|
231
|
+
const rowStep = 'up' === direction ? -verticalCols : verticalCols;
|
|
232
|
+
const lastRowStart = maxIndex - maxIndex % verticalCols;
|
|
233
|
+
const rowCount = floor(maxIndex / verticalCols) + 1;
|
|
234
|
+
for(let rowStart = prevIndex - colInRow + rowStep, i = 0; i < rowCount; i += 1, rowStart += rowStep){
|
|
235
|
+
if (rowStart < 0 || rowStart > maxIndex) {
|
|
236
|
+
if (!loopFocus) return;
|
|
237
|
+
rowStart = rowStart < 0 ? lastRowStart : 0;
|
|
238
|
+
}
|
|
239
|
+
const rowEnd = Math.min(rowStart + verticalCols - 1, maxIndex);
|
|
240
|
+
for(let candidate = Math.min(rowStart + colInRow, rowEnd); candidate >= rowStart; candidate -= 1)if (!isListIndexDisabled(list, candidate, disabledIndices)) return candidate;
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
if (stop) stopEvent(event);
|
|
244
|
+
const verticalCandidate = navigateVertically(verticalDirection) ?? navigateVerticallyWithInferredRows(verticalDirection);
|
|
245
|
+
if (void 0 !== verticalCandidate) nextIndex = verticalCandidate;
|
|
246
|
+
else if (-1 === prevIndex) nextIndex = 'up' === verticalDirection ? maxIndex : minIndex;
|
|
247
|
+
else {
|
|
248
|
+
nextIndex = findNonDisabledListIndex(list, {
|
|
249
|
+
startingIndex: prevIndex,
|
|
250
|
+
amount: verticalCols,
|
|
251
|
+
decrement: 'up' === verticalDirection,
|
|
252
|
+
disabledIndices
|
|
253
|
+
});
|
|
254
|
+
if (loopFocus) {
|
|
255
|
+
if ('up' === verticalDirection && (prevIndex - verticalCols < minIndex || nextIndex < 0)) {
|
|
256
|
+
const col = prevIndex % verticalCols;
|
|
257
|
+
const maxCol = maxIndex % verticalCols;
|
|
258
|
+
const offset = maxIndex - (maxCol - col);
|
|
259
|
+
nextIndex = maxCol === col ? maxIndex : maxCol > col ? offset : offset - verticalCols;
|
|
260
|
+
if (onLoop) nextIndex = onLoop(event, prevIndex, nextIndex);
|
|
261
|
+
}
|
|
262
|
+
if ('down' === verticalDirection && prevIndex + verticalCols > maxIndex) {
|
|
263
|
+
nextIndex = findNonDisabledListIndex(list, {
|
|
264
|
+
startingIndex: prevIndex % verticalCols - verticalCols,
|
|
265
|
+
amount: verticalCols,
|
|
266
|
+
disabledIndices
|
|
267
|
+
});
|
|
268
|
+
if (onLoop) nextIndex = onLoop(event, prevIndex, nextIndex);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
if (isIndexOutOfListBounds(list, nextIndex)) nextIndex = prevIndex;
|
|
273
|
+
}
|
|
274
|
+
if ('both' === orientation) {
|
|
275
|
+
const prevRow = floor(prevIndex / cols);
|
|
276
|
+
if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {
|
|
277
|
+
if (stop) stopEvent(event);
|
|
278
|
+
if (prevIndex % cols !== cols - 1) {
|
|
279
|
+
nextIndex = findNonDisabledListIndex(list, {
|
|
280
|
+
startingIndex: prevIndex,
|
|
281
|
+
disabledIndices
|
|
282
|
+
});
|
|
283
|
+
if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) {
|
|
284
|
+
nextIndex = findNonDisabledListIndex(list, {
|
|
285
|
+
startingIndex: prevIndex - prevIndex % cols - 1,
|
|
286
|
+
disabledIndices
|
|
287
|
+
});
|
|
288
|
+
if (onLoop) nextIndex = onLoop(event, prevIndex, nextIndex);
|
|
289
|
+
}
|
|
290
|
+
} else if (loopFocus) {
|
|
291
|
+
nextIndex = findNonDisabledListIndex(list, {
|
|
292
|
+
startingIndex: prevIndex - prevIndex % cols - 1,
|
|
293
|
+
disabledIndices
|
|
294
|
+
});
|
|
295
|
+
if (onLoop) nextIndex = onLoop(event, prevIndex, nextIndex);
|
|
296
|
+
}
|
|
297
|
+
if (isDifferentGridRow(nextIndex, cols, prevRow)) nextIndex = prevIndex;
|
|
298
|
+
}
|
|
299
|
+
if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {
|
|
300
|
+
if (stop) stopEvent(event);
|
|
301
|
+
if (prevIndex % cols !== 0) {
|
|
302
|
+
nextIndex = findNonDisabledListIndex(list, {
|
|
303
|
+
startingIndex: prevIndex,
|
|
304
|
+
decrement: true,
|
|
305
|
+
disabledIndices
|
|
306
|
+
});
|
|
307
|
+
if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) {
|
|
308
|
+
nextIndex = findNonDisabledListIndex(list, {
|
|
309
|
+
startingIndex: prevIndex + (cols - prevIndex % cols),
|
|
310
|
+
decrement: true,
|
|
311
|
+
disabledIndices
|
|
312
|
+
});
|
|
313
|
+
if (onLoop) nextIndex = onLoop(event, prevIndex, nextIndex);
|
|
314
|
+
}
|
|
315
|
+
} else if (loopFocus) {
|
|
316
|
+
nextIndex = findNonDisabledListIndex(list, {
|
|
317
|
+
startingIndex: prevIndex + (cols - prevIndex % cols),
|
|
318
|
+
decrement: true,
|
|
319
|
+
disabledIndices
|
|
320
|
+
});
|
|
321
|
+
if (onLoop) nextIndex = onLoop(event, prevIndex, nextIndex);
|
|
322
|
+
}
|
|
323
|
+
if (isDifferentGridRow(nextIndex, cols, prevRow)) nextIndex = prevIndex;
|
|
324
|
+
}
|
|
325
|
+
const lastRow = floor(maxIndex / cols) === prevRow;
|
|
326
|
+
if (isIndexOutOfListBounds(list, nextIndex)) if (loopFocus && lastRow) {
|
|
327
|
+
nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledListIndex(list, {
|
|
328
|
+
startingIndex: prevIndex - prevIndex % cols - 1,
|
|
329
|
+
disabledIndices
|
|
330
|
+
});
|
|
331
|
+
if (onLoop) nextIndex = onLoop(event, prevIndex, nextIndex);
|
|
332
|
+
} else nextIndex = prevIndex;
|
|
333
|
+
}
|
|
334
|
+
return nextIndex;
|
|
335
|
+
}
|
|
336
|
+
function createGridCellMap(sizes, cols, dense) {
|
|
337
|
+
const cellMap = [];
|
|
338
|
+
let startIndex = 0;
|
|
339
|
+
sizes.forEach(({ width, height }, index)=>{
|
|
340
|
+
if (width > cols) {
|
|
341
|
+
if ('production' !== process.env.NODE_ENV) throw new Error(`[Floating UI]: Invalid grid - item width at index ${index} is greater than grid columns`);
|
|
342
|
+
}
|
|
343
|
+
let itemPlaced = false;
|
|
344
|
+
if (dense) startIndex = 0;
|
|
345
|
+
while(!itemPlaced){
|
|
346
|
+
const targetCells = [];
|
|
347
|
+
for(let i = 0; i < width; i += 1)for(let j = 0; j < height; j += 1)targetCells.push(startIndex + i + j * cols);
|
|
348
|
+
if (startIndex % cols + width <= cols && targetCells.every((cell)=>null == cellMap[cell])) {
|
|
349
|
+
targetCells.forEach((cell)=>{
|
|
350
|
+
cellMap[cell] = index;
|
|
351
|
+
});
|
|
352
|
+
itemPlaced = true;
|
|
353
|
+
} else startIndex += 1;
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
return [
|
|
357
|
+
...cellMap
|
|
358
|
+
];
|
|
359
|
+
}
|
|
360
|
+
function getGridCellIndexOfCorner(index, sizes, cellMap, cols, corner) {
|
|
361
|
+
if (-1 === index) return -1;
|
|
362
|
+
const firstCellIndex = cellMap.indexOf(index);
|
|
363
|
+
const sizeItem = sizes[index];
|
|
364
|
+
switch(corner){
|
|
365
|
+
case 'tl':
|
|
366
|
+
return firstCellIndex;
|
|
367
|
+
case 'tr':
|
|
368
|
+
if (!sizeItem) return firstCellIndex;
|
|
369
|
+
return firstCellIndex + sizeItem.width - 1;
|
|
370
|
+
case 'bl':
|
|
371
|
+
if (!sizeItem) return firstCellIndex;
|
|
372
|
+
return firstCellIndex + (sizeItem.height - 1) * cols;
|
|
373
|
+
case 'br':
|
|
374
|
+
return cellMap.lastIndexOf(index);
|
|
375
|
+
default:
|
|
376
|
+
return -1;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
function getGridCellIndices(indices, cellMap) {
|
|
380
|
+
return cellMap.flatMap((index, cellIndex)=>indices.includes(index) ? [
|
|
381
|
+
cellIndex
|
|
382
|
+
] : []);
|
|
383
|
+
}
|
|
384
|
+
function isListIndexDisabled(list, index, disabledIndices) {
|
|
385
|
+
const isExplicitlyDisabled = 'function' == typeof disabledIndices ? disabledIndices(index) : disabledIndices?.includes(index) ?? false;
|
|
386
|
+
if (isExplicitlyDisabled) return true;
|
|
387
|
+
const element = list[index];
|
|
388
|
+
if (!element) return false;
|
|
389
|
+
if (!isElementVisible(element)) return true;
|
|
390
|
+
return !disabledIndices && (element.hasAttribute('disabled') || 'true' === element.getAttribute('aria-disabled'));
|
|
391
|
+
}
|
|
392
|
+
function isHiddenByStyles(styles) {
|
|
393
|
+
return 'hidden' === styles.visibility || 'collapse' === styles.visibility;
|
|
394
|
+
}
|
|
395
|
+
function isElementVisible(element, styles = element ? getComputedStyle(element) : null) {
|
|
396
|
+
if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) return false;
|
|
397
|
+
if ('function' == typeof element.checkVisibility) return element.checkVisibility();
|
|
398
|
+
return 'none' !== styles.display && 'contents' !== styles.display;
|
|
399
|
+
}
|
|
400
|
+
export { clamp, createCoords, createGridCellMap, evaluate, findNonDisabledListIndex, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getGridCellIndexOfCorner, getGridCellIndices, getGridNavigatedIndex, getMaxListIndex, getMinListIndex, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, isElementVisible, isIndexOutOfListBounds, isListIndexDisabled, max, min, rectToClientRect, round, sides };
|
package/dist/3395.js
ADDED