@react-aria/selection 3.0.0-alpha.1 → 3.0.0-nightly-4980928d3-240906
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/README.md +1 -1
- package/dist/DOMLayoutDelegate.main.js +53 -0
- package/dist/DOMLayoutDelegate.main.js.map +1 -0
- package/dist/DOMLayoutDelegate.mjs +48 -0
- package/dist/DOMLayoutDelegate.module.js +48 -0
- package/dist/DOMLayoutDelegate.module.js.map +1 -0
- package/dist/ListKeyboardDelegate.main.js +189 -0
- package/dist/ListKeyboardDelegate.main.js.map +1 -0
- package/dist/ListKeyboardDelegate.mjs +184 -0
- package/dist/ListKeyboardDelegate.module.js +184 -0
- package/dist/ListKeyboardDelegate.module.js.map +1 -0
- package/dist/import.mjs +27 -0
- package/dist/main.js +16 -608
- package/dist/main.js.map +1 -0
- package/dist/module.js +9 -563
- package/dist/module.js.map +1 -0
- package/dist/types.d.ts +218 -30
- package/dist/types.d.ts.map +1 -1
- package/dist/useSelectableCollection.main.js +318 -0
- package/dist/useSelectableCollection.main.js.map +1 -0
- package/dist/useSelectableCollection.mjs +313 -0
- package/dist/useSelectableCollection.module.js +313 -0
- package/dist/useSelectableCollection.module.js.map +1 -0
- package/dist/useSelectableItem.main.js +213 -0
- package/dist/useSelectableItem.main.js.map +1 -0
- package/dist/useSelectableItem.mjs +208 -0
- package/dist/useSelectableItem.module.js +208 -0
- package/dist/useSelectableItem.module.js.map +1 -0
- package/dist/useSelectableList.main.js +63 -0
- package/dist/useSelectableList.main.js.map +1 -0
- package/dist/useSelectableList.mjs +58 -0
- package/dist/useSelectableList.module.js +58 -0
- package/dist/useSelectableList.module.js.map +1 -0
- package/dist/useTypeSelect.main.js +73 -0
- package/dist/useTypeSelect.main.js.map +1 -0
- package/dist/useTypeSelect.mjs +68 -0
- package/dist/useTypeSelect.module.js +68 -0
- package/dist/useTypeSelect.module.js.map +1 -0
- package/dist/utils.main.js +32 -0
- package/dist/utils.main.js.map +1 -0
- package/dist/utils.mjs +26 -0
- package/dist/utils.module.js +26 -0
- package/dist/utils.module.js.map +1 -0
- package/package.json +20 -13
- package/src/DOMLayoutDelegate.ts +57 -0
- package/src/ListKeyboardDelegate.ts +288 -0
- package/src/index.ts +23 -0
- package/src/useSelectableCollection.ts +490 -0
- package/src/useSelectableItem.ts +374 -0
- package/src/useSelectableList.ts +85 -0
- package/src/useTypeSelect.ts +114 -0
- package/src/utils.ts +33 -0
- package/LICENSE +0 -201
package/dist/main.js
CHANGED
|
@@ -1,399 +1,21 @@
|
|
|
1
|
-
var
|
|
1
|
+
var $b6837c2f80a3c32f$exports = require("./useSelectableCollection.main.js");
|
|
2
|
+
var $433b1145b0781e10$exports = require("./useSelectableItem.main.js");
|
|
3
|
+
var $bd230acee196f50c$exports = require("./useSelectableList.main.js");
|
|
4
|
+
var $836f880b12dcae5c$exports = require("./ListKeyboardDelegate.main.js");
|
|
5
|
+
var $2ac4508142683dcb$exports = require("./DOMLayoutDelegate.main.js");
|
|
6
|
+
var $a1189052f36475e8$exports = require("./useTypeSelect.main.js");
|
|
2
7
|
|
|
3
|
-
var useEffect = _temp.useEffect;
|
|
4
|
-
var useRef = _temp.useRef;
|
|
5
|
-
var useMemo = _temp.useMemo;
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var mergeProps = _temp2.mergeProps;
|
|
10
|
-
var focusWithoutScrolling = _temp2.focusWithoutScrolling;
|
|
11
|
-
|
|
12
|
-
var _babelRuntimeHelpersClassCallCheck = $parcel$interopDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
|
-
var _babelRuntimeHelpersCreateClass = $parcel$interopDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
|
-
var _babelRuntimeHelpersDefineProperty = $parcel$interopDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
-
|
|
18
|
-
var useCollator = require("@react-aria/i18n").useCollator;
|
|
19
|
-
|
|
20
|
-
function $parcel$interopDefault(a) {
|
|
21
|
-
return a && a.__esModule ? a.default : a;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function useTypeSelect(options) {
|
|
25
|
-
var keyboardDelegate = options.keyboardDelegate,
|
|
26
|
-
selectionManager = options.selectionManager,
|
|
27
|
-
onTypeSelect = options.onTypeSelect;
|
|
28
|
-
var state = useRef({
|
|
29
|
-
search: '',
|
|
30
|
-
timeout: null
|
|
31
|
-
}).current;
|
|
32
|
-
|
|
33
|
-
var onKeyDown = function onKeyDown(e) {
|
|
34
|
-
var character = $b843d8ac9c2b714d56acf7bb325b078e$var$getStringForKey(e.key);
|
|
35
|
-
|
|
36
|
-
if (!character) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
state.search += character; // Use the delegate to find a key to focus.
|
|
41
|
-
// Prioritize items after the currently focused item, falling back to searching the whole list.
|
|
42
|
-
|
|
43
|
-
var key = keyboardDelegate.getKeyForSearch(state.search, selectionManager.focusedKey);
|
|
44
|
-
|
|
45
|
-
if (!key) {
|
|
46
|
-
key = keyboardDelegate.getKeyForSearch(state.search);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (key) {
|
|
50
|
-
selectionManager.setFocusedKey(key);
|
|
51
|
-
|
|
52
|
-
if (onTypeSelect) {
|
|
53
|
-
onTypeSelect(key);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
clearTimeout(state.timeout);
|
|
58
|
-
state.timeout = setTimeout(function () {
|
|
59
|
-
state.search = '';
|
|
60
|
-
}, 500);
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
return {
|
|
64
|
-
typeSelectProps: {
|
|
65
|
-
onKeyDown: keyboardDelegate.getKeyForSearch ? onKeyDown : null
|
|
66
|
-
}
|
|
67
|
-
};
|
|
9
|
+
function $parcel$export(e, n, v, s) {
|
|
10
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
68
11
|
}
|
|
69
12
|
|
|
70
|
-
exports
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// See https://www.w3.org/TR/uievents-key/
|
|
77
|
-
if (key.length === 1 || !/^[A-Z]/i.test(key)) {
|
|
78
|
-
return key;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return '';
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
var $f6850b13dba63fef3157aa366dff950$var$isMac = typeof window !== 'undefined' && window.navigator != null ? /^Mac/.test(window.navigator.platform) : false;
|
|
85
|
-
|
|
86
|
-
function $f6850b13dba63fef3157aa366dff950$var$isCtrlKeyPressed(e) {
|
|
87
|
-
if ($f6850b13dba63fef3157aa366dff950$var$isMac) {
|
|
88
|
-
return e.metaKey;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
return e.ctrlKey;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
function useSelectableCollection(options) {
|
|
95
|
-
var manager = options.selectionManager,
|
|
96
|
-
delegate = options.keyboardDelegate,
|
|
97
|
-
_options$autoFocus = options.autoFocus,
|
|
98
|
-
autoFocus = _options$autoFocus === void 0 ? false : _options$autoFocus,
|
|
99
|
-
_options$shouldFocusW = options.shouldFocusWrap,
|
|
100
|
-
shouldFocusWrap = _options$shouldFocusW === void 0 ? false : _options$shouldFocusW,
|
|
101
|
-
_options$disallowEmpt = options.disallowEmptySelection,
|
|
102
|
-
disallowEmptySelection = _options$disallowEmpt === void 0 ? false : _options$disallowEmpt,
|
|
103
|
-
_options$disallowSele = options.disallowSelectAll,
|
|
104
|
-
disallowSelectAll = _options$disallowSele === void 0 ? false : _options$disallowSele;
|
|
105
|
-
|
|
106
|
-
var onKeyDown = function onKeyDown(e) {
|
|
107
|
-
switch (e.key) {
|
|
108
|
-
case 'ArrowDown':
|
|
109
|
-
{
|
|
110
|
-
if (delegate.getKeyBelow) {
|
|
111
|
-
e.preventDefault();
|
|
112
|
-
var nextKey = delegate.getKeyBelow(manager.focusedKey);
|
|
113
|
-
|
|
114
|
-
if (nextKey) {
|
|
115
|
-
manager.setFocusedKey(nextKey);
|
|
116
|
-
} else if (shouldFocusWrap) {
|
|
117
|
-
manager.setFocusedKey(delegate.getFirstKey());
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if (e.shiftKey && manager.selectionMode === 'multiple') {
|
|
121
|
-
manager.extendSelection(nextKey);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
break;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
case 'ArrowUp':
|
|
129
|
-
{
|
|
130
|
-
if (delegate.getKeyAbove) {
|
|
131
|
-
e.preventDefault();
|
|
132
|
-
|
|
133
|
-
var _nextKey = delegate.getKeyAbove(manager.focusedKey);
|
|
134
|
-
|
|
135
|
-
if (_nextKey) {
|
|
136
|
-
manager.setFocusedKey(_nextKey);
|
|
137
|
-
} else if (shouldFocusWrap) {
|
|
138
|
-
manager.setFocusedKey(delegate.getLastKey());
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
if (e.shiftKey && manager.selectionMode === 'multiple') {
|
|
142
|
-
manager.extendSelection(_nextKey);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
case 'ArrowLeft':
|
|
150
|
-
{
|
|
151
|
-
if (delegate.getKeyLeftOf) {
|
|
152
|
-
e.preventDefault();
|
|
153
|
-
|
|
154
|
-
var _nextKey2 = delegate.getKeyLeftOf(manager.focusedKey);
|
|
155
|
-
|
|
156
|
-
if (_nextKey2) {
|
|
157
|
-
manager.setFocusedKey(_nextKey2);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (e.shiftKey && manager.selectionMode === 'multiple') {
|
|
161
|
-
manager.extendSelection(_nextKey2);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
break;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
case 'ArrowRight':
|
|
169
|
-
{
|
|
170
|
-
if (delegate.getKeyRightOf) {
|
|
171
|
-
e.preventDefault();
|
|
172
|
-
|
|
173
|
-
var _nextKey3 = delegate.getKeyRightOf(manager.focusedKey);
|
|
174
|
-
|
|
175
|
-
if (_nextKey3) {
|
|
176
|
-
manager.setFocusedKey(_nextKey3);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
if (e.shiftKey && manager.selectionMode === 'multiple') {
|
|
180
|
-
manager.extendSelection(_nextKey3);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
break;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
case 'Home':
|
|
188
|
-
if (delegate.getFirstKey) {
|
|
189
|
-
e.preventDefault();
|
|
190
|
-
var firstKey = delegate.getFirstKey();
|
|
191
|
-
manager.setFocusedKey(firstKey);
|
|
192
|
-
|
|
193
|
-
if ($f6850b13dba63fef3157aa366dff950$var$isCtrlKeyPressed(e) && e.shiftKey && manager.selectionMode === 'multiple') {
|
|
194
|
-
manager.extendSelection(firstKey);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
break;
|
|
199
|
-
|
|
200
|
-
case 'End':
|
|
201
|
-
if (delegate.getLastKey) {
|
|
202
|
-
e.preventDefault();
|
|
203
|
-
var lastKey = delegate.getLastKey();
|
|
204
|
-
manager.setFocusedKey(lastKey);
|
|
205
|
-
|
|
206
|
-
if ($f6850b13dba63fef3157aa366dff950$var$isCtrlKeyPressed(e) && e.shiftKey && manager.selectionMode === 'multiple') {
|
|
207
|
-
manager.extendSelection(lastKey);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
break;
|
|
212
|
-
|
|
213
|
-
case 'PageDown':
|
|
214
|
-
if (delegate.getKeyPageBelow) {
|
|
215
|
-
e.preventDefault();
|
|
216
|
-
|
|
217
|
-
var _nextKey4 = delegate.getKeyPageBelow(manager.focusedKey);
|
|
218
|
-
|
|
219
|
-
if (_nextKey4) {
|
|
220
|
-
manager.setFocusedKey(_nextKey4);
|
|
221
|
-
|
|
222
|
-
if (e.shiftKey && manager.selectionMode === 'multiple') {
|
|
223
|
-
manager.extendSelection(_nextKey4);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
break;
|
|
229
|
-
|
|
230
|
-
case 'PageUp':
|
|
231
|
-
if (delegate.getKeyPageAbove) {
|
|
232
|
-
e.preventDefault();
|
|
233
|
-
|
|
234
|
-
var _nextKey5 = delegate.getKeyPageAbove(manager.focusedKey);
|
|
235
|
-
|
|
236
|
-
if (_nextKey5) {
|
|
237
|
-
manager.setFocusedKey(_nextKey5);
|
|
238
|
-
|
|
239
|
-
if (e.shiftKey && manager.selectionMode === 'multiple') {
|
|
240
|
-
manager.extendSelection(_nextKey5);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
break;
|
|
246
|
-
|
|
247
|
-
case 'a':
|
|
248
|
-
if ($f6850b13dba63fef3157aa366dff950$var$isCtrlKeyPressed(e) && manager.selectionMode === 'multiple' && disallowSelectAll !== true) {
|
|
249
|
-
e.preventDefault();
|
|
250
|
-
manager.selectAll();
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
break;
|
|
254
|
-
|
|
255
|
-
case 'Escape':
|
|
256
|
-
e.preventDefault();
|
|
257
|
-
|
|
258
|
-
if (!disallowEmptySelection) {
|
|
259
|
-
manager.clearSelection();
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
break;
|
|
263
|
-
}
|
|
264
|
-
};
|
|
265
|
-
|
|
266
|
-
var onFocus = function onFocus(e) {
|
|
267
|
-
manager.setFocused(true);
|
|
268
|
-
|
|
269
|
-
if (manager.focusedKey == null && e.target === e.currentTarget) {
|
|
270
|
-
// If the user hasn't yet interacted with the collection, there will be no focusedKey set.
|
|
271
|
-
// Attempt to detect whether the user is tabbing forward or backward into the collection
|
|
272
|
-
// and either focus the first or last item accordingly.
|
|
273
|
-
var relatedTarget = e.relatedTarget;
|
|
274
|
-
|
|
275
|
-
if (relatedTarget && e.currentTarget.compareDocumentPosition(relatedTarget) & Node.DOCUMENT_POSITION_FOLLOWING) {
|
|
276
|
-
manager.setFocusedKey(delegate.getLastKey());
|
|
277
|
-
} else {
|
|
278
|
-
manager.setFocusedKey(delegate.getFirstKey());
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
};
|
|
282
|
-
|
|
283
|
-
var onBlur = function onBlur() {
|
|
284
|
-
manager.setFocused(false);
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
useEffect(function () {
|
|
288
|
-
if (autoFocus) {
|
|
289
|
-
manager.setFocused(true); // By default, select first item for focus target
|
|
290
|
-
|
|
291
|
-
var focusedKey = delegate.getFirstKey();
|
|
292
|
-
var selectedKeys = manager.selectedKeys; // Set the last item as the new focus target if autoFocus is 'last' (i.e. ArrowUp opening the menu)
|
|
293
|
-
|
|
294
|
-
if (autoFocus === 'last') {
|
|
295
|
-
focusedKey = delegate.getLastKey();
|
|
296
|
-
} // If there are any selected keys, make the first one the new focus target
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
if (selectedKeys.size) {
|
|
300
|
-
focusedKey = selectedKeys.values().next().value;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
manager.setFocusedKey(focusedKey);
|
|
304
|
-
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
305
|
-
|
|
306
|
-
}, []);
|
|
307
|
-
|
|
308
|
-
var _useTypeSelect = useTypeSelect({
|
|
309
|
-
keyboardDelegate: delegate,
|
|
310
|
-
selectionManager: manager
|
|
311
|
-
}),
|
|
312
|
-
typeSelectProps = _useTypeSelect.typeSelectProps;
|
|
313
|
-
|
|
314
|
-
return {
|
|
315
|
-
collectionProps: mergeProps(typeSelectProps, {
|
|
316
|
-
onKeyDown: onKeyDown,
|
|
317
|
-
onFocus: onFocus,
|
|
318
|
-
onBlur: onBlur
|
|
319
|
-
})
|
|
320
|
-
};
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
exports.useSelectableCollection = useSelectableCollection;
|
|
324
|
-
|
|
325
|
-
function useSelectableItem(options) {
|
|
326
|
-
var manager = options.selectionManager,
|
|
327
|
-
itemKey = options.itemKey,
|
|
328
|
-
itemRef = options.itemRef,
|
|
329
|
-
shouldSelectOnPressUp = options.shouldSelectOnPressUp,
|
|
330
|
-
isVirtualized = options.isVirtualized;
|
|
331
|
-
|
|
332
|
-
var onSelect = function onSelect(e) {
|
|
333
|
-
if (manager.selectionMode === 'none') {
|
|
334
|
-
return;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
if (manager.selectionMode === 'single') {
|
|
338
|
-
if (manager.selectedKeys.has(itemKey)) {
|
|
339
|
-
manager.toggleSelection(itemKey);
|
|
340
|
-
} else {
|
|
341
|
-
manager.replaceSelection(itemKey);
|
|
342
|
-
}
|
|
343
|
-
} else if (e.shiftKey) {
|
|
344
|
-
manager.extendSelection(itemKey);
|
|
345
|
-
} else if (manager) {
|
|
346
|
-
manager.toggleSelection(itemKey);
|
|
347
|
-
}
|
|
348
|
-
}; // Focus the associated DOM node when this item becomes the focusedKey
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
var isFocused = itemKey === manager.focusedKey;
|
|
352
|
-
useEffect(function () {
|
|
353
|
-
if (isFocused && manager.isFocused && document.activeElement !== itemRef.current) {
|
|
354
|
-
focusWithoutScrolling(itemRef.current);
|
|
355
|
-
}
|
|
356
|
-
}, [itemRef, isFocused, manager.focusedKey, manager.isFocused]);
|
|
357
|
-
var itemProps = {
|
|
358
|
-
tabIndex: isFocused ? 0 : -1,
|
|
359
|
-
onFocus: function onFocus() {
|
|
360
|
-
manager.setFocusedKey(itemKey);
|
|
361
|
-
}
|
|
362
|
-
}; // By default, selection occurs on pointer down. This can be strange if selecting an
|
|
363
|
-
// item causes the UI to disappear immediately (e.g. menuts).
|
|
364
|
-
// If shouldSelectOnPressUp is true, we use onPressUp instead of onPressStart.
|
|
365
|
-
// onPress requires a pointer down event on the same element as pointer up. For menus,
|
|
366
|
-
// we want to be able to have the pointer down on the trigger that opens the menu and
|
|
367
|
-
// the pointer up on the menu item rather than requiring a separate press.
|
|
368
|
-
// For keyboard events, selection still occurrs on key down.
|
|
369
|
-
|
|
370
|
-
if (shouldSelectOnPressUp) {
|
|
371
|
-
itemProps.onPressStart = function (e) {
|
|
372
|
-
if (e.pointerType === 'keyboard') {
|
|
373
|
-
onSelect(e);
|
|
374
|
-
}
|
|
375
|
-
};
|
|
376
|
-
|
|
377
|
-
itemProps.onPressUp = function (e) {
|
|
378
|
-
if (e.pointerType !== 'keyboard') {
|
|
379
|
-
onSelect(e);
|
|
380
|
-
}
|
|
381
|
-
};
|
|
382
|
-
} else {
|
|
383
|
-
itemProps.onPressStart = onSelect;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
if (!isVirtualized) {
|
|
387
|
-
itemProps['data-key'] = itemKey;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
return {
|
|
391
|
-
itemProps: itemProps
|
|
392
|
-
};
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
exports.useSelectableItem = useSelectableItem;
|
|
396
|
-
|
|
13
|
+
$parcel$export(module.exports, "useSelectableCollection", () => $b6837c2f80a3c32f$exports.useSelectableCollection);
|
|
14
|
+
$parcel$export(module.exports, "useSelectableItem", () => $433b1145b0781e10$exports.useSelectableItem);
|
|
15
|
+
$parcel$export(module.exports, "useSelectableList", () => $bd230acee196f50c$exports.useSelectableList);
|
|
16
|
+
$parcel$export(module.exports, "ListKeyboardDelegate", () => $836f880b12dcae5c$exports.ListKeyboardDelegate);
|
|
17
|
+
$parcel$export(module.exports, "DOMLayoutDelegate", () => $2ac4508142683dcb$exports.DOMLayoutDelegate);
|
|
18
|
+
$parcel$export(module.exports, "useTypeSelect", () => $a1189052f36475e8$exports.useTypeSelect);
|
|
397
19
|
/*
|
|
398
20
|
* Copyright 2020 Adobe. All rights reserved.
|
|
399
21
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
@@ -404,226 +26,12 @@ exports.useSelectableItem = useSelectableItem;
|
|
|
404
26
|
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
405
27
|
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
406
28
|
* governing permissions and limitations under the License.
|
|
407
|
-
*/
|
|
408
|
-
var ListKeyboardDelegate = /*#__PURE__*/function () {
|
|
409
|
-
function ListKeyboardDelegate(collection, ref, collator) {
|
|
410
|
-
_babelRuntimeHelpersClassCallCheck(this, ListKeyboardDelegate);
|
|
411
|
-
|
|
412
|
-
_babelRuntimeHelpersDefineProperty(this, "collection", void 0);
|
|
413
|
-
|
|
414
|
-
_babelRuntimeHelpersDefineProperty(this, "ref", void 0);
|
|
415
|
-
|
|
416
|
-
_babelRuntimeHelpersDefineProperty(this, "collator", void 0);
|
|
417
|
-
|
|
418
|
-
this.collection = collection;
|
|
419
|
-
this.ref = ref;
|
|
420
|
-
this.collator = collator;
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
_babelRuntimeHelpersCreateClass(ListKeyboardDelegate, [{
|
|
424
|
-
key: "getKeyBelow",
|
|
425
|
-
value: function getKeyBelow(key) {
|
|
426
|
-
key = this.collection.getKeyAfter(key);
|
|
427
|
-
|
|
428
|
-
while (key) {
|
|
429
|
-
var item = this.collection.getItem(key);
|
|
430
|
-
|
|
431
|
-
if (item.type === 'item' && !item.isDisabled) {
|
|
432
|
-
return key;
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
key = this.collection.getKeyAfter(key);
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
}, {
|
|
439
|
-
key: "getKeyAbove",
|
|
440
|
-
value: function getKeyAbove(key) {
|
|
441
|
-
key = this.collection.getKeyBefore(key);
|
|
442
|
-
|
|
443
|
-
while (key) {
|
|
444
|
-
var item = this.collection.getItem(key);
|
|
445
|
-
|
|
446
|
-
if (item.type === 'item' && !item.isDisabled) {
|
|
447
|
-
return key;
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
key = this.collection.getKeyBefore(key);
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
}, {
|
|
454
|
-
key: "getFirstKey",
|
|
455
|
-
value: function getFirstKey() {
|
|
456
|
-
var key = this.collection.getFirstKey();
|
|
457
|
-
|
|
458
|
-
while (key) {
|
|
459
|
-
var item = this.collection.getItem(key);
|
|
460
|
-
|
|
461
|
-
if (item.type === 'item' && !item.isDisabled) {
|
|
462
|
-
return key;
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
key = this.collection.getKeyAfter(key);
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
}, {
|
|
469
|
-
key: "getLastKey",
|
|
470
|
-
value: function getLastKey() {
|
|
471
|
-
var key = this.collection.getLastKey();
|
|
472
|
-
|
|
473
|
-
while (key) {
|
|
474
|
-
var item = this.collection.getItem(key);
|
|
475
|
-
|
|
476
|
-
if (item.type === 'item' && !item.isDisabled) {
|
|
477
|
-
return key;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
key = this.collection.getKeyBefore(key);
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
}, {
|
|
484
|
-
key: "getItem",
|
|
485
|
-
value: function getItem(key) {
|
|
486
|
-
return this.ref.current.querySelector("[data-key=\"".concat(key, "\"]"));
|
|
487
|
-
}
|
|
488
|
-
}, {
|
|
489
|
-
key: "getKeyPageAbove",
|
|
490
|
-
value: function getKeyPageAbove(key) {
|
|
491
|
-
var menu = this.ref.current;
|
|
492
|
-
var item = this.getItem(key);
|
|
493
|
-
|
|
494
|
-
if (!item) {
|
|
495
|
-
return null;
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
var pageY = Math.max(0, item.offsetTop + item.offsetHeight - menu.offsetHeight);
|
|
499
|
-
|
|
500
|
-
while (item && item.offsetTop > pageY) {
|
|
501
|
-
key = this.getKeyAbove(key);
|
|
502
|
-
item = this.getItem(key);
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
return key;
|
|
506
|
-
}
|
|
507
|
-
}, {
|
|
508
|
-
key: "getKeyPageBelow",
|
|
509
|
-
value: function getKeyPageBelow(key) {
|
|
510
|
-
var menu = this.ref.current;
|
|
511
|
-
var item = this.getItem(key);
|
|
512
|
-
|
|
513
|
-
if (!item) {
|
|
514
|
-
return null;
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
var pageY = Math.min(menu.scrollHeight, item.offsetTop - item.offsetHeight + menu.offsetHeight);
|
|
518
|
-
|
|
519
|
-
while (item && item.offsetTop < pageY) {
|
|
520
|
-
key = this.getKeyBelow(key);
|
|
521
|
-
item = this.getItem(key);
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
return key;
|
|
525
|
-
}
|
|
526
|
-
}, {
|
|
527
|
-
key: "getKeyForSearch",
|
|
528
|
-
value: function getKeyForSearch(search, fromKey) {
|
|
529
|
-
if (!this.collator) {
|
|
530
|
-
return null;
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
var collection = this.collection;
|
|
534
|
-
var key = fromKey ? this.getKeyBelow(fromKey) : this.getFirstKey();
|
|
535
|
-
|
|
536
|
-
while (key) {
|
|
537
|
-
var item = collection.getItem(key);
|
|
538
|
-
var substring = item.textValue.slice(0, search.length);
|
|
539
|
-
|
|
540
|
-
if (item.textValue && this.collator.compare(substring, search) === 0) {
|
|
541
|
-
return key;
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
key = this.getKeyBelow(key);
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
return null;
|
|
548
|
-
}
|
|
549
|
-
}]);
|
|
550
|
-
|
|
551
|
-
return ListKeyboardDelegate;
|
|
552
|
-
}();
|
|
553
|
-
|
|
554
|
-
exports.ListKeyboardDelegate = ListKeyboardDelegate;
|
|
555
|
-
|
|
556
|
-
function useSelectableList(props) {
|
|
557
|
-
var selectionManager = props.selectionManager,
|
|
558
|
-
collection = props.collection,
|
|
559
|
-
ref = props.ref,
|
|
560
|
-
keyboardDelegate = props.keyboardDelegate,
|
|
561
|
-
autoFocus = props.autoFocus,
|
|
562
|
-
shouldFocusWrap = props.shouldFocusWrap,
|
|
563
|
-
isVirtualized = props.isVirtualized,
|
|
564
|
-
disallowEmptySelection = props.disallowEmptySelection; // By default, a KeyboardDelegate is provided which uses the DOM to query layout information (e.g. for page up/page down).
|
|
565
|
-
// When virtualized, the layout object will be passed in as a prop and override this.
|
|
566
|
-
|
|
567
|
-
var collator = useCollator({
|
|
568
|
-
usage: 'search',
|
|
569
|
-
sensitivity: 'base'
|
|
570
|
-
});
|
|
571
|
-
var delegate = useMemo(function () {
|
|
572
|
-
return keyboardDelegate || new ListKeyboardDelegate(collection, ref, collator);
|
|
573
|
-
}, [keyboardDelegate, collection, ref, collator]); // If not virtualized, scroll the focused element into view when the focusedKey changes.
|
|
574
|
-
// When virtualized, CollectionView handles this internally.
|
|
575
|
-
|
|
576
|
-
useEffect(function () {
|
|
577
|
-
if (!isVirtualized && selectionManager.focusedKey) {
|
|
578
|
-
var element = ref.current.querySelector("[data-key=\"".concat(selectionManager.focusedKey, "\"]"));
|
|
579
|
-
|
|
580
|
-
if (element) {
|
|
581
|
-
$c9da038647e33591ee80c7ba6beca8c$var$scrollIntoView(ref.current, element);
|
|
582
|
-
}
|
|
583
|
-
}
|
|
584
|
-
}, [isVirtualized, ref, selectionManager.focusedKey]);
|
|
585
|
-
|
|
586
|
-
var _useSelectableCollect = useSelectableCollection({
|
|
587
|
-
selectionManager: selectionManager,
|
|
588
|
-
keyboardDelegate: delegate,
|
|
589
|
-
autoFocus: autoFocus,
|
|
590
|
-
shouldFocusWrap: shouldFocusWrap,
|
|
591
|
-
disallowEmptySelection: disallowEmptySelection
|
|
592
|
-
}),
|
|
593
|
-
collectionProps = _useSelectableCollect.collectionProps;
|
|
29
|
+
*/
|
|
594
30
|
|
|
595
|
-
return {
|
|
596
|
-
listProps: collectionProps
|
|
597
|
-
};
|
|
598
|
-
} // Scrolls `scrollView` so that `element` is visible.
|
|
599
|
-
// Similar to `element.scrollIntoView({block: 'nearest'})` (not supported in Edge),
|
|
600
|
-
// but doesn't affect parents above `scrollView`.
|
|
601
31
|
|
|
602
32
|
|
|
603
|
-
exports.useSelectableList = useSelectableList;
|
|
604
33
|
|
|
605
|
-
function $c9da038647e33591ee80c7ba6beca8c$var$scrollIntoView(scrollView, element) {
|
|
606
|
-
var offsetX = element.offsetLeft - scrollView.offsetLeft;
|
|
607
|
-
var offsetY = element.offsetTop - scrollView.offsetTop;
|
|
608
|
-
var width = element.offsetWidth;
|
|
609
|
-
var height = element.offsetHeight;
|
|
610
|
-
var x = scrollView.scrollLeft;
|
|
611
|
-
var y = scrollView.scrollTop;
|
|
612
|
-
var maxX = x + scrollView.offsetWidth;
|
|
613
|
-
var maxY = y + scrollView.offsetHeight;
|
|
614
34
|
|
|
615
|
-
if (offsetX <= x) {
|
|
616
|
-
x = offsetX;
|
|
617
|
-
} else if (offsetX + width > maxX) {
|
|
618
|
-
x += offsetX + width - maxX;
|
|
619
|
-
}
|
|
620
35
|
|
|
621
|
-
if (offsetY <= y) {
|
|
622
|
-
y = offsetY;
|
|
623
|
-
} else if (offsetY + height > maxY) {
|
|
624
|
-
y += offsetY + height - maxY;
|
|
625
|
-
}
|
|
626
36
|
|
|
627
|
-
|
|
628
|
-
scrollView.scrollTop = y;
|
|
629
|
-
}
|
|
37
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC","sources":["packages/@react-aria/selection/src/index.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport {useSelectableCollection} from './useSelectableCollection';\nexport {useSelectableItem} from './useSelectableItem';\nexport {useSelectableList} from './useSelectableList';\nexport {ListKeyboardDelegate} from './ListKeyboardDelegate';\nexport {DOMLayoutDelegate} from './DOMLayoutDelegate';\nexport {useTypeSelect} from './useTypeSelect';\n\nexport type {AriaSelectableCollectionOptions, SelectableCollectionAria} from './useSelectableCollection';\nexport type {AriaSelectableListOptions, SelectableListAria} from './useSelectableList';\nexport type {SelectableItemOptions, SelectableItemStates, SelectableItemAria} from './useSelectableItem';\nexport type {AriaTypeSelectOptions, TypeSelectAria} from './useTypeSelect';\n"],"names":[],"version":3,"file":"main.js.map"}
|