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 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
+ [![npm version](https://img.shields.io/npm/v/domelemjs)](https://www.npmjs.com/package/domelemjs)
6
+ [![license](https://img.shields.io/npm/l/domelemjs)](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