@samitouri / QOS-React-2 / commits / 65b16b1c7e

Allow custom attribute named `on` to be passed on to elements (#11153)

* Allow single `on` property for custom elements * Remove test from ReactDOMComponent-test * Allow custom attribute named 'on' to be passed * Check property length instead of comparing strings

Georgios Giannoutsos Barkas committed Oct 10, 2017 at 02:31 UTC 65b16b1c7e4d0e5e622c733a3f106901e515124d
3 files changed +8 -2
src/renderers/dom/shared/DOMProperty.js
+2 -1
@@ -205,7 +205,8 @@ var DOMProperty = {
205 }
206 if (
207 (name[0] === 'o' || name[0] === 'O') &&
208 - (name[1] === 'n' || name[1] === 'N')
208 + (name[1] === 'n' || name[1] === 'N') &&
209 + name.length > 2
210 ) {
211 return false;
212 }
src/renderers/dom/shared/__tests__/ReactDOMServerIntegration-test.js
+5
@@ -991,6 +991,11 @@ describe('ReactDOMServerIntegration', () => {
991 );
992 expect(e.getAttribute('onunknownevent')).toBe(null);
993 });
994 +
995 + itRenders('custom attribute named `on`', async render => {
996 + const e = await render(<div on="tap:do-something" />);
997 + expect(e.getAttribute('on')).toEqual('tap:do-something');
998 + });
999 });
1000
1001 describe('elements and children', function() {
src/renderers/dom/shared/hooks/ReactDOMUnknownPropertyHook.js
+1 -1
@@ -70,7 +70,7 @@ if (__DEV__) {
70 return true;
71 }
72
73 - if (lowerCasedName.indexOf('on') === 0) {
73 + if (lowerCasedName.indexOf('on') === 0 && lowerCasedName.length > 2) {
74 warning(
75 false,
76 'Unknown event handler property `%s`. It will be ignored.%s',