mirror of
https://github.com/jaandrle/deka-dom-el
synced 2024-11-21 15:39:36 +01:00
fixes #9
This commit is contained in:
parent
b740b8e020
commit
971b595927
4
dist/dde-with-observables.js
vendored
4
dist/dde-with-observables.js
vendored
File diff suppressed because one or more lines are too long
4
dist/dde.js
vendored
4
dist/dde.js
vendored
File diff suppressed because one or more lines are too long
2
dist/esm-with-observables.d.ts
vendored
2
dist/esm-with-observables.d.ts
vendored
@ -245,7 +245,7 @@ export function customElementRender<
|
||||
props?: P | ((...args: any[])=> P)
|
||||
): EL
|
||||
export function customElementWithDDE<EL extends HTMLElement>(custom_element: EL): EL
|
||||
export function lifecycleToEvents<EL extends HTMLElement>(custom_element: EL): EL
|
||||
export function lifecyclesToEvents<EL extends HTMLElement>(custom_element: EL): EL
|
||||
export function observedAttributes(custom_element: HTMLElement): Record<string, string>
|
||||
|
||||
/* TypeScript MEH */
|
||||
|
4
dist/esm-with-observables.js
vendored
4
dist/esm-with-observables.js
vendored
File diff suppressed because one or more lines are too long
2
dist/esm.d.ts
vendored
2
dist/esm.d.ts
vendored
@ -245,7 +245,7 @@ export function customElementRender<
|
||||
props?: P | ((...args: any[])=> P)
|
||||
): EL
|
||||
export function customElementWithDDE<EL extends HTMLElement>(custom_element: EL): EL
|
||||
export function lifecycleToEvents<EL extends HTMLElement>(custom_element: EL): EL
|
||||
export function lifecyclesToEvents<EL extends HTMLElement>(custom_element: EL): EL
|
||||
export function observedAttributes(custom_element: HTMLElement): Record<string, string>
|
||||
|
||||
/* TypeScript MEH */
|
||||
|
2
dist/esm.js
vendored
2
dist/esm.js
vendored
File diff suppressed because one or more lines are too long
@ -9,7 +9,7 @@ import { O } from "deka-dom-el/observables";
|
||||
O.observedAttributes;
|
||||
|
||||
// “internal” utils
|
||||
import { lifecycleToEvents } from "deka-dom-el";
|
||||
import { lifecyclesToEvents } from "deka-dom-el";
|
||||
</code></div><h3 id="h-custom-elements-introduction"><!--<dde:mark type="component" name="h3" host="parentElement" ssr/>--><a href="#h-custom-elements-introduction" tabindex="-1">#</a> Custom Elements Introduction</h3><p><a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements" title="Article about custom elements on MDN">Using custom elements</a></p><div class="code" data-js="todo"><!--<dde:mark type="component" name="code" host="parentElement" ssr/>--><code class="language-js">class CustomHTMLElement extends HTMLElement{
|
||||
static tagName = "custom-element"; // just suggestion, we can use `el(CustomHTMLElement.tagName)`
|
||||
static observedAttributes= [ "custom-attribute" ];
|
||||
@ -31,4 +31,4 @@ import { lifecycleToEvents } from "deka-dom-el";
|
||||
set customAttribute(value){ this.setAttribute("custom-attribute", value); }
|
||||
}
|
||||
customElements.define(CustomHTMLElement.tagName, CustomHTMLElement);
|
||||
</code></div><p><a href="https://gist.github.com/WebReflection/ec9f6687842aa385477c4afca625bbf4" title="Ideas and tips from WebReflection">Handy Custom Elements' Patterns</a></p><div class="notice"><!--<dde:mark type="component" name="mnemonic" host="parentElement" ssr/>--><h3 id="h-mnemonic"><!--<dde:mark type="component" name="h3" host="parentElement" ssr/>--><a href="#h-mnemonic" tabindex="-1">#</a> Mnemonic</h3><ul><li><code>customElementRender(<custom-element>, <render-function>[, <properties>])</code> — use function to render DOM structure for given <custom-element></li><li><code>customElementWithDDE(<custom-element>)</code> — register <custom-element> to DDE library, see also `lifecycleToEvents`, can be also used as decorator</li><li><code>observedAttributes(<custom-element>)</code> — returns record of observed attributes (keys uses camelCase)</li><li><code>O.observedAttributes(<custom-element>)</code> — returns record of observed attributes (keys uses camelCase and values are observables)</li><li><code>lifecycleToEvents(<class-declaration>)</code> — convert lifecycle methods to events, can be also used as decorator</li></ul></div><div class="prevNext"><!--<dde:mark type="component" name="prevNext" host="parentElement" ssr/>--><a rel="prev" href="p05-scopes" title="Organizing UI into components"><!--<dde:mark type="component" name="pageLink" host="parentElement" ssr/>-->Scopes and components (previous)</a><!--<dde:mark type="component" name="pageLink" host="this" ssr/>--></div></main></body></html>
|
||||
</code></div><p><a href="https://gist.github.com/WebReflection/ec9f6687842aa385477c4afca625bbf4" title="Ideas and tips from WebReflection">Handy Custom Elements' Patterns</a></p><div class="notice"><!--<dde:mark type="component" name="mnemonic" host="parentElement" ssr/>--><h3 id="h-mnemonic"><!--<dde:mark type="component" name="h3" host="parentElement" ssr/>--><a href="#h-mnemonic" tabindex="-1">#</a> Mnemonic</h3><ul><li><code>customElementRender(<custom-element>, <render-function>[, <properties>])</code> — use function to render DOM structure for given <custom-element></li><li><code>customElementWithDDE(<custom-element>)</code> — register <custom-element> to DDE library, see also `lifecycleToEvents`, can be also used as decorator</li><li><code>observedAttributes(<custom-element>)</code> — returns record of observed attributes (keys uses camelCase)</li><li><code>O.observedAttributes(<custom-element>)</code> — returns record of observed attributes (keys uses camelCase and values are observables)</li><li><code>lifecycleToEvents(<class-declaration>)</code> — convert lifecycle methods to events, can be also used as decorator</li></ul></div><div class="prevNext"><!--<dde:mark type="component" name="prevNext" host="parentElement" ssr/>--><a rel="prev" href="p05-scopes" title="Organizing UI into components"><!--<dde:mark type="component" name="pageLink" host="parentElement" ssr/>-->Scopes and components (previous)</a><!--<dde:mark type="component" name="pageLink" host="this" ssr/>--></div></main></body></html>
|
||||
|
@ -9,4 +9,4 @@ import { O } from "deka-dom-el/observables";
|
||||
O.observedAttributes;
|
||||
|
||||
// “internal” utils
|
||||
import { lifecycleToEvents } from "deka-dom-el";
|
||||
import { lifecyclesToEvents } from "deka-dom-el";
|
||||
|
@ -7,7 +7,7 @@ export function mnemonic(){
|
||||
el("code", "customElementRender(<custom-element>, <render-function>[, <properties>])"), " — use function to render DOM structure for given <custom-element>",
|
||||
),
|
||||
el("li").append(
|
||||
el("code", "customElementWithDDE(<custom-element>)"), " — register <custom-element> to DDE library, see also `lifecycleToEvents`, can be also used as decorator",
|
||||
el("code", "customElementWithDDE(<custom-element>)"), " — register <custom-element> to DDE library, see also `lifecyclesToEvents`, can be also used as decorator",
|
||||
),
|
||||
el("li").append(
|
||||
el("code", "observedAttributes(<custom-element>)"), " — returns record of observed attributes (keys uses camelCase)",
|
||||
@ -16,7 +16,7 @@ export function mnemonic(){
|
||||
el("code", "O.observedAttributes(<custom-element>)"), " — returns record of observed attributes (keys uses camelCase and values are observables)",
|
||||
),
|
||||
el("li").append(
|
||||
el("code", "lifecycleToEvents(<class-declaration>)"), " — convert lifecycle methods to events, can be also used as decorator",
|
||||
el("code", "lifecyclesToEvents(<class-declaration>)"), " — convert lifecycle methods to events, can be also used as decorator",
|
||||
)
|
||||
);
|
||||
}
|
||||
|
2
index.d.ts
vendored
2
index.d.ts
vendored
@ -180,7 +180,7 @@ export function customElementRender<
|
||||
props?: P | ((...args: any[])=> P)
|
||||
): EL
|
||||
export function customElementWithDDE<EL extends HTMLElement>(custom_element: EL): EL
|
||||
export function lifecycleToEvents<EL extends HTMLElement>(custom_element: EL): EL
|
||||
export function lifecyclesToEvents<EL extends HTMLElement>(custom_element: EL): EL
|
||||
export function observedAttributes(custom_element: HTMLElement): Record<string, string>
|
||||
|
||||
/* TypeScript MEH */
|
||||
|
@ -8,7 +8,7 @@ export function customElementRender(custom_element, target, render, props= obser
|
||||
});
|
||||
if(typeof props==="function") props= props.call(custom_element, custom_element);
|
||||
const is_lte= custom_element[keyLTE];
|
||||
if(!is_lte) lifecycleToEvents(custom_element);
|
||||
if(!is_lte) lifecyclesToEvents(custom_element);
|
||||
const out= render.call(custom_element, props);
|
||||
if(!is_lte) custom_element.dispatchEvent(new Event(evc));
|
||||
if(target.nodeType===11 && typeof target.mode==="string") // is ShadowRoot
|
||||
@ -16,7 +16,7 @@ export function customElementRender(custom_element, target, render, props= obser
|
||||
scope.pop();
|
||||
return target.append(out);
|
||||
}
|
||||
export function lifecycleToEvents(class_declaration){
|
||||
export function lifecyclesToEvents(class_declaration){
|
||||
wrapMethod(class_declaration.prototype, "connectedCallback", function(target, thisArg, detail){
|
||||
target.apply(thisArg, detail);
|
||||
thisArg.dispatchEvent(new Event(evc));
|
||||
@ -37,7 +37,7 @@ export function lifecycleToEvents(class_declaration){
|
||||
class_declaration.prototype[keyLTE]= true;
|
||||
return class_declaration;
|
||||
}
|
||||
export { lifecycleToEvents as customElementWithDDE };
|
||||
export { lifecyclesToEvents as customElementWithDDE };
|
||||
function wrapMethod(obj, method, apply){
|
||||
obj[method]= new Proxy(obj[method] || (()=> {}), { apply });
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ function setDeleteAttr(obj, prop, val){
|
||||
if(Reflect.get(obj, prop)==="undefined")
|
||||
return Reflect.set(obj, prop, "");
|
||||
}
|
||||
export const keyLTE= "__dde_lifecycleToEvents"; //boolean
|
||||
export const keyLTE= "__dde_lifecyclesToEvents"; //boolean
|
||||
export const evc= "dde:connected";
|
||||
export const evd= "dde:disconnected";
|
||||
export const eva= "dde:attributeChanged";
|
||||
|
Loading…
Reference in New Issue
Block a user