From 346d50e2ba0cccf25605791e9739ddb0cf5ddd04 Mon Sep 17 00:00:00 2001 From: Martin Hochel Date: Sat, 5 Nov 2016 17:34:54 +0100 Subject: [PATCH] =?UTF-8?q?support=20slot=20attribute=20on=20DOM=20element?= =?UTF-8?q?s=20for=20V1=20shadowDom=20named=20slots=20p=E2=80=A6=20(#8061)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * support slot attribute on DOM elements for V1 shadowDom named slots projection Closes #7784 * fix(test): fix lint errors --- .../dom/shared/HTMLDOMPropertyConfig.js | 2 ++ .../shared/__tests__/ReactDOMComponent-test.js | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/renderers/dom/shared/HTMLDOMPropertyConfig.js b/src/renderers/dom/shared/HTMLDOMPropertyConfig.js index ec288be9ea..da0ca9b449 100644 --- a/src/renderers/dom/shared/HTMLDOMPropertyConfig.js +++ b/src/renderers/dom/shared/HTMLDOMPropertyConfig.js @@ -139,6 +139,8 @@ var HTMLDOMPropertyConfig = { shape: 0, size: HAS_POSITIVE_NUMERIC_VALUE, sizes: 0, + // support for projecting regular DOM Elements via V1 named slots ( shadow dom ) + slot: 0, span: HAS_POSITIVE_NUMERIC_VALUE, spellCheck: 0, src: 0, diff --git a/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js b/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js index 36d2841700..00d0bd445d 100644 --- a/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js +++ b/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js @@ -245,6 +245,24 @@ describe('ReactDOMComponent', () => { expect(stubStyle.display).toEqual(''); }); + it('should allow named slot projection on both web components and regular DOM elements', () => { + var container = document.createElement('div'); + + ReactDOM.render( + + + + , + container + ); + + var lightDOM = container.firstChild.childNodes; + + expect(lightDOM[0].getAttribute('slot')).toBe('first'); + expect(lightDOM[1].getAttribute('slot')).toBe('second'); + + } ); + it('should skip reserved props on web components', () => { var container = document.createElement('div');