[add] Image: draggable prop

Allows control over browser's default drag-and-drop behaviour for
images. Setting draggable to 'false' will prevent dragging.

Close #514
This commit is contained in:
Nicolas Gallagher
2017-06-28 14:03:19 -07:00
parent 18d60047d2
commit 8777e25d8e
2 changed files with 12 additions and 1 deletions
+9 -1
View File
@@ -4,7 +4,7 @@ import ExecutionEnvironment from 'fbjs/lib/ExecutionEnvironment';
import Image from '../';
import ImageUriCache from '../ImageUriCache';
import React from 'react';
import { mount, render } from 'enzyme';
import { mount, render, shallow } from 'enzyme';
const originalCanUseDOM = ExecutionEnvironment.canUseDOM;
const originalImage = window.Image;
@@ -76,6 +76,14 @@ describe('components/Image', () => {
});
});
test('prop "draggable"', () => {
const defaultSource = { uri: 'https://google.com/favicon.ico' };
const component = shallow(<Image defaultSource={defaultSource} />);
expect(component.find('img').prop('draggable')).toBeUndefined();
component.setProps({ defaultSource, draggable: false });
expect(component.find('img').prop('draggable')).toBe(false);
});
describe('prop "resizeMode"', () => {
[
Image.resizeMode.contain,
+3
View File
@@ -79,6 +79,7 @@ class Image extends Component {
...ViewPropTypes,
children: any,
defaultSource: ImageSourcePropType,
draggable: bool,
onError: func,
onLayout: func,
onLoad: func,
@@ -155,6 +156,7 @@ class Image extends Component {
accessible,
children,
defaultSource,
draggable,
onLayout,
source,
testID,
@@ -188,6 +190,7 @@ class Image extends Component {
// Allows users to trigger the browser's image context menu
const hiddenImage = displayImage
? createDOMElement('img', {
draggable,
src: displayImage,
style: [StyleSheet.absoluteFill, styles.img]
})