@react-aria/interactions 3.0.0-nightly.1263 → 3.0.0-nightly.1281
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/main.js +93 -5
- package/dist/main.js.map +1 -1
- package/dist/module.js +89 -5
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +30 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +1 -0
- package/src/useFocusVisible.ts +1 -1
- package/src/useLongPress.ts +119 -0
- package/src/usePress.ts +5 -4
package/dist/main.js
CHANGED
|
@@ -19,7 +19,8 @@ var {
|
|
|
19
19
|
useGlobalListeners,
|
|
20
20
|
useSyncRef,
|
|
21
21
|
isMac,
|
|
22
|
-
useEvent
|
|
22
|
+
useEvent,
|
|
23
|
+
useDescription
|
|
23
24
|
} = require("@react-aria/utils");
|
|
24
25
|
|
|
25
26
|
var _babelRuntimeHelpersObjectWithoutPropertiesLoose = $parcel$interopDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
@@ -358,11 +359,12 @@ function usePress(props) {
|
|
|
358
359
|
e.preventDefault();
|
|
359
360
|
e.stopPropagation();
|
|
360
361
|
state.isPressed = false;
|
|
361
|
-
|
|
362
|
+
let target = e.target;
|
|
363
|
+
triggerPressEnd($ed8d760564e19d8c7d03a6a4$var$createEvent(state.target, e), 'keyboard', state.target.contains(target));
|
|
362
364
|
removeAllGlobalListeners(); // If the target is a link, trigger the click method to open the URL,
|
|
363
365
|
// but defer triggering pressEnd until onClick event handler.
|
|
364
366
|
|
|
365
|
-
if (
|
|
367
|
+
if (state.target.contains(target) && $ed8d760564e19d8c7d03a6a4$var$isHTMLAnchorLink(state.target) || state.target.getAttribute('role') === 'link') {
|
|
366
368
|
state.target.click();
|
|
367
369
|
}
|
|
368
370
|
}
|
|
@@ -721,6 +723,7 @@ function $ed8d760564e19d8c7d03a6a4$var$isHTMLAnchorLink(target) {
|
|
|
721
723
|
function $ed8d760564e19d8c7d03a6a4$var$isValidKeyboardEvent(event) {
|
|
722
724
|
const {
|
|
723
725
|
key,
|
|
726
|
+
code,
|
|
724
727
|
target
|
|
725
728
|
} = event;
|
|
726
729
|
const element = target;
|
|
@@ -731,7 +734,7 @@ function $ed8d760564e19d8c7d03a6a4$var$isValidKeyboardEvent(event) {
|
|
|
731
734
|
const role = element.getAttribute('role'); // Accessibility for keyboards. Space and Enter only.
|
|
732
735
|
// "Spacebar" is for IE 11
|
|
733
736
|
|
|
734
|
-
return (key === 'Enter' || key === ' ' || key === 'Spacebar') && tagName !== 'INPUT' && tagName !== 'TEXTAREA' && isContentEditable !== true && ( // A link with a valid href should be handled natively,
|
|
737
|
+
return (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') && tagName !== 'INPUT' && tagName !== 'TEXTAREA' && isContentEditable !== true && ( // A link with a valid href should be handled natively,
|
|
735
738
|
// unless it also has role='button' and was triggered using Space.
|
|
736
739
|
!$ed8d760564e19d8c7d03a6a4$var$isHTMLAnchorLink(element) || role === 'button' && key !== 'Enter') && // An element with role='link' should only trigger with Enter key
|
|
737
740
|
!(role === 'link' && key !== 'Enter');
|
|
@@ -949,7 +952,7 @@ function $b83372066b2b4e1d9257843b2455c$var$triggerChangeHandlers(modality, e) {
|
|
|
949
952
|
|
|
950
953
|
function $b83372066b2b4e1d9257843b2455c$var$isValidKey(e) {
|
|
951
954
|
// Control and Shift keys trigger when navigating back to the tab with keyboard.
|
|
952
|
-
return !(e.metaKey || !isMac() && e.altKey || e.ctrlKey || e.
|
|
955
|
+
return !(e.metaKey || !isMac() && e.altKey || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');
|
|
953
956
|
}
|
|
954
957
|
|
|
955
958
|
function $b83372066b2b4e1d9257843b2455c$var$handleKeyboardEvent(e) {
|
|
@@ -1820,4 +1823,89 @@ function useScrollWheel(props, ref) {
|
|
|
1820
1823
|
}
|
|
1821
1824
|
|
|
1822
1825
|
exports.useScrollWheel = useScrollWheel;
|
|
1826
|
+
const $c770c63e4e3d986910ca483d5a$var$DEFAULT_THRESHOLD = 500;
|
|
1827
|
+
|
|
1828
|
+
function useLongPress(props) {
|
|
1829
|
+
let {
|
|
1830
|
+
isDisabled,
|
|
1831
|
+
onLongPressStart,
|
|
1832
|
+
onLongPressEnd,
|
|
1833
|
+
onLongPress,
|
|
1834
|
+
threshold = $c770c63e4e3d986910ca483d5a$var$DEFAULT_THRESHOLD,
|
|
1835
|
+
accessibilityDescription
|
|
1836
|
+
} = props;
|
|
1837
|
+
const timeRef = useRef(null);
|
|
1838
|
+
let {
|
|
1839
|
+
addGlobalListener,
|
|
1840
|
+
removeGlobalListener
|
|
1841
|
+
} = useGlobalListeners();
|
|
1842
|
+
let {
|
|
1843
|
+
pressProps
|
|
1844
|
+
} = usePress({
|
|
1845
|
+
isDisabled,
|
|
1846
|
+
|
|
1847
|
+
onPressStart(e) {
|
|
1848
|
+
if (e.pointerType === 'mouse' || e.pointerType === 'touch') {
|
|
1849
|
+
if (onLongPressStart) {
|
|
1850
|
+
onLongPressStart(_babelRuntimeHelpersExtends({}, e, {
|
|
1851
|
+
type: 'longpressstart'
|
|
1852
|
+
}));
|
|
1853
|
+
}
|
|
1854
|
+
|
|
1855
|
+
timeRef.current = setTimeout(() => {
|
|
1856
|
+
// Prevent other usePress handlers from also handling this event.
|
|
1857
|
+
e.target.dispatchEvent(new PointerEvent('pointercancel', {
|
|
1858
|
+
bubbles: true
|
|
1859
|
+
}));
|
|
1860
|
+
|
|
1861
|
+
if (onLongPress) {
|
|
1862
|
+
onLongPress(_babelRuntimeHelpersExtends({}, e, {
|
|
1863
|
+
type: 'longpress'
|
|
1864
|
+
}));
|
|
1865
|
+
}
|
|
1866
|
+
|
|
1867
|
+
timeRef.current = null;
|
|
1868
|
+
}, threshold); // Prevent context menu, which may be opened on long press on touch devices
|
|
1869
|
+
|
|
1870
|
+
if (e.pointerType === 'touch') {
|
|
1871
|
+
let onContextMenu = e => {
|
|
1872
|
+
e.preventDefault();
|
|
1873
|
+
};
|
|
1874
|
+
|
|
1875
|
+
addGlobalListener(e.target, 'contextmenu', onContextMenu, {
|
|
1876
|
+
once: true
|
|
1877
|
+
});
|
|
1878
|
+
addGlobalListener(window, 'pointerup', () => {
|
|
1879
|
+
// If no contextmenu event is fired quickly after pointerup, remove the handler
|
|
1880
|
+
// so future context menu events outside a long press are not prevented.
|
|
1881
|
+
setTimeout(() => {
|
|
1882
|
+
removeGlobalListener(e.target, 'contextmenu', onContextMenu);
|
|
1883
|
+
}, 30);
|
|
1884
|
+
}, {
|
|
1885
|
+
once: true
|
|
1886
|
+
});
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
},
|
|
1890
|
+
|
|
1891
|
+
onPressEnd(e) {
|
|
1892
|
+
if (timeRef.current) {
|
|
1893
|
+
clearTimeout(timeRef.current);
|
|
1894
|
+
}
|
|
1895
|
+
|
|
1896
|
+
if (onLongPressEnd) {
|
|
1897
|
+
onLongPressEnd(_babelRuntimeHelpersExtends({}, e, {
|
|
1898
|
+
type: 'longpressend'
|
|
1899
|
+
}));
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1902
|
+
|
|
1903
|
+
});
|
|
1904
|
+
let descriptionProps = useDescription(onLongPress && !isDisabled ? accessibilityDescription : null);
|
|
1905
|
+
return {
|
|
1906
|
+
longPressProps: mergeProps(pressProps, descriptionProps)
|
|
1907
|
+
};
|
|
1908
|
+
}
|
|
1909
|
+
|
|
1910
|
+
exports.useLongPress = useLongPress;
|
|
1823
1911
|
//# sourceMappingURL=main.js.map
|