From 62ae95c43c7ab46ecf8f24342ae937fa82095194 Mon Sep 17 00:00:00 2001
From: Sascha Schulz <sschulz@dh-software.de>
Date: Mo, 19 Feb 2024 15:37:51 +0100
Subject: [PATCH] add examples for exportparts and slotted children

---
 templates/009-web-components/slotted.js       |   21 ++++++++++
 templates/009-web-components/slotted.html     |   13 ++++++
 templates/009-web-components/exportparts.js   |   39 +++++++++++++++++++
 templates/009-web-components/exportparts.html |   20 ++++++++++
 4 files changed, 93 insertions(+), 0 deletions(-)

diff --git a/templates/009-web-components/exportparts.html b/templates/009-web-components/exportparts.html
new file mode 100644
index 0000000..c20181a
--- /dev/null
+++ b/templates/009-web-components/exportparts.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="UTF-8">
+        <title>exportparts</title>
+        <script defer src="exportparts.js"></script>
+    </head>
+    <body>
+        <style>
+            outer-component::part(/* insert part */) {
+                color: red;
+            }
+
+            outer-component::part(/* insert part */) {
+                color: blue;
+            }
+        </style>
+        <outer-component></outer-component>
+    </body>
+</html>
diff --git a/templates/009-web-components/exportparts.js b/templates/009-web-components/exportparts.js
new file mode 100644
index 0000000..a8cfa1b
--- /dev/null
+++ b/templates/009-web-components/exportparts.js
@@ -0,0 +1,39 @@
+class InnerComponent extends HTMLElement {
+    constructor() {
+        super();
+
+        const shadowRoot = this.attachShadow({mode: "open"});
+
+        shadowRoot.innerHTML = `
+            <style>
+                :host {
+                    display: inline;
+                }
+            </style>
+            
+            <div>Inner Text</div>
+        `;
+    }
+}
+
+class OuterComponent extends HTMLElement {
+    constructor() {
+        super();
+
+        const shadowRoot = this.attachShadow({mode: "open"});
+
+        shadowRoot.innerHTML = `
+            <style>
+                :host {
+                    display: inline;
+                }
+            </style>
+            
+            <div>Outer Text</div>
+            <inner-component></inner-component>
+        `;
+    }
+}
+
+window.customElements.define("inner-component", InnerComponent);
+window.customElements.define("outer-component", OuterComponent);
diff --git a/templates/009-web-components/slotted.html b/templates/009-web-components/slotted.html
new file mode 100644
index 0000000..a34de8d
--- /dev/null
+++ b/templates/009-web-components/slotted.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="UTF-8">
+        <title>Slotted Children</title>
+        <script defer src="slotted.js"></script>
+    </head>
+    <body>
+        <slot-styler>
+            <!-- Slotted children -->
+        </slot-styler>
+    </body>
+</html>
diff --git a/templates/009-web-components/slotted.js b/templates/009-web-components/slotted.js
new file mode 100644
index 0000000..d770e21
--- /dev/null
+++ b/templates/009-web-components/slotted.js
@@ -0,0 +1,21 @@
+class SlotStyler extends HTMLElement {
+    constructor() {
+        super();
+
+        const shadowRoot = this.attachShadow({mode: "open"});
+
+        shadowRoot.innerHTML = `
+            <style>
+                :host {
+                    display: block;
+                }
+                
+                /* Slotted Styles here */
+            </style>
+            
+            <slot></slot>
+        `;
+    }
+}
+
+window.customElements.define("slot-styler", SlotStyler);

--
Gitblit v1.9.3