@samitouri / QOS-React-2 / commits / 27b8e7a6f4

corrections

Andreas Svensson committed Dec 3, 2013 at 09:39 UTC 27b8e7a6f4987945d317ba20abdcad8252115566
2 files changed +20 -31
src/core/__tests__/ReactDOMComponent-test.js
+1 -1
@@ -187,7 +187,7 @@ describe('ReactDOMComponent', function() {
187 var stub = ReactTestUtils.renderIntoDocument(<div value="" />);
188
189 var node = stub.getDOMNode();
190 - var nodeValue = node.value;
190 + var nodeValue = ''; // node.value always returns undefined
191 var nodeValueSetter = mocks.getMockFunction();
192 Object.defineProperty(node, 'value', {
193 get: function() {
src/dom/DOMPropertyOperations.js
+19 -30
@@ -24,6 +24,12 @@ var DOMProperty = require('DOMProperty');
24 var escapeTextForBrowser = require('escapeTextForBrowser');
25 var memoizeStringOnly = require('memoizeStringOnly');
26
27 +function shouldIgnoreValue(name, value) {
28 + return value == null ||
29 + DOMProperty.hasBooleanValue[name] && !value ||
30 + DOMProperty.hasPositiveNumericValue[name] && (isNaN(value) || value < 1);
31 +};
32 +
33 var processAttributeNameAndPrefix = memoizeStringOnly(function(name) {
34 return escapeTextForBrowser(name) + '="';
35 });
@@ -74,10 +80,7 @@ var DOMPropertyOperations = {
80 */
81 createMarkupForProperty: function(name, value) {
82 if (DOMProperty.isStandardName[name]) {
77 - if (value == null ||
78 - DOMProperty.hasBooleanValue[name] && !value ||
79 - DOMProperty.hasPositiveNumericValue[name] &&
80 - (isNaN(+value) || +value < 1)) {
83 + if (shouldIgnoreValue(name, value)) {
84 return '';
85 }
86 var attributeName = DOMProperty.getAttributeName[name];
@@ -107,32 +110,14 @@ var DOMPropertyOperations = {
110 var mutationMethod = DOMProperty.getMutationMethod[name];
111 if (mutationMethod) {
112 mutationMethod(node, value);
113 + } else if (shouldIgnoreValue(name, value)) {
114 + this.deleteValueForProperty(node, name);
115 + } else if (DOMProperty.mustUseAttribute[name]) {
116 + node.setAttribute(DOMProperty.getAttributeName[name], '' + value);
117 } else {
111 - if (value == null ||
112 - DOMProperty.hasBooleanValue[name] && !value ||
113 - DOMProperty.hasPositiveNumericValue[name] &&
114 - (isNaN(+value) || +value < 1)) {
115 - if (DOMProperty.mustUseAttribute[name]) {
116 - node.removeAttribute(DOMProperty.getAttributeName[name]);
117 - } else {
118 - var propName = DOMProperty.getPropertyName[name];
119 - value = DOMProperty.getDefaultValueForProperty(
120 - node.nodeName,
121 - name
122 - );
123 - if (!DOMProperty.hasSideEffects[name] ||
124 - node[propName] !== value) {
125 - node[propName] = value;
126 - }
127 - }
128 - } else if (DOMProperty.mustUseAttribute[name]) {
129 - node.setAttribute(DOMProperty.getAttributeName[name], '' + value);
130 - } else {
131 - var propName = DOMProperty.getPropertyName[name];
132 - if (!DOMProperty.hasSideEffects[name] ||
133 - node[propName] !== value) {
134 - node[propName] = value;
135 - }
118 + var propName = DOMProperty.getPropertyName[name];
119 + if (!DOMProperty.hasSideEffects[name] || node[propName] !== value) {
120 + node[propName] = value;
121 }
122 }
123 } else if (DOMProperty.isCustomAttribute(name)) {
@@ -161,10 +146,14 @@ var DOMPropertyOperations = {
146 node.removeAttribute(DOMProperty.getAttributeName[name]);
147 } else {
148 var propName = DOMProperty.getPropertyName[name];
164 - node[propName] = DOMProperty.getDefaultValueForProperty(
149 + var defaultValue = DOMProperty.getDefaultValueForProperty(
150 node.nodeName,
151 name
152 );
153 + if (!DOMProperty.hasSideEffects[name] ||
154 + node[propName] !== defaultValue) {
155 + node[propName] = defaultValue;
156 + }
157 }
158 } else if (DOMProperty.isCustomAttribute(name)) {
159 node.removeAttribute(name);