Skip to content

Commit e988ae5

Browse files
committed
textNode function
1 parent 6961355 commit e988ae5

File tree

5 files changed

+61
-12
lines changed

5 files changed

+61
-12
lines changed

package-lock.json

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
},
1212
"dependencies": {
1313
"@tauri-apps/api": "^1",
14+
"@types/node": "^20.14.11",
1415
"sass": "^1.77.8"
1516
},
1617
"devDependencies": {

src/Figa/Figa.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Router, { RouterOptions } from "./Router";
33
import FigaConfig from "./Interfaces/FigaConfig";
44
import { RoutesMap } from "./Types/RoutesMap";
55
import { Nullable } from "./Types/Nullable";
6+
import { HtmlTextNode, HtmlTextNodeProps } from "./Types/HtmlTextNode";
67

78
export const removeChildren = (
89
el: HTMLElement | FigaComponent | DocumentFragment
@@ -173,3 +174,20 @@ export const img = (src: string, alt?: string): HTMLImageElement => {
173174

174175
return img;
175176
};
177+
178+
export const textNode = <K extends HtmlTextNode>(
179+
type: K,
180+
props: HtmlTextNodeProps
181+
): HTMLElementTagNameMap[K] => {
182+
const element = create(type);
183+
184+
if (props.content) element.textContent = props.content;
185+
if (props.innerHtml) element.innerHTML = props.innerHtml;
186+
if (props.cssClasses) {
187+
if (typeof props.cssClasses === "string")
188+
element.classList.add(props.cssClasses);
189+
else props.cssClasses.forEach((css) => element.classList.add(css));
190+
}
191+
192+
return element;
193+
};

src/Figa/Types/HtmlTextNode.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
export type HtmlTextNode =
2+
| "h1"
3+
| "h2"
4+
| "h3"
5+
| "h4"
6+
| "h5"
7+
| "h6"
8+
| "p"
9+
| "code"
10+
| "span"
11+
| "b"
12+
| "i"
13+
| "blockquote";
14+
15+
export interface HtmlTextNodeProps {
16+
cssClasses?: string | string[];
17+
innerHtml?: string;
18+
content?: string;
19+
}

src/Screens/Home.ts

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { FigaComponentProps } from "../Figa/Interfaces/FigaComponentProps";
22
import { FigaUITemplate } from "../Figa/Components/FigaUITemplate";
3-
import { boxify, create, cssClass, img } from "../Figa/Figa";
43
import ReactiveButton from "../Components/ReactiveButton";
54
import FigaScreen from "../Figa/Components/FigaScreen";
6-
import ReenderStat from "../Components/RenderStat";
5+
import { boxify, img, textNode } from "../Figa/Figa";
6+
import RenderStat from "../Components/RenderStat";
77
import { Link } from "../Figa/Router";
88
import "./Home.scss";
99

@@ -15,23 +15,20 @@ export default class Home extends FigaScreen {
1515
protected template(): FigaUITemplate<FigaComponentProps> {
1616
const start = performance.now();
1717

18-
const i = img("assets/icons/figa-icon.png");
19-
20-
const p = create("p");
21-
22-
p.innerHTML = "Edit: <span>src/Screens/Home.ts</span> to modify the page!";
23-
cssClass(p, "figa-modify");
24-
2518
return {
2619
element: boxify(
2720
[
28-
i,
21+
img("assets/icons/figa-icon.png"),
2922
boxify(
3023
[new ReactiveButton(), new Link("About ✨", "/about")],
3124
"wrapper"
3225
),
33-
p,
34-
new ReenderStat(start),
26+
textNode("p", {
27+
innerHtml:
28+
"Edit: <span>src/Screens/Home.ts</span> to modify the page!",
29+
cssClasses: "figa-modify",
30+
}),
31+
new RenderStat(start),
3532
],
3633
"figa-content"
3734
),

0 commit comments

Comments
 (0)