domelemjs 1.2.3 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-hu.md +284 -0
- package/README.md +286 -182
- package/dist/index.browser.js +2 -0
- package/dist/index.browser.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +168 -0
- package/dist/index.d.ts +168 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -0
- package/package.json +63 -52
- package/dist/DOMElem.html +0 -142
- package/dist/createDOMElem.html +0 -95
package/README-hu.md
ADDED
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
# DOMelemJS
|
|
2
|
+
|
|
3
|
+
Könnyű, függőségmentes TypeScript könyvtár HTML elemek dinamikus létrehozásához JavaScript-ből.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/domelemjs)
|
|
6
|
+
[](https://github.com/exphoenee/DOMelemJS/blob/main/LICENSE)
|
|
7
|
+
|
|
8
|
+
## Telepítés
|
|
9
|
+
|
|
10
|
+
### npm
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install domelemjs
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### CDN (unpkg)
|
|
17
|
+
|
|
18
|
+
Build eszközök nélkül — közvetlenül az HTML-be ágyazható:
|
|
19
|
+
|
|
20
|
+
```html
|
|
21
|
+
<script src="https://unpkg.com/domelemjs/dist/index.browser.js"></script>
|
|
22
|
+
<script>
|
|
23
|
+
const { createDOMElem, DOMElem } = DOMElemJS;
|
|
24
|
+
|
|
25
|
+
const app = createDOMElem({
|
|
26
|
+
tag: "div",
|
|
27
|
+
attrs: { id: "app" },
|
|
28
|
+
text: "Helló CDN-ről!",
|
|
29
|
+
});
|
|
30
|
+
</script>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Adott verzió megadása:
|
|
34
|
+
|
|
35
|
+
```html
|
|
36
|
+
<script src="https://unpkg.com/domelemjs@2.0.0/dist/index.browser.js"></script>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Gyors Kezdés
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
import { createDOMElem } from "domelemjs";
|
|
43
|
+
|
|
44
|
+
const app = createDOMElem({
|
|
45
|
+
tag: "div",
|
|
46
|
+
attrs: { id: "app" },
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## API
|
|
51
|
+
|
|
52
|
+
### `createDOMElem(options)`
|
|
53
|
+
|
|
54
|
+
A fő függvény. Létrehoz egy DOM elemet és visszaadja az `HTMLElement`-et.
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
const el = createDOMElem({
|
|
58
|
+
tag: "h1",
|
|
59
|
+
text: "Helló Világ",
|
|
60
|
+
attrs: { class: "title" },
|
|
61
|
+
style: { color: "blue" },
|
|
62
|
+
parent: "#app",
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### `new DOMElem(options)`
|
|
67
|
+
|
|
68
|
+
Osztályalapú burkoló. A létrehozott elem a `.elem` tulajdonságon érhető el.
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
import { DOMElem } from "domelemjs";
|
|
72
|
+
|
|
73
|
+
const div = new DOMElem({
|
|
74
|
+
tag: "div",
|
|
75
|
+
text: "Helló",
|
|
76
|
+
attrs: { class: "container" },
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
document.body.appendChild(div.elem);
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Opciók
|
|
83
|
+
|
|
84
|
+
| Opció | Típus | Leírás |
|
|
85
|
+
|---|---|---|
|
|
86
|
+
| `tag` | `string` | **Kötelező.** HTML tag neve (pl. `"div"`, `"span"`, `"input"`). |
|
|
87
|
+
| `text` | `string` | Egyszerű szöveges tartalom (`textContent`). |
|
|
88
|
+
| `content` | `string` | Nyers HTML tartalom (`innerHTML`). |
|
|
89
|
+
| `attrs` | `object \| object[]` | Beállítandó HTML attribútumok. Támogatja a `class`, `id`, `data-*`, `checked` stb. |
|
|
90
|
+
| `style` | `string \| object \| array` | Inline CSS stílusok (lásd [Stílusok](#stílusok)). |
|
|
91
|
+
| `children` | `array` | Gyerekelemek — options objektumok vagy `HTMLElement`-ek. |
|
|
92
|
+
| `parent` | `HTMLElement \| string` | Szülő elem, amibe beillesztjük. Elfogad elemet vagy CSS szelektort (`"#app"`, `".container"`, `"app"`). Alapértelmezés: `document.body`. |
|
|
93
|
+
| `handleEvent` | `object \| object[]` | Eseménykezelők (lásd [Események](#események)). |
|
|
94
|
+
| `append` | `boolean` | Hozzá kell-e fűzni a szülőhöz. Alapértelmezés: `true`. |
|
|
95
|
+
| `stripDiacritics` | `boolean` | El kell-e távolítani a diakritikus jeleket a `class` és `id` attribútumokból. Alapértelmezés: `true`. Állítsd `false`-ra a Unicode karakterek megőrzéséhez. |
|
|
96
|
+
|
|
97
|
+
## Stílusok
|
|
98
|
+
|
|
99
|
+
A stílusok több formátumban megadhatók:
|
|
100
|
+
|
|
101
|
+
```ts
|
|
102
|
+
// CSS string
|
|
103
|
+
createDOMElem({
|
|
104
|
+
tag: "div",
|
|
105
|
+
style: "color: red; background-color: blue",
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// Objektum
|
|
109
|
+
createDOMElem({
|
|
110
|
+
tag: "div",
|
|
111
|
+
style: { color: "red", backgroundColor: "blue" },
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// Tömb (vegyes)
|
|
115
|
+
createDOMElem({
|
|
116
|
+
tag: "div",
|
|
117
|
+
style: ["color: red", { backgroundColor: "blue" }],
|
|
118
|
+
});
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Események
|
|
122
|
+
|
|
123
|
+
Eseménykezelők csatolása a `handleEvent` segítségével:
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
createDOMElem({
|
|
127
|
+
tag: "button",
|
|
128
|
+
text: "Kattints rám",
|
|
129
|
+
handleEvent: {
|
|
130
|
+
event: "click",
|
|
131
|
+
cb: (e) => console.log("kattintás!"),
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Több esemény tömbben átadva:
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
createDOMElem({
|
|
140
|
+
tag: "input",
|
|
141
|
+
handleEvent: [
|
|
142
|
+
{ event: "focus", cb: () => console.log("fókusz") },
|
|
143
|
+
{ event: "blur", cb: () => console.log("elvesztett fókusz") },
|
|
144
|
+
],
|
|
145
|
+
});
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Attribútumok
|
|
149
|
+
|
|
150
|
+
Az attribútumok lehetnek egyetlen objektumok vagy tömbök:
|
|
151
|
+
|
|
152
|
+
```ts
|
|
153
|
+
createDOMElem({
|
|
154
|
+
tag: "input",
|
|
155
|
+
attrs: [
|
|
156
|
+
{ id: "myInput", type: "text" },
|
|
157
|
+
{ class: "form-control" },
|
|
158
|
+
],
|
|
159
|
+
});
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Speciális attribútum kezelés:
|
|
163
|
+
- **`checked`** — beállítja a checked tulajdonságot inputokon
|
|
164
|
+
- **`dataset`** — egyesíti a `data-*` attribútumokat (pl. `{ dataset: { id: "foo" } }` → `data-id="foo"`)
|
|
165
|
+
- **`class` / `id`** — a diakritikus jelek alapértelmezésben automatikusan eltávolításra kerülnek. Állítsd `stripDiacritics: false`-ra a megőrzésükhöz.
|
|
166
|
+
|
|
167
|
+
> **Megjegyzés:** Ha mind a `text`, mind a `content` meg van adva, a `text` élvez előnyt és figyelmeztetés naplózódik.
|
|
168
|
+
|
|
169
|
+
## Eseménykezelők Kezelése
|
|
170
|
+
|
|
171
|
+
A `DOMElem` osztály nyomon követi az eseménykezelőket és támogatja az eltávolításukat:
|
|
172
|
+
|
|
173
|
+
```ts
|
|
174
|
+
import { DOMElem } from "domelemjs";
|
|
175
|
+
|
|
176
|
+
const btn = new DOMElem({
|
|
177
|
+
tag: "button",
|
|
178
|
+
text: "Kattints rám",
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
const handler = () => console.log("kattintás!");
|
|
182
|
+
btn.addEventListener("click", handler);
|
|
183
|
+
btn.removeEventListener("click", handler);
|
|
184
|
+
|
|
185
|
+
// Összes nyomon követett kezelő eltávolítása egyszerre
|
|
186
|
+
btn.removeAllListeners();
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## HTML Tag-ek
|
|
190
|
+
|
|
191
|
+
A DOMelemJS exportálja az érvényes HTML tag nevek listáját:
|
|
192
|
+
|
|
193
|
+
```ts
|
|
194
|
+
import { HTML_TAGS } from "domelemjs";
|
|
195
|
+
|
|
196
|
+
if (HTML_TAGS.includes(tag)) {
|
|
197
|
+
// érvényes HTML tag
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Gyerekelemek
|
|
202
|
+
|
|
203
|
+
A gyerekek lehetnek beágyazott options objektumok vagy meglévő `HTMLElement`-ek:
|
|
204
|
+
|
|
205
|
+
```ts
|
|
206
|
+
createDOMElem({
|
|
207
|
+
tag: "select",
|
|
208
|
+
attrs: { id: "selector" },
|
|
209
|
+
children: [
|
|
210
|
+
{ tag: "option", text: "Foo", attrs: { value: "foo" } },
|
|
211
|
+
{ tag: "option", text: "Bar", attrs: { value: "bar" } },
|
|
212
|
+
],
|
|
213
|
+
});
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Összetett Példa
|
|
217
|
+
|
|
218
|
+
```ts
|
|
219
|
+
import { createDOMElem } from "domelemjs";
|
|
220
|
+
|
|
221
|
+
const container = createDOMElem({
|
|
222
|
+
tag: "div",
|
|
223
|
+
attrs: { class: "date-filter" },
|
|
224
|
+
children: [
|
|
225
|
+
{
|
|
226
|
+
tag: "div",
|
|
227
|
+
attrs: { class: "date-group" },
|
|
228
|
+
children: [
|
|
229
|
+
{
|
|
230
|
+
tag: "label",
|
|
231
|
+
text: "Kezdő dátum:",
|
|
232
|
+
attrs: { for: "startDate" },
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
tag: "input",
|
|
236
|
+
attrs: { type: "date", id: "startDate" },
|
|
237
|
+
handleEvent: {
|
|
238
|
+
event: "change",
|
|
239
|
+
cb: (e) => console.log("Kezdet:", (e.target as HTMLInputElement).value),
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
],
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
tag: "div",
|
|
246
|
+
attrs: { class: "date-group" },
|
|
247
|
+
children: [
|
|
248
|
+
{
|
|
249
|
+
tag: "label",
|
|
250
|
+
text: "Befejező dátum:",
|
|
251
|
+
attrs: { for: "endDate" },
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
tag: "input",
|
|
255
|
+
attrs: { type: "date", id: "endDate" },
|
|
256
|
+
handleEvent: {
|
|
257
|
+
event: "change",
|
|
258
|
+
cb: (e) => console.log("Vég:", (e.target as HTMLInputElement).value),
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
],
|
|
262
|
+
},
|
|
263
|
+
],
|
|
264
|
+
});
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## TypeScript
|
|
268
|
+
|
|
269
|
+
A DOMelemJS TypeScript-ben íródott és teljes típusdefíciókkal szállítódik.
|
|
270
|
+
|
|
271
|
+
```ts
|
|
272
|
+
import { createDOMElem, type CreateDOMElemOptions } from "domelemjs";
|
|
273
|
+
|
|
274
|
+
const options: CreateDOMElemOptions = {
|
|
275
|
+
tag: "div",
|
|
276
|
+
text: "Tipizált!",
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
const el = createDOMElem(options);
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
## Licenc
|
|
283
|
+
|
|
284
|
+
MIT
|