mirror of
https://github.com/jaandrle/deka-dom-el
synced 2025-04-02 20:15:53 +02:00
* ⚡ 🎉 * ⚡ wip * 🔤 * ⚡ wip * ⚡ wip * ⚡ Refatc signals to .get/.set syntax #26 * 🐛 Better types for on* * 🔤 * 🔤 * 🐛 coumputed signal * 🔤 ⚡ Docs UI/UX * ⚡ 🔤 UI enhancements * ⚡ (bs) (un)min * 🔤 adds debugging * 🔤 ssr * 🔤 * ⚡ bs/lint * 🔤 * 🔤 UI * 🔤 updates texts * 🔤UI * ⚡ dispatch * 🔤 events * 🔤 elements * 🔤 intro * 🐛 fixes completitions for el with components * 🐛 wrong file(s) in git * 🔤 logo * 🐛 🔤 types 3ps * 🔤 ui/ux * 🔤 * 🔤 * 🔤 scopes * 🔤 * 🔤 ui/ux * 🔤 * ⚡ issignal * 🔤 improvemens * ⚡ irelands * 🔤 UI/UX/wording * 🐛 npx-hint [Scrollable region must have keyboard access | Axe Rules | Deque University | Deque Systems](https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI) * 🔤 logos * ⚡ better? dts builds * Update README.md
43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
import { style, el, elNS, on, S, scope } from '../exports.js';
|
|
const className= style.host(fullNameComponent).css`
|
|
:host form{
|
|
display: flex;
|
|
flex-flow: column nowrap;
|
|
}
|
|
`;
|
|
export function fullNameComponent(){
|
|
const labels= [ "Name", "Surname" ];
|
|
const name= labels.map(_=> S(""));
|
|
const full_name= S(()=>
|
|
name.map(l=> l.get()).filter(Boolean).join(" ") || "-");
|
|
scope.host(
|
|
on.connected(()=> console.log(fullNameComponent)),
|
|
on.disconnected(()=> console.log(fullNameComponent))
|
|
);
|
|
|
|
const count= S(0);
|
|
setInterval(()=> count.set(count.get()+1), 5000);
|
|
const style= { height: "80px", display: "block", fill: "currentColor" };
|
|
const elSVG= elNS("http://www.w3.org/2000/svg");
|
|
return el("div", { className }).append(
|
|
el("h2", "Simple form:"),
|
|
el("p", { textContent: S(()=> "Count: "+count.get()),
|
|
dataset: { count }, classList: { count: S(() => count.get()%2 === 0) } }),
|
|
el("form", { onsubmit: ev=> ev.preventDefault() }).append(
|
|
...name.map((v, i)=>
|
|
el("label", labels[i]).append(
|
|
el("input", { type: "text", name: labels[i], value: v.get() }, on("change", ev=> v.set(ev.target.value)))
|
|
))
|
|
),
|
|
el("p").append(
|
|
el("strong", "Full name"),
|
|
": ",
|
|
el("#text", full_name)
|
|
),
|
|
elSVG("svg", { viewBox: "0 0 240 80", style }).append(
|
|
//elSVG("style", { })
|
|
elSVG("text", { x: 20, y: 35, textContent: "Text" }),
|
|
)
|
|
);
|
|
}
|