Template rendszer
A template(ctx) akkor kell, ha a default HTML nem elég.
Mikor érdemes template-et használni?
- Egyedi layout (pl. inline progress, több sor, badge-ek)
- Egyedi interakció (extra gombok, saját markup)
- Más ikonrendszer (nem FontAwesome)
ctx tartalma
ctx.title,ctx.message,ctx.typectx.typeCfg: ikon/ring/progress stb.ctx.classes: Tailwind classok gyűjteményectx.t(key): i18n helperctx.close(): bezárás
Példa template
js
FToast.setTemplate((ctx) => `
<div class="p-3">
<div class="flex items-center gap-3">
<div class="${ctx.classes.iconBoxBase} ${ctx.typeCfg.iconBox}">
<i class="${ctx.typeCfg.icon}"></i>
</div>
<div class="min-w-0 flex-1">
<div class="text-sm font-black text-gray-900 dark:text-white truncate">${ctx.title}</div>
<div class="text-xs text-gray-600 dark:text-gray-300 break-words">${ctx.message}</div>
</div>
<button data-ftclose class="${ctx.classes.closeBtn}">
<i class="fa-solid fa-xmark"></i>
</button>
</div>
</div>
`);Progress bar template-ben
Ha használni akarod a beépített progress animációt, tedd bele a data-ftbar elemet:
html
<div class="h-1 bg-gray-200 dark:bg-dark-700">
<div data-ftbar class="h-full w-full origin-left bg-indigo-500"></div>
</div>A rendszer ezt skálázza scaleX-el.
Actions template-ben
Az action gombokhoz data-ftaction="0" stb kell. A logikát a rendszer köti:
js
FToast.info("...", {
duration: 0,
actions: [{ text: "OK" }, { text: "Mégse" }],
template: (ctx) => `
<div class="p-4">
<div class="font-black">${ctx.title}</div>
<div class="text-sm">${ctx.message}</div>
<div class="mt-3 flex gap-2">
<button data-ftaction="0" class="${ctx.classes.btnBase} ${ctx.classes.btn.info}">OK</button>
<button data-ftaction="1" class="${ctx.classes.btnBase} ${ctx.classes.btn.outline}">Mégse</button>
</div>
</div>
`
});