diff --git a/packages/dialog/README.md b/packages/dialog/README.md
index 2a02d13f7..b5f19b3e9 100644
--- a/packages/dialog/README.md
+++ b/packages/dialog/README.md
@@ -9,6 +9,7 @@ Its purpose is to make it easy to use our Overlay System declaratively.
import { html } from 'lit-html';
import demoStyle from './docs/demo-dialog-style.js';
import './docs/styled-dialog-content.js';
+import './docs/slots-dialog-content.js';
import './lion-dialog.js';
export default {
@@ -100,6 +101,20 @@ export const stylingContent = () => html`
`;
```
+### Content with slots
+
+```js preview-story
+export const slotsContent = () => html`
+
+
+
+
+
+`;
+```
+
### Close overlay from component slotted as content
The overlay cannot be closed by dispatching the `close-overlay` from a button in a styled component that is slotted in as content, because it will not cross the shadow boundary of the component. A method should be created that will dispatch the `close-overlay` event from the component.
diff --git a/packages/dialog/docs/slots-dialog-content.js b/packages/dialog/docs/slots-dialog-content.js
new file mode 100644
index 000000000..c5aa064c1
--- /dev/null
+++ b/packages/dialog/docs/slots-dialog-content.js
@@ -0,0 +1,14 @@
+import { LitElement, html } from '@lion/core';
+
+class SlotsDialogContent extends LitElement {
+ render() {
+ return html`
+
+
+
+
+ `;
+ }
+}
+
+customElements.define('slots-dialog-content', SlotsDialogContent);
diff --git a/packages/overlays/src/utils/get-focusable-elements.js b/packages/overlays/src/utils/get-focusable-elements.js
index 033206f77..b4d0fd11b 100644
--- a/packages/overlays/src/utils/get-focusable-elements.js
+++ b/packages/overlays/src/utils/get-focusable-elements.js
@@ -42,7 +42,7 @@ function getChildNodes(element) {
if (element.localName === 'slot') {
/** @type {HTMLSlotElement} */
const slot = element;
- return slot.assignedNodes();
+ return slot.assignedNodes({ flatten: true });
}
const { children } = element.shadowRoot || element;