@samitouri / QOS-React-2 / commits / 5b17e75707

Support more properties for image maps

Supporting the `<area>` tag is pretty useless if we don't support the necessary properties.

Paul O'Shannessy committed Jun 30, 2014 at 20:53 UTC 5b17e757070cc8ee4ffb7cb064195588db75e4e6
2 files changed +141
src/browser/ui/dom/HTMLDOMPropertyConfig.js
+3
@@ -82,6 +82,7 @@ var HTMLDOMPropertyConfig = {
82 contentEditable: null,
83 contextMenu: MUST_USE_ATTRIBUTE,
84 controls: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
85 + coords: null,
86 crossOrigin: null,
87 data: null, // For `<object />` acts as `src`.
88 dateTime: MUST_USE_ATTRIBUTE,
@@ -133,6 +134,7 @@ var HTMLDOMPropertyConfig = {
134 scrollTop: MUST_USE_PROPERTY,
135 seamless: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
136 selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
137 + shape: null,
138 size: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
139 span: HAS_POSITIVE_NUMERIC_VALUE,
140 spellCheck: null,
@@ -146,6 +148,7 @@ var HTMLDOMPropertyConfig = {
148 target: null,
149 title: null,
150 type: null,
151 + useMap: null,
152 value: MUST_USE_PROPERTY | HAS_SIDE_EFFECTS,
153 width: MUST_USE_ATTRIBUTE,
154 wmode: MUST_USE_ATTRIBUTE,
vendor/fbtransform/transforms/__tests__/react-displayName-test.js new
+138
@@ -0,0 +1,138 @@
1 +/**
2 + * Copyright 2004-present Facebook. All Rights Reserved.
3 + *
4 + * @emails jeffmo@fb.com
5 + */
6 +"use strict";
7 +
8 +require('mock-modules').autoMockOff();
9 +
10 +var transformAll = require('../../syntax.js').transformAll;
11 +
12 +function transform(source) {
13 + return transformAll(source, {}, ['allocate']);
14 +}
15 +
16 +describe('react displayName jsx', function() {
17 +
18 + it('should only inject displayName if missing', function() {
19 + var code = [
20 + '/** @jsx React.DOM */',
21 + '"use strict";',
22 + 'var Whateva = React.createClass({',
23 + ' displayName: \'Whateva\',',
24 + ' render: function() {',
25 + ' return <div className=\'whateva\'>...whateva.</div>;',
26 + ' }',
27 + '});'
28 + ].join('\n');
29 +
30 + var result = [
31 + '/** @jsx React.DOM */',
32 + '"use strict";',
33 + 'var Whateva = React.createClass({',
34 + ' displayName: \'Whateva\',',
35 + ' render: function() {',
36 + ' return React.DOM.div({className: "whateva"}, "...whateva.");',
37 + ' }',
38 + '});'
39 + ].join('\n');
40 +
41 + expect(transform(code).code).toEqual(result);
42 + });
43 +
44 + it('should inject displayName in simple assignment', () => {
45 + var code = [
46 + '/** @jsx React.DOM */',
47 + 'var Component = React.createClass({',
48 + ' render: function() {',
49 + ' return <div/>;',
50 + ' }',
51 + '});'
52 + ].join('\n');
53 +
54 + var result = [
55 + '/** @jsx React.DOM */',
56 + 'var Component = React.createClass({displayName: \'Component\',',
57 + ' render: function() {',
58 + ' return React.DOM.div(null);',
59 + ' }',
60 + '});'
61 + ].join('\n');
62 +
63 + expect(transform(code).code).toEqual(result);
64 + });
65 +
66 + it('should inject displayName in simple assignment without var', () => {
67 + var code = [
68 + '/** @jsx React.DOM */',
69 + 'var Component;',
70 + 'Component = React.createClass({',
71 + ' render: function() {',
72 + ' return <div/>;',
73 + ' }',
74 + '});'
75 + ].join('\n');
76 +
77 + var result = [
78 + '/** @jsx React.DOM */',
79 + 'var Component;',
80 + 'Component = React.createClass({displayName: \'Component\',',
81 + ' render: function() {',
82 + ' return React.DOM.div(null);',
83 + ' }',
84 + '});'
85 + ].join('\n');
86 +
87 + expect(transform(code).code).toEqual(result);
88 + });
89 +
90 + it('should inject displayName in property assignment', () => {
91 + var code = [
92 + '/** @jsx React.DOM */',
93 + 'exports.Component = React.createClass({',
94 + ' render: function() {',
95 + ' return <div/>;',
96 + ' }',
97 + '});'
98 + ].join('\n');
99 +
100 + var result = [
101 + '/** @jsx React.DOM */',
102 + 'exports.Component = React.createClass({displayName: \'Component\',',
103 + ' render: function() {',
104 + ' return React.DOM.div(null);',
105 + ' }',
106 + '});'
107 + ].join('\n');
108 +
109 + expect(transform(code).code).toEqual(result);
110 + });
111 +
112 + it('should inject displayName in object declaration', () => {
113 + var code = [
114 + '/** @jsx React.DOM */',
115 + 'exports = {',
116 + ' Component: React.createClass({',
117 + ' render: function() {',
118 + ' return <div/>;',
119 + ' }',
120 + ' })',
121 + '};'
122 + ].join('\n');
123 +
124 + var result = [
125 + '/** @jsx React.DOM */',
126 + 'exports = {',
127 + ' Component: React.createClass({displayName: \'Component\',',
128 + ' render: function() {',
129 + ' return React.DOM.div(null);',
130 + ' }',
131 + ' })',
132 + '};'
133 + ].join('\n');
134 +
135 + expect(transform(code).code).toEqual(result);
136 + });
137 +
138 +});