Skip to content

Commit 8974861

Browse files
committed
Added light dom support
1 parent 22ddf07 commit 8974861

File tree

3 files changed

+35
-11
lines changed

3 files changed

+35
-11
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "js-element",
3-
"version": "0.0.229",
3+
"version": "0.0.230",
44
"description": "",
55
"license": "LGPL-3.0",
66
"main": "./index.js",

src/main/js-element.ts

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const elemConfigByClass = new Map<
1313
{
1414
tag: string
1515
impl: any // TODO!!!!!,
16+
shadow: boolean
1617
styles: string | string[] | (() => string | string[]) | null
1718
props: Map<string, PropConfig>
1819
}
@@ -77,6 +78,7 @@ type Listener<T> = (v: T) => void
7778

7879
function elem<E extends Component, C>(params: {
7980
tag: string
81+
shadow?: boolean
8082
impl: {
8183
patch: (content: C, container: HTMLElement) => void
8284
init: (self: E, ctrl: Ctrl) => () => C
@@ -112,13 +114,14 @@ function elem<E extends Component>(params: any) {
112114
elemConfig = {
113115
tag: params.tag,
114116
impl: params.impl,
117+
shadow: params.shadow !== false,
115118
styles: params.styles || null,
116119
props: new Map()
117120
}
118-
119121
elemConfigByClass.set(clazz, elemConfig)
120122
} else {
121123
elemConfig.tag = params.tag
124+
elemConfig.shadow = params.shadow !== false
122125
elemConfig.styles = params.styles || null
123126
elemConfig.impl = params.impl
124127
}
@@ -169,7 +172,14 @@ function prop(arg1?: any, arg2?: any): any {
169172
let elemConfig = elemConfigByClass.get(constructor)
170173

171174
if (!elemConfig) {
172-
elemConfig = { tag: '', impl: null, styles: null, props: new Map() }
175+
elemConfig = {
176+
tag: '',
177+
shadow: true,
178+
impl: null,
179+
styles: null,
180+
props: new Map()
181+
}
182+
173183
elemConfigByClass.set(constructor, elemConfig)
174184
}
175185

@@ -215,23 +225,36 @@ class BaseElement extends HTMLElement {
215225
styles = ''
216226
}
217227

218-
elemConfigByClass.get(this.constructor)!.styles = styles
228+
elemConfig.styles = styles
229+
}
230+
console.log(11111, elemConfig)
231+
if (elemConfig.shadow) {
232+
this.attachShadow({ mode: 'open' })
219233
}
220-
221-
const stylesElement = document.createElement('span')
222-
stylesElement.setAttribute('data-role', 'styles')
223234

224235
if (styles) {
225236
const styleElem = document.createElement('style')
226237
styleElem.appendChild(document.createTextNode(styles))
227-
stylesElement.appendChild(styleElem)
238+
239+
if (!elemConfig.shadow) {
240+
document.head.append(styleElem)
241+
elemConfig.styles = null
242+
} else {
243+
const stylesElement = document.createElement('span')
244+
stylesElement.appendChild(styleElem)
245+
stylesElement.setAttribute('data-role', 'styles')
246+
this.shadowRoot!.append(stylesElement)
247+
}
228248
}
229249

230250
const contentElement = document.createElement('span')
231251
contentElement.setAttribute('data-role', 'content')
232-
this.attachShadow({ mode: 'open' })
233-
//contentElement.append(document.createElement('span'))
234-
this.shadowRoot!.append(stylesElement, contentElement)
252+
253+
if (elemConfig.shadow) {
254+
this.shadowRoot!.append(contentElement)
255+
} else {
256+
this.append(contentElement)
257+
}
235258

236259
let rendered = false
237260
let mounted = false

src/stories/demos/counter-demo.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { createRef, html, lit, ref } from 'js-element/lit'
44

55
@elem({
66
tag: 'x-counter',
7+
shadow: false,
78
styles: () => styles,
89
impl: lit(counterImpl)
910
})

0 commit comments

Comments
 (0)