Accordion
Accordion alkalmazása
x-pds.accordion
titleopendisabled
Ha több accordiont szeretnél használni, egyszerűen egymás után rakd őket.
title - Az accordion fejléce (string, kötelező). A header automatikusan ds-heading-3 tipográfiát kap.open - Boolean, kezdeti állapot (default: false, csukva).disabled - Boolean, letiltja az elemet (default: false). Disabled elem nem nyitható meg, opacity: 0.5.
Slot:
A
$slot tartalmazza a fő tartalmat (accordion body), amely automatikusan ds-body-2 tipográfiát és tertiary színt kap.
Funkciók:
- Független accordion elemek (több elem is nyitva lehet egyszerre)
- Smooth CSS Grid animáció height változáshoz (nincs szükség max-height beállításra)
- Billentyűzet támogatás (Tab navigáció + Space/Enter váltás)
- Ikon váltás (plus ↔ minus) az állapot szerint
- Automatikus spacing egymást követő accordionok között
- Automatikus cleanup DOM elemek eltávolításakor
<x-pds.accordion title="Első elem">
Tartalom itt...
</x-pds.accordion>
<x-pds.accordion title="Második elem" :open="true">
Ez nyitva van alapból.
</x-pds.accordion>
<x-pds.accordion title="Letiltott elem" :disabled="true">
Ez nem nyitható meg.
</x-pds.accordion>
Accordion példák
Speciális esetek
:open="true" prop miatt.
Modalban (mobil tesztelhetőség miatt)
Avatar
Avatar alkalmazása
ds-avatar class
ds-avatar-premiumds-avatar-shadowds-avatar-borderds-avatar-[size]
ds-avatar class definiálja az alapvető stílust, emellé megadható:
ds-avatar-premium- prémium gradient borderds-avatar-shadow- árnyék hatásds-avatar-border- szimpla border (nem prémium esetén)ds-avatar-[size]- méret (xs, sm, md, lg, xl)
x-pds.avatar komponens
sizeimgpremiumshadowborderbadge
Paraméterek:
size- méret:xs,sm,md,lg,xlimg- egyedi kép URL (opcionális)premium- prémium gradient border (boolean)shadow- árnyék hatás (boolean)border- szimpla border (boolean)badge- státusz badge megjelenítése (boolean)
Ha nincs
img megadva, automatikusan betölti az alapértelmezett avatar képet (prémium vagy normál verzió).
Avatar típusok
Badgek
Badgek alkalmazása
x-pds.badge
Beállítási lehetőségek:
colorBadge Basic: 'neutral', 'purple', 'turquoise', 'blue', 'salmon', 'yellow', 'neutral-outlined', 'purple-outlined', 'turquoise-outlined', 'blue-outlined', 'salmon-outlined', 'yellow-outlined',
Badge Highlighted: 'neutral-highlighted', 'purple-highlighted', 'turquoise-highlighted', 'blue-highlighted', 'salmon-highlighted', 'yellow-highlighted',
Badge Semantic: 'neutral-semantic', 'info-semantic', 'warning-semantic', 'alert-semantic', 'success-semantic', 'neutral-semantic-outlined', 'info-semantic-outlined', 'warning-semantic-outlined', 'alert-semantic-outlined', 'success-semantic-outlined',
Badge Advanced: 'blue-weak', 'blue-subtle', 'blue-strong', 'purple-weak', 'purple-subtle', 'purple-strong', 'purple-premium-weak', 'purple-premium-subtle', 'purple-premium-strong',
size xs/sm/md, default: 'md'id string, default: generált. Minden Badge-nek kell hogy legyenfocusable boolean, default: false. Tooltipet kaphat, olyankor érdemes true-ra rakni, ez jelenleg manuálisan oldható meg
id-jawrapper_id string, default: generált. Badge ide fog bekerülni, ha
js-el hívjuk akkor kötelező megadni. Ezzel tudjuk szabályozni hogy a dom mely részébe kerüljön be a badge, így tudjuk akár csoportosítani a badgeket.content stringcustom_class stringBadge Semantic (focusable:true-val)
Badge Basic
Badge highlighted
Badge Advanced
Badge Dot
Badge Dot class strukturúrája
ds-badge-dotds-badge-dot-[size]
ds-badge-dot-size-xs, ds-badge-dot-size-sm, ds-badge-dot-size-md, ds-badge-dot-size-lg, ds-badge-dot-size-xl méretek,
azonban az alapértelmezett méret a ds-badge-dot-size-12, azt nem kell definiálni.
ds-badge-dot-[color]
Badge dot
Borders
Border - color
Border - size
Megadható bármilyen oldalon egyedileg is.
Border - Radius
radius-top-lg radius-left-lg radius-bottom-lg radius-right-lg
radius-top-left-md radius-bottom-left-md radius-bottom-right-md radius-top-right-md
Vagy lehet variálni is, ...de ilyenkor már jobb egy custom class.
Premium borders
Border - color
Border - size
Megadható bármilyen oldalon egyedileg is.
Border - Radius
radius-top-lg radius-left-lg radius-bottom-lg radius-right-lg
radius-top-left-md radius-bottom-left-md radius-bottom-right-md radius-top-right-md
Vagy lehet variálni is, ...de ilyenkor már jobb egy custom class.
Button (figma)
Gombok class strukturúrája
ds-btnds-btn-[type]
ds-btn-textds-btn-icon- (
ds-btn-only-icon)
ds-btn-text, valamint a ds-btn-icon. Van még egy alverzió, a
ds-btn-only-icon, ami csak ikont tartalmaz, de ez egy egyedi verziója a ds-btn-nak, design-ban néhány helyen ezt alkalmazzák.
ds-btn-[sizing]
ds-btn-smds-btn-mdds-btn-lg+1: ds-btn-h100+1: ds-btn-h-unset+1: ds-btn-h-initial
ds-btn-sm, (ds-btn-md) és ds-btn-lg méretek,
azonban az alapértelmezett méret a md, azt nem kell definiálni (nem is lehet, nincs is külön ilyen osztály definiálva).
Ha szeretnénk, hogy egy gombunk 100%-os magasságú legyen, akkor a
ds-btn-h100, ds-btn-h-unset, ds-btn-h-initial class valamelyikét kell használnunk.
ds-btn-[hierarchy]
ds-btn-primaryds-btn-secondaryds-btn-tertiaryds-btn-accentds-btn-ghostds-btn-inverseds-btn-destructive
ds-btn-primary,
ds-btn-secondary,
ds-btn-tertiary,
ds-btn-accent,
ds-btn-ghost,
ds-btn-inverse és
ds-btn-destructive gombokat. A desctuctive stílusok speciálisak, ugyanis a klasszikus gomboknál eltérő fő hierarchia szerint, ezért azt is definiálni kell, hogy melyik fő hierarchiához tartozik (primary, secondary, tertiary, accent, ghost).
ds-btn-[addon]
ds-btn-addon-
ds-btn-leading-iconds-btn-trailing-icon
ds-btn-addon classt használjuk a gombon,
az ikonra pedig pozíciótól függően ds-btn-leading-icon vagy ds-btn-trailing-icon classal hivatkozunk.
ds-btn [data-progress]data-progress attribútumot.
A
data-progress="false" esetén nem fog töltődni, így akár beállíthatunk egy változót is az értékének.
Kódrészlet
<button class="ds-btn ds-btn-primary">
Primary button
</button>
Implementáció
ds-btn
ds-btn-text & ds-btn-icon
sm
primary text button
sm-primary: anchor tagsecondary text button
sm-secondary: anchor taginverse text button
sm-inverse: anchor tagdestructive text button
sm-destructive: anchor tagmd
primary text button
md-primary: anchor tagsecondary text button
md-secondary: anchor taginverse text button
md-inverse: anchor tagdestructive text button
md-destructive: anchor taglg
primary text button
lg-primary: anchor tagsecondary text button
lg-secondary: anchor taginverse text button
lg-inverse: anchor tagdestructive text button
lg-destructive: anchor tagsm
md
Button: Progress status
Button Progress Utility
window.pds.initProgressButton - definiálja egy gombhoz az utility-t.
Input paraméterek:
btn- a kiválasztott gomb HTMLElement-je(disableInProgress=true)- a folyamat alatt le legyen-e tiltva.
Visszatérési érték:
status- A progress állapotát adja vissza + watch funkció: ezzel követni lehet a progress aktuális állapotát.fetchWithProgress- Egy olyan fetch, ami automatikusan módosíthja a hozzákapcsolt gomb progress státuszát.
Progress Button with automatic status management
Button: Social
ds-btn-social-[type]
ds-btn-social-appleds-btn-social-googleds-btn-social-facebook
ds-btn-social-facebook,
ds-btn-social-apple,
ds-btn-social-google.
Az ikonokat nem kell hozzáadni, uganis azt tartalmazza a
before pseudo element.
További funkciók
ds-btn-only-iconds-btn-lg
ds-btn-only-icon classt is.
Ha nagyobb méretű gombot szeretnénk, akkor a
ds-btn-lg classt alkalmazzuk, akár a csak-ikonos verzióban is.
ds-btn-toggle
Button Toggle Utility
data-ds-toggledata-ds-toggle attribútummal, automatikusan hozzárendelődik a toggle funkcionalitás.
A gomb kattintáskor váltogatja az aria-pressed attribútum értékét "true" és "false" között.
data-ds-toggle="initialized"
aria-pressed érték megadva, automatikusan "false"-ra állítódik.
A rendszer automatikusan kezeli a memóriát MutationObserver segítségével.
window.pds.initToggleButtons()
initToggleButtons()initToggleButtons(container)
Megjegyzés: Alapértelmezetten nem kell meghívni, mert automatikusan működik.
window.pds.cleanupToggleButtons()
- Automatikus cleanup
- Manuális cleanup
element.remove(), container.innerHTML = '', jQuery $('#element').remove()
Manuális cleanup szükséges: SPA route váltás, modal bezárás, alkalmazás leállítás, régi böngészők esetén.
A legtöbb esetben nem kell foglalkozni vele, mert automatikusan működik.
Kódrészlet
<button class="ds-btn ds-btn-toggle" data-ds-toggle>
Toggle button
</button>
Implementáció
ds-btn-h* - ds-flex-row esetén
Colors
Text colors
Default colors
Gradients
Default colors
Backgrounds
Default colors
Color mix
Van olyan eset, amikor egy adott színnek egy árnyalatát szeretnék alkalmazni. Ennek a megvalósítását nem simán opacity-vel valósítják meg, és nem is simán before/after pseudo beállításával, hanem color-mix függvénnyel.
Emiatt viszont nem lehet előre classokat definiálni, hanem a css-ben kell beállítani hozzá a color-mix css funkcióval a pds által definiált változók alapján.
Ha az alapvető háttér színt szeretnék ezzel keverni, azaz az aktuális elemünk átlátszó, akkor az "alapszínt" átlátszóvá kell tenni.
Ezekre azért nincs egyedi class, mert nincsenek előre definiált színek, amikre állandóan ráteszik, ez változhat a komponens színeitől függően.
Premium colors
Text colors
Default colors
Gradients
Default colors
Backgrounds
Default colors
Color mix
Van olyan eset, amikor egy adott színnek egy árnyalatát szeretnék alkalmazni. Ennek a megvalósítását nem simán opacity-vel valósítják meg, és nem is simán before/after pseudo beállításával, hanem color-mix függvénnyel.
Emiatt viszont nem lehet előre classokat definiálni, hanem a css-ben kell beállítani hozzá a color-mix css funkcióval a pds által definiált változók alapján.
Ha az alapvető háttér színt szeretnék ezzel keverni, azaz az aktuális elemünk átlátszó, akkor az "alapszínt" átlátszóvá kell tenni.
Ezekre azért nincs egyedi class, mert nincsenek előre definiált színek, amikre állandóan ráteszik, ez változhat a komponens színeitől függően.
Select Input
Select Input alkalmazása
<x-pds.form-control.select-input> Komponens
name(string) - kötelezőid(string)label(string)placeholder(string)options(array) - kötelezőselected(string|array)multiple(bool, false)multipleType('list'|'tag')multipleWrap(bool, false)mobileNative(bool, true)cleanupTemplate(bool, true)clearable(bool, false)disabled(bool, false)required(bool, false)leadingIcon(string)dropdownWidth('auto')dropdownPosition('top')dropdownAlign('right' | 'left')optionSize(string)form(string)
A komponens a natív HTML select elem körül épül fel, ezért minden natív select tulajdonság támogatott.
Alap props:
name - A form mező neve (kötelező)id - Egyedi azonosító (ha nincs megadva, automatikusan generálódik)label - Címke szöveg a select fölöttplaceholder - Helyettesítő szöveg, amikor nincs kiválasztva semmioptions - Opciók tömbje (lásd lejjebb)selected - Előre kiválasztott érték(ek)Többszörös kiválasztás:
multiple - Többszörös kiválasztás engedélyezésemultipleType - Megjelenítés típusa: 'list' (felsorolás) vagy 'tag' (címkék)multipleWrap - Tördelés engedélyezése (alapból: false, vízszintes scrollozás)UI opciók:
mobileNative - Mobil eszközökön natív select használata (alapból: true)clearable - X gomb megjelenítése a kiválasztás törléséhezleadingIcon - Ikon megjelenítése a trigger elejéndropdownWidth - 'auto' esetén a dropdown szélessége alkalmazkodik a tartalomhozdropdownPosition - 'top' esetén a dropdown felfelé nyílikdropdownAlign - 'right' esetén a dropdown jobbra igazodik (ilyenkor a szélesség a tartalom alapján jelenik meg, különben nem volna jelentőssége). (Van 'left' is, de ekvivalens az 'auto-width'-el)optionSize - Opció mérete (sm/md/lg)Teljesítmény és optimalizáció:
cleanupTemplate - Template-ek memóriában tárolása és DOM-ból való eltávolítása (alapból: true)- Instance-level cache használata memória szivárgás megelőzésére
- Automatikus cleanup a komponens megszűnésekor
- Tisztább DOM, gyorsabb template klónozás
Form opciók:
disabled, required, form - Natív HTML attribútumok
További konfigurálási beállítások
data-* Attribútumok
Select elemen:
data-placeholderdata-multiple-typedata-dropdown-widthdata-dropdown-position
data-icondata-trailing-icondata-subtitledata-linkdata-[tetszőleges-role]
data-remove-[role-név]
A <select> elemen:
Ezek az attribútumok a teljes komponens viselkedését szabályozzák.
data-placeholder - Placeholder szövegdata-multiple-type - Többszörös kiválasztás típusa ('list' vagy 'tag')data-dropdown-width - 'auto' esetén tartalomhoz igazodó szélességdata-dropdown-position - Dropdown pozíciója ('top' = felfelé nyílik)A wrapper elemen:
data-cleanup-template - Template cache és DOM cleanup (alapból: true)Ha "false" értékű, a template-ek a DOM-ban maradnak
Az <option> elemen - Alapértelmezett role-ok:
data-icon - Vezető ikon neve (pl. 'check-circle')data-trailing-icon - Záró ikon nevedata-subtitle - Alcím szöveg az opció alattdata-role Rendszer
A három elem kapcsolata:
data-role="[role-név]"data-placeholder-role-[role-név]="[__MASK__]"- Template-ben:
"[__MASK__]"
Elérhető role-ok:
trigger-texticontrailing-icontextsubtitletaglink- + tetszőleges egyéni role
A data-role rendszer három elem szoros együttműködésén alapul, amely lehetővé teszi a dinamikus placeholder csere mechanizmust.
1. data-role="[role-név]" - Azonosítás
A template-ben lévő elemeket azonosítja, amelyeket fel kell tölteni az option adataival.
Például:
<span data-role="text"></span>
2. data-placeholder-role-[role-név]="[__MASK__]" - Placeholder definíció
Definiálja azt a placeholder string-et, amelyet le kell cserélni az option
data-[role-név] értékére.Például:
<div data-role="icon" data-placeholder-role-icon="__LEADING_ICON__">
3. Placeholder string ("[__MASK__]") előfordulásai - Csere
A placeholder string bárhol előfordulhat a template-ben, és minden előfordulás lecserélődik az option adatával.
Egyéni role-ok - Rugalmas bővíthetőség:
A rendszer tetszőleges
data-[role-név] attribútumot támogat!Példák:
data-link, data-badge, data-color, data-tooltipFontos: A data attribútum neve mindig megegyezik a template-ben használt
data-role értékkel.Hogyan jelenik meg a role értéke?
A
data-role="[role-név]" elem az option data-[role-név] attribútumának értékét jeleníti meg:1. Ha NINCS placeholder definiálva a <select> elemen:
Az érték az elem
innerText-jébe kerül.Példa:
<span data-role="subtitle"></span> → <span>Magyar</span>
2. Ha VAN
data-placeholder-role-[role-név] definiálva a <select> elemen:A
<select data-placeholder-role-link="__LINK__"> attribútumban megadott placeholder string minden előfordulása lecserélődik az option értékére:• A data-role elem attribútumaiban (href, class, style, stb.)
• A data-role elem szöveges tartalmában (innerText/textContent)
• A data-role elem gyermekeiben (az alatta lévő DOM fában)
Példa:
Select:
<select data-placeholder-role-link="__LINK__">Template:
<a data-role="link" href="__LINK__">Tovább: __LINK__</a>Option:
<option data-link="example.com">Eredmény:
<a href="example.com">Tovább: example.com</a>
Eltávolító attribútumok - DOM tisztítás:
data-remove-[role-név] - Ha egy option-ön szerepel, az adott role-ú elem teljesen eltávolításra kerül a DOM-ból.Cél: Megakadályozza, hogy felesleges/hibás DOM elemek maradjanak a renderelt opcióban.
Példa: Ha egy opció-nak nincs ikonja, a
data-remove-icon használatával az ikon konténer elem teljesen eltűnik a DOM-ból, nem csak elrejtésre kerül.
Child element-ekben (rekurzívan):
Példa:
<div data-role="icon" data-placeholder-role-icon="__ICON__">
<svg class="icon-__ICON__">
<use href="#__ICON__"></use>
</svg>
</div>
Option: <option data-icon="check-circle">Eredmény: MINDEN "__ICON__" → "check-circle" (class-ban ÉS href-ben is!)
Teljes példa link role-lal:
<a href="__LINK__"
target="_blank"
data-role="link"
data-placeholder-role-link="__LINK__">
Megnyitás: __LINK__
</a>
Option: <option data-link="https://example.com">Eredmény:
<a href="https://example.com"
target="_blank">
Megnyitás: https://example.com
</a>
Fontos megjegyzések:
- A placeholder csere rekurzív - minden gyermek elemben és azok attribútumaiban is végbemegy
- A
data-placeholder-role-*attribútumok a csere után automatikusan törlődnek - Ha nincs
data-placeholder-role-*attribútum, csak a textContent-et tölti ki - A
data-remove-*használatával a teljes role-ú elem eltávolítható
DsSelectInput JS inicializálás
Konstruktor:
selectElement- kötelezőoptions- opcionális
Options objektum:
triggerTemplateIddropdownTemplateIdoptionTemplateIdtagTemplateIdtagsContainerTemplateIdmobileNativemultipleTypecleanupTemplate
Ha Blade komponens helyett tisztán JavaScript-tel szeretnél létrehozni egy select input-ot, a következőkre kell figyelni:
1. HTML struktúra létrehozása:
<div data-ds-select-wrapper class="ds-select-input-wrapper">
<select name="my-select" id="my-select">
<option value="1" data-icon="check">Option 1</option>
<option value="2" data-icon="x">Option 2</option>
</select>
</div>
2. Template-ek definiálása:
Létre kell hozni az alábbi
<template> elemeket:• Trigger template - a kattintható select mező
• Dropdown template - a legördülő lista konténer
• Option template - egy opció megjelenítése a dropdown-ban
• Tag template (opcionális) - multiple + tag mód esetén
• Tags container template (opcionális) - tag-ek konténere
3. Placeholder szintaxis a template-ben:
Használj értelmes, egyedi placeholder string-eket (pl.
__LEADING_ICON__, __LINK__).A placeholder bármilyen formátumú lehet, javasolt konvenció az áttekinthetőség érdekében:
__UPPERCASE_WITH_UNDERSCORES__
4. DsSelectInput példányosítás:
const selectEl = document.querySelector('#my-select');
const instance = new window.pds.DsSelectInput(selectEl, {
triggerTemplateId: 'my-trigger-template',
dropdownTemplateId: 'my-dropdown-template',
optionTemplateId: 'my-option-template',
tagTemplateId: 'my-tag-template', // opcionális
tagsContainerTemplateId: 'my-tags-container', // opcionális
mobileNative: true, // alapból: true
multipleType: 'list', // 'list' vagy 'tag'
cleanupTemplate: true // alapból: true, memória optimalizáció
});
5. Teljes működő példa:
Lásd a "JS oldalról létrehozva" szekciót lejjebb, ahol egy komplett példa található a
createDynamicSelect() függvényben.
⚠️ Fontos tudnivalók:
- A wrapper-nek kötelező a
[data-ds-select-wrapper]attribútum - A select elem-nek kötelező a
nameésidattribútum - Ha nincs megadva template ID, automatikusan generálódik a select ID/name alapján
- A template-ekben használt
data-roleésdata-placeholder-role-*attribútumok elengedhetetlenek a működéshez - Az option elemeken a
data-*attribútumoknak meg kell egyezniük a template role neveivel - Az auto-inicializálás letiltható, ha nem a DOMContentLoaded-kor történik a betöltés
- Template Cache: A
cleanupTemplate: true(alapértelmezett) esetén a template-ek instance-level cache-be kerülnek és törlődnek a DOM-ból. Adestroy()híváskor automatikusan tisztítódik a memória. Kikapcsolása csak debug/fejlesztés céljából ajánlott.
Code Input
Code Input alkalmazása
x-pds.form-control.code-input
namelabelreadonlyerror-messages(warning-messages)(info-messages)(success-messages)
additional-infoadditional-is-inverseadditional-iconadditional-titleadditional-btnadditional-callback
DsCodeInput
constructor(target)_rootElement_setValue(value)_dsInstancedestroy()
target paraméter lehet string (name attribútum) vagy DOM elem._rootElement: Getter, amely visszaadja a komponens gyökér DOM elemét.
_setValue(value): Programozottan beállítja a kód értékét. A
value paraméter egy string, amelyet szétosztva kitölti az input mezőket._dsInstance: A root elemen tárolt referencia az inicializált
DsCodeInput osztály példányára. Mivel a DsCodeInput class automatikusan létrejön inicializáláskor, ezért már nem szükséges másik DsCodeInput classt definiálni az adott elemhez. A _dsInstance lehetővé teszi, hogy később elérjük a komponens metódusait (pl. element._dsInstance._setValue('1234')).destroy(): Felszabadítja az event listenereket és tisztítja a referenciákat. Automatikusan meghívódik a komponens DOM-ból való eltávolításakor.
input-complete - Akkor aktiválódik, amikor mind a 4 mező ki van töltve. Az event.detail tartalmazza a name és value tulajdonságokat.init-complete - Akkor aktiválódik, amikor a komponens inicializálása befejeződött.
Funkciók:
• Csak alfanumerikus karaktereket (0-9, a-z, A-Z) fogad el
• Automatikus fókuszváltás a következő mezőre
• Paste támogatás - a teljes kódot egyben be lehet illeszteni
• Backspace-szel visszalépés az előző mezőre
• Focus esetén az aktuális karakter kijelölése
Megjegyzés: A komponens tartalmaz egy rejtett input mezőt (
name attribútummal), amely tartalmazza az összes beírt karakter összefűzött értékét, így form submit esetén ez az érték kerül elküldésre.
Code Input példa
Form Controls
Input - Basic
Input - Leading
Input - Trailing icon
Trailing button alkalmazása
trailing-button
trailing-button="button-name"trailing-button-colortrailing-button-variant
A button neve (
trailing-button="button-name") kötelező paraméter. A trailing-button-color="var(--color)" segítségével állítható a button színe,
a trailing-button-variant pedig a button variánsát határozza meg (line vagy solid).
trailing-button-function
JavaScript függvények definiálására szolgál. A
trailing-button-function="alert('Hello!')" segítségével állítható be a click eseményre futó függvény. A gomb mindig click eseményre reagál.
Speciális példák
PHP változók beágyazása a JavaScript függvényekbe.
trailing-button-function="performAction()"trailing-button-function="MyApp.search()"
Input - Trailing Button
Input - Password alkalmazása
Minden ugyanaz, mint az input-nál csak input helyett input-password a component neve.
Ezen kívül van lehetőség a jelszóerősség megjelenítésére a
showPasswordStrength=true paraméterrel. Ekkor a default PasswordStrengthCalculator fut le, viszont van lehetőség saját függvény átadására is a passwordStrengthCustomScorer="customPasswordStrengthScorer" -el pl. Erre példa lentebb található.A saját validáció megírása a jelszóerősség kiírására a fejlesztő felelőssége. -1, 0, 1, 2, 3, 4 level-t adhat vissza, ahol a -1 az, hogy nem adta meg, a többi pedig a jelszó erősségére vonatkozó értékek, 4 a legerősebb.
Input - Tooltip info help
Input - Addon info help
Input - Inverse addon info help
Textarea
Laravel komponensek
Kódrészlet
<x-pds.form-control.textarea label="Textarea" name="textarea-component" placeholder="Textarea" required/>
Implementáció
Checkbox komponens dokumentáció
ds-checkbox class
ds-checkbox-[size]ds-invalid
ds-checkbox class definiálja a jelölőnégyzet
stílusát. Megadható ds-checkbox-[size] a méretezéshez,
ds-invalid a hibás állapothoz.
x-pds.form-control.checkbox komponens
namelabelvaluecheckeddisabledrequirederrorsizetypeclass
Méretek:
sm,
(default),
lg
Állapotok:
checked,
disabled,
invalid,
required,
indeterminate
Tulajdonságok:
name (kötelező): A checkbox neve
label: A jelölőnégyzet címkéje
value: Az elem értéke
checked: Kiválasztott állapot
disabled: Letiltott állapot
required: Kötelező kitöltés
error: Hibaüzenetek tömbje
size: Méret (sm, default, lg)
type: Típus (indeterminate - bizonytalan állapot)
class: További CSS osztályok
Checkbox - Default, label nélkül
Checkbox - 3 méret: sm,(default),lg
Checkbox - Hibaüzenet, Kötelező
Checkbox - További állapotok
Switch komponens dokumentáció
ds-switch class
ds-switch-[size]ds-invalid
ds-switch class definiálja a kapcsoló
stílusát. Megadható ds-switch-[size] a méretezéshez
és ds-invalid a hibás állapothoz.
x-pds.form-control.switch komponens
namelabelcheckeddisabledrequirederrorsizeclass
Méretek:
sm,
md (default)
Állapotok:
checked,
disabled,
invalid,
required
Tulajdonságok:
name (kötelező): A switch neve
label: A kapcsoló címkéje
checked: Kiválasztott állapot
disabled: Letiltott állapot
required: Kötelező kitöltés
error: Hibaüzenetek tömbje
size: Méret (sm, md)
class: További CSS osztályok
Switch - Default, label nélkül
Switch - 2 méret: sm, md (default)
Switch - Labelekkel
Switch - Hibaüzenet, Kötelező
Switch - Használati példa szöveggel
Radio Group komponens dokumentáció
ds-radio-group class
ds-invalid
ds-radio-group class definiálja a radio csoport
stílusát. Ha hiba van, akkor ds-invalid osztályt kapja,
amely az összes nem kiválasztott radio elemet hibás állapotba helyezi.
x-pds.form-control.radio-group komponens
nameoptionserrordisabledrequiredreadonlysizeclass
Méretek:
sm,
(md - default),
lg
Tulajdonságok:
• name (kötelező): A radio csoport neve
• options (kötelező): Tömb a radio opciókkal [label, value, checked, disabled, required, id]
• error: Hibaüzenetek tömbje
• disabled: Az egész csoport letiltása
• required: Az egész csoport kötelezővé tétele
• readonly: Az egész csoport readonlyvé tétele
• size: Méret (sm, default, lg)
• class: További CSS osztályok
Radio dokumentáció
ds-radio class
ds-radio-[size]ds-invalid
ds-radio class, ami definiálja a
stílust, emellé megadható ds-radio-[size] a méretezéshez
és ds-invalid a hibás állapothoz.
nameidvaluelabelsizecheckeddisabledrequirederrorclass
Állapotok:
checked,
disabled,
invalid,
required
Tulajdonságok: name (kötelező), value (kötelező), label, id, size, checked, disabled, required, readonly, class
Radio Group - Csoportok
Radio Group - Csoportos kezelés
Alapértelmezett radio csoport:
Radio csoport hibaüzenettel (minden invalid):
Letiltott radio csoport:
Különböző méretek:
Kis méret (sm):
Alapértelmezett:
Nagy méret (lg):
Icon featured
Icon featured alkalmazása
ds-icon-featured class
ds-icon-featured-[type]ds-icon-featured-[size]
ds-icon-featured class, ami definiálja a
stílust, emellé megadjató ds-icon-featured-[size] és ds-icon-featured-[type]
x-pds.icon-featured komponens
typesizeicon
Méretek:
,
sm,
md,
lg,
xl,
Típusok:
,
info,
warning,
alert,
success,
neutral,
secondary,
secondary-weak,
primary,
primary-weak,
tertiary,
tertiary-weak,
accent,
accent-weak,
gradient-brand,
gradient-brand-weak,
gradient-purple,
gradient-purple-weak,
gradient-premium,
gradient-premium-weak,
Ikon: az
untitled ui icon készletet lehet alkalmazni.
Icon featured típusok
Icons (Untitled Icons)
@dsIcon direktíva strukturúrája
@dsIcon('icon-name')
@dsIcon('icon-name', [...args])
hogy testre szabhassuk az ikont:
class
variant
size
light
[class => 'custom-class']
[variant => 'selected-variant']
linesolid
line) vagy kitöltött (solid) ikont szeretnénk használni. Alapértelmezetten
line, így ezt nem kell átadni.
[size => 'selected-size']
defaulttinysmlg
default
tiny
sm
lg
Alapértelmezeten, ha nem adunk át más értéket, akkor a default érték lesz érvényben.
[light => boolean]
[light => true] értéket adjuk át, ha a stroke vastagságát szeretnénk vékonyabbra változtatni.
[hoverIcon => 'untitled-icon-name']
[hoverColor => 'var(--color-token)']
[hoverVariant => 'solid' | 'line']
[animated => '...']
+1: .toggle
+1: .ds-icon-trigger
+1: .ds-icon-hover-disabled
hoverIcon- amennyiben meg van adva, akkor hover esetén ez jelenik meghoverColor- hover esetén a megváltozott szín (ha nincs másodlagos ikon, akkor az elsődleges ikon színe lesz ilyen)hoverVariant- hover esetén a megváltozott variant (ha nincs másodlagos ikon, akkor az elsődleges ikon variantja lesz ilyen).toggle- Ez a class megfordítja az ikonok állapotát (a másodlagosat mutatja).ds-icon-trigger- egy (nem szükségesen közvetlen) parent-ben megadható ez a class, akkor az elemnek a hover eventjére történik meg az ikoncsere.ds-icon-hover-disabled- Ha az ikon megkapja ezt a classt, akkor hoverre nem vált át, csak toggle class-ra- Animálhatóak a fent megadott módosítások. Az
animateda következő értékeket veheti fel:
-[nincs megadva]- default: opacity transient
-false- nincs animáció
-flip-x- horizontális tengelyen forgatás
-flip-y- vertikális tengelyen forgatás
-swipe-left- balra elmozgatás
-swipe-right- jobbra elmozgatás
-swipe-up- felfelé elmozgatás
-swipe-down- lefelé elmozgatás
Kódrészlet
@dsIcon('airplay')
Implementáció
Kódrészlet
@dsIcon('alert-hexagon', ['color' => 'var(--icon-semantic-warning)'])
Implementáció
Kódrészlet
@dsIcon('thermometer-warm', ['light' => true, 'size' => 'lg'])
Implementáció
Kódrészlet
@dsIcon('airplay', ['variant' => 'solid', 'color' => 'var(--icon-semantic-warning)'])
Implementáció
Kódrészlet
@dsIcon('heart', ['variant' => 'line', 'color' => 'red', 'hoverVariant' => 'solid'])
@dsIcon('heart', ['variant' => 'solid', 'color' => 'green', 'hoverColor' => 'red'])
@dsIcon('heart', ['variant' => 'line', 'color' => 'blue', 'hoverIcon' => 'thumbs-up', 'animated' => 'swipe-up'])
@dsIcon('face-smile', ['variant' => 'line', 'color' => 'green', 'hoverIcon' => 'face-sad', 'hoverColor' => 'red', 'hoverVariant' => 'solid'])
Implementáció
Kódrészlet
@dsIcon('face-smile', ['hoverIcon' => 'face-sad', 'hoverVariant' => 'solid'])
@dsIcon('face-smile', [, 'class' => 'toggle', 'hoverIcon' => 'face-sad', 'hoverVariant' => 'solid'])
@dsIcon('face-smile', ['class' => 'ds-icon-hover-disabled', 'hoverIcon' => 'face-sad', 'hoverVariant' => 'solid'])
@dsIcon('face-smile', ['class' => 'ds-icon-hover-disabled toggle', 'hoverIcon' => 'face-sad', 'hoverVariant' => 'solid'])
Implementáció
Kódrészlet
@dsIcon('face-smile', ['hoverIcon' => 'face-sad', 'hoverVariant' => 'solid'])
@dsIcon('face-smile', ['class' => 'ds-icon-hover-disabled', 'hoverIcon' => 'face-sad', 'hoverVariant' => 'solid'])
@dsIcon('thumbs-up', ['hoverIcon' => 'thumbs-down', 'animated' => 'swipe-up'])
@dsIcon('thumbs-up', ['class' => 'ds-icon-hover-disabled', 'hoverIcon' => 'thumbs-down', 'animated' => 'swipe-up'])
Implementáció
Kódrészlet
@dsIcon('play', ['hoverIcon' => 'stop',])
@dsIcon('play', ['hoverIcon' => 'stop', 'animated' => false])
@dsIcon('play', ['hoverIcon' => 'stop', 'animated' => 'flip-x'])
@dsIcon('play', ['hoverIcon' => 'stop', 'animated' => 'flip-y'])
@dsIcon('play', ['hoverIcon' => 'stop', 'animated' => 'swipe-left'])
@dsIcon('play', ['hoverIcon' => 'stop', 'animated' => 'swipe-right'])
@dsIcon('play', ['hoverIcon' => 'stop', 'animated' => 'swipe-up'])
@dsIcon('play', ['hoverIcon' => 'stop', 'animated' => 'swipe-down'])
Implementáció
| Variant / Weight | tiny | sm | def. | lg |
|---|---|---|---|---|
| line / default | ||||
| line / light | ||||
| solid / default | ||||
| solid / light |
| Variant / Weight | tiny | sm | def. | lg |
|---|---|---|---|---|
| line / default | ||||
| line / light | ||||
| solid / default | ||||
| solid / light |
| Variant / Weight | tiny | sm | def. | lg |
|---|---|---|---|---|
| line / default | ||||
| line / light | ||||
| solid / default | ||||
| solid / light |
| Variant / Weight | tiny | sm | def. | lg |
|---|---|---|---|---|
| line / default | ||||
| line / light | ||||
| solid / default | ||||
| solid / light |
| Variant / Weight | tiny | sm | def. | lg |
|---|---|---|---|---|
| line / default | ||||
| line / light | ||||
| solid / default | ||||
| solid / light |
| Variant / Weight | tiny | sm | def. | lg |
|---|---|---|---|---|
| line / default | ||||
| line / light | ||||
| solid / default | ||||
| solid / light |
List Item
List Item alkalmazása
<x-pds.list.item> Blade komponens
size- méretactive- aktív állapotdisabled- letiltott állapottype- típusicon- vezető ikontrailingIcon- záró ikonsubtitle- alcímariaControls- ARIA attribútum
Komponens props
iconConfig- ikon konfigurációclass- CSS osztályokhref- link cél
lg - nagy méret (12px 16px padding, ds-body-2 tipográfia)md - közepes méret (8px 16px 8px 8px padding, ds-body-3 tipográfia)sm - kis méret (8px 16px 8px 8px padding, ds-body-4 tipográfia)
Típusok:
default - alapértelmezett lista elemselected - kiválasztható lista elem (chevron-right ikon hozzáadása)
Állapotok:
active - aktív állapot (kék gradient háttér, félkövér szöveg, check-circle ikon)disabled - letiltott állapot (szürke háttér, lock ikon)hover - hover állapot (színkeveréses háttér)keyboard-focused - billentyűzet fókusz (shadow-inset-focus)
Slotok:
slot - fő tartalom (title)iconSlot - egyéni vezető ikon slottrailingIconSlot - egyéni záró ikon slotadditional - további tartalom (pl. badge)
CSS osztályok:
.ds-list-item - fő wrapper osztály.ds-list-item-leading - vezető ikon konténer.ds-list-item-content - tartalom konténer.ds-list-item-title - cím elem.ds-list-item-subtitle - alcím elem.ds-list-item-trailing - záró ikon konténer.ds-list-item-active-icon - aktív állapot ikonja
Megjegyzés: Az aktív állapotnál a trailing ikon automatikusan lecserélődik egy check-circle ikonra. A disabled állapotnál a trailing ikon helyére egy lock ikon kerül CSS maszkként. Az első elem felső sarkain, az utolsó elem alsó sarkain border-radius alkalmazódik.
Code Input példa
Modal
Modal komponens használata
Alap beállítások
idtype(basic|alt)position(center|right|fullscreen)content
A
idHa nincs megadva generálódik egy egyedi id.A
type határozza meg a modal stílusát (alapértelmezett: basic).A
position a megjelenítés helyét szabályozza (alapértelmezett: center).A
content maga a modal tartalma, HTML is megadható.Fejléc / Lábléc
showHeader,showFootercloseIconnavigationIcontitle,subtitlefooterslot
A
showHeader / showFooter kapcsolja a
szekciókat. (default: true)A
closeIcon az ikon megjelenítését/elrejtését szabályozza.Az ikon bezárja a modalt. (default: true)A
navigationIcon az ikon megjelenítését/elrejtését szabályozza.Erre az ikonra tetszőleges működés köthető. (default: false)A
title és subtitle a fejlécben
megjelenő cím és alcím.A
footer a lábléc tartalma. Html is megadható
x-pds.modal Komponens esetén x-slot:footer slot-ba belehelyezve lehet beállitani a footer tartalmát.footerHasBorder/:footer-has-border - a footer feletti található border bekapcsolása (default: false )footerHasShadow/:footer-has-shadow - a footer feletti található shadow bekapcsolása (default: false )Viselkedés
scrollablecloseable
A
scrollable engedélyezi a modal törzs görgetését hosszú tartalom
esetén.A
closeable ha igaz, a háttérre kattintás is bezárja a modalt (különben
csak a záró ikon/gomb).
Blade használat
-
<x-pds.modal id="modal-center" title="Center Modal" position="center" /> -
<x-pds.modal id="modal-right" title="Right Modal" position="right" :closeable="true">...</x-pds.modal> -
<x-pds.modal id="modal-fs" title="Fullscreen" position="fullscreen" :showFooter="true"> <x-slot name="footer">...</x-slot> </x-pds.modal>
Data attribútumok
data-ds-modal-target: azonid, amelyik modalt nyissa meg.data-ds-modal-destroy-on-close: ha igaz, bezáráskor eltávolítja a DOM-ból.data-ds-modal-close: a modálon belüli gomb a bezáráshoz.
JS API
Megnyitás/bezárás:
pds.modal.open(id), pds.modal.close(id)Létrehozás és megnyitás:
pds.modal.createAndOpen(config)Példa:
pds.modal.createAndOpen({ id: 'dyn-right', title: 'Dinamikus', subtitle: 'Részletek', content: '<p>Tartalom</p>', footer: '<button class=\"ds-btn\" data-ds-modal-close>Bezár</button>', position: 'right', closeable: true, destroyOnClose: true })
Események
A modál elemen (
[data-ds-modal-id="…"] ) a következő egyedi események
érhetők el:modal:open– megnyitáskormodal:close– bezáráskormodal:navigation– navigációs ikon kattintásakor
document.querySelector('[data-ds-modal-id="modal-center"]').addEventListener('modal:open',
e => console.log(e.detail))
Modal típus
(PHP komponensel létrehozva)Modal JS-ből létrehozva
(PHP komponens nélkül, JavaScript-ből létrehozva és megnyitva)Modal létrehozása form-al
Lapozó (Pagination)
Lapozó alkalmazása
<x-pds.pagination> Blade komponens
:current- aktuális oldal száma:total- összes oldal száma:visible- látható oldalak száma (alapértelmezett: 3)size- méret (sm/md/lg):paginator- Laravel paginator objektum:compact- kompakt nézet (true/false)class- extra CSS osztályok
Alapvető használat:
<x-pds.pagination :current="1" :total="10" />
Laravel paginator használatával:
<x-pds.pagination :paginator="$users" />
size paraméter
smmdlg
Példa különböző méretekre:
<x-pds.pagination :current="1" :total="10" size="sm" /><x-pds.pagination :current="1" :total="10" size="md" /><x-pds.pagination :current="1" :total="10" size="lg" />
:compact paraméter
false- normál nézet (alapértelmezett)true- kompakt nézet
Példa kompakt módra:
<x-pds.pagination :current="5" :total="20" :compact="true" />
:visible paraméter
Példa:
<x-pds.pagination :current="10" :total="50" :visible="5" />
Ez 5 oldalt fog megjeleníteni az aktuális körül (pl. 8, 9, 10, 11, 12), plusz az első (1) és utolsó (50) oldal, valamint "..." dropdown menük a köztes oldalakhoz.
pagination:change JavaScript event
detail.page- új oldalszám
pagination:change custom eventet küld, amikor
új oldalra navigál a felhasználó. Ez az event használható AJAX alapú tartalombetöltéshez vagy
egyéni navigációs logikához.
Példa JavaScript event kezelésre:
document.querySelector('[data-pagination-id]').addEventListener('pagination:change', (e) => {
console.log('Új oldal:', e.detail.page);
// AJAX betöltés vagy egyéb logika
});
Megjegyzés: Ha paginator objektumot használsz, a komponens automatikusan linkeket generál, így az event mellé a böngésző natív navigációja is működik.
Pagination példa
Segmented Control
Segmented Control alkalmazása
x-pds.segmented-control
variantnameclassanimationhasQueryquery
x-pds.segmented-control.item
keyactiveiconiconColoriconVariantdisabledonclickbadgeContentbadgeTypebadgeBgColorbadgeTextColor
variant értékei lehetnek:
fill,
equal,
fill equal.
Fill esetén: az item-ek kitöltik a teljes szélességet, de nem egyenlő szélességűek.
Equal esetén: minden item szélességét a legnagyobb elem méretére állítja.
Fill Equal esetén: minden item egyenlő szélességű, és a teljes szélességet kitölti.
Az ikon mindig a bal oldalon jelenik meg, 16x16 px méretben.
Az ikon
iconVariant lehetséges értékei: line, solid. Alapértelmezett: line.
Az ikon
iconColor paraméterrel egyedi színt kaphat. Ha nincs megadva, a szöveg színét örökli.
A badge a
badgeContent attribútummal adható meg.
A badge
badgeType értékei: basic, advanced, highlighted, semantic, dot.
Az
animation paraméter alapértelmezetten true. false értékkel kikapcsolható az indicator animáció.
A
hasQuery paraméter (boolean, alapértelmezett: false) bekapcsolja az URL query paraméter szinkronizációt.
A
query paraméter (string, alapértelmezett: "segment") az URL query paraméter nevét határozza meg.
Dinamikus tartalom: A segmented control automatikusan kezeli a tartalom váltást.
A
name attribútummal azonosítjuk a kontrollt, a tartalom elemeken data-segmented-content="name" és data-key="key" attribútumokkal kapcsoljuk össze.
Kódrészlet
<x-pds.segmented-control name="basic-example" variant="fill equal">
<x-pds.segmented-control.item key="option1" :active="true">
Első opció
</x-pds.segmented-control.item>
<x-pds.segmented-control.item key="option2">
Második opció
</x-pds.segmented-control.item>
<x-pds.segmented-control.item key="option3">
Harmadik opció
</x-pds.segmented-control.item>
</x-pds.segmented-control>
<div data-segmented-content="basic-example" data-key="option1">
Első opció tartalma
</div>
<div data-segmented-content="basic-example" data-key="option2">
Második opció tartalma
</div>
<div data-segmented-content="basic-example" data-key="option3">
Harmadik opció tartalma
</div>
Implementáció
Segmented Control típusok
Modalban (mobil tesztelhetőség miatt)
Ikonokkal és badge-ekkel
Badge típusok
Egyedi színek és disabled állapot
URL Query paraméterekkel
A segmented control szinkronizálható az URL query paramétereivel. Ha a :hasQuery="true" prop meg van adva:
- A kiválasztott elem kulcsa bekerül az URL-be query paraméterként
- Oldal betöltéskor az URL-ből olvasható az aktív elem
- A böngésző vissza/előre gombjai is működnek
- Több control is használható különböző query paraméterekkel
A query prop-pal testreszabható a query paraméter neve (alapértelmezett: "segment").
Semantic Card
Semantic Card alkalmazása
x-pds.semantic-card
typetitledescriptioniconcompactclass
type értékei lehetnek:
warning,
success,
alert,
info,
neutral,
brand,
purple,
premium-purple.
A
title, description, icon értékek opcionálisak.
A
compact mód esetén nem alul, hanem jobb oldalt jelenik meg a műveleti sáv, alapértelmezetten false.
A
class értéke opcionális, a kártya további stílusát (pl. méretezés) befolyásolják.closeablecloseCallbackcloseId
compact módban nem lehet bezárni, akkor sem, ha át van neki adva a paraméter.
Ha simán átadjuk neki a
closeable="true" értéket, akkor amint rákattintunk, eltűnik, de az oldal újratöltésénél alapértelmezetten újra megjelenik.
Ha átadjuk neki a
closeCallback értékét, valamint egy egyedi closeId azonosítót, akkor bezárás esetén a callback meghívódik (attribútumban visszaadódik a semantic card element).
actionLabelactionaction2Labelaction2linkLabellinklink2Labellink2<actionSlot>
A
*Label értékaként kell megadni a gomb szövegét, a *2* értékek pedig a másodlagos gombot jelentik.
A műveletet a
* értékadásával lehet hozzárendelni a hozzá tartozó *Label-hez.
A
compact módban csak az elsődleges akciót lehet hozzárendelni (a másodlagos nem jelenik meg).
Ha egyedi template-t szeretnénk alkalmazni, akkor a
<x-slot name="actionSlot">[...]</x-slot>-on belül kell elhelyezni a template-t.
helpLabeltooltiphelpTrigger
helpLabel értékét kell megadni.
A
tooltip értékét átadva egy tooltip fog megjelenni a helpLabel szöveggel, ha rákattintunk a fentebb megadott gombra.
- nincs még a tooltip implementálva!
Ha a
helpTrigger értéket adjuk át, akkor egyedi JS eseményt fogunk elérni, aminek a trigger-e a helpLabel gombja lesz.
Semantic Card típusok
Mindenes
Ezt a kártyát a felhasználó bezárhatja, ha a bezárás gombra kattint. Az oldal frissítése után a kártya újra megjelenik.Linkes
Beállítható, hogy ne event-et süssünk el, hanem egy adott route-ra navigáljunk, ha nem action-t adunk meg hanem link-et.Kompakt
FYI: A kompakt sosem zárható be.Custom slotos
Megadhathatóak egyedi akció értékek, ebben az esetben az 'actionSlot' névvel ellátott slotban kell elhelyezni a hozzá tartozó templatet.Karcsú
Ahhoz, hogy ne csak a képernyőkép alapján legyen 'mobilbarát', hanem a befogó terület alapján, ahhoz a szülő blokknak szükséges megadni a 'ds-semantic-card-wrapper/ds-semantic-card-container' class valamelyikét.Információs
Lehet akár ikon és akció nélkül is, ha csak információt szeretnénk megjeleníteni.Információs
Ez pedig egy kompakt, akció nélküli.Lehet cím nélkül is.
Ez pedig egy kompakt, cím nélküli.
Type: warning
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: warning - Compact
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: warning - Responsive
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: success
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: success - Compact
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: success - Responsive
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: alert
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: alert - Compact
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: alert - Responsive
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: info
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: info - Compact
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: info - Responsive
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: neutral
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: neutral - Compact
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: neutral - Responsive
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: brand
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: brand - Compact
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: brand - Responsive
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: purple
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: purple - Compact
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: purple - Responsive
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: premium-purple
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: premium-purple - Compact
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Type: premium-purple - Responsive
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris.Shadow
Spacing (figma)
Spacing class strukturúrája
[level]
[level] |
zero |
4xs |
3xs |
2xs |
xs |
sm |
md |
lg |
xl |
2xl |
3xl |
4xl |
5xl |
6xl |
7xl |
8xl |
9xl |
0 |
2 |
4 |
8 |
12 |
16 |
20 |
24 |
32 |
40 |
48 |
56 |
64 |
72 |
96 |
104 |
128 |
[desktop] |
0px |
2px |
4px |
8px |
12px |
16px |
20px |
24px |
32px |
40px |
48px |
56px |
64px |
72px |
96px |
104px |
128px |
|||||||||||||||||
[mobile] |
0px |
2px |
2px |
4px |
8px |
12px |
16px |
20px |
24px |
32px |
40px |
40px |
48px |
56px |
64px |
72px |
72px |
Padding
ds-p-[level]ds-py-[level]ds-px-[level]ds-pt-[level]ds-pl-[level]ds-pr-[level]ds-pb-[level]
A level-ek között megtalálhatók a namingelt értékek (pl.: xs, sm, lg) mellett a fix (pl.: 4, 8, 32) értékek is, amelyeket kifejezetten akkor használunk, ha egy komponens úgy van megalkotva, hogy szándékosan ne függjön az eszköz méretétől ( - ez a designerek által meghozott döntés, ha ilyet látsz pl. egy layoutok közötti elemen, akkor ott ne ezt használd). Ezekben az esetben nem lehet a level-eket használni, hanem a fix értékek közül választhatunk.
Margin
ds-m-[level]ds-my-[level]ds-mx-[level]ds-mt-[level]ds-ml-[level]ds-mr-[level]ds-mb-[level]
Gap
ds-gap-[level]
ds-flex-column vagy ds-flex-column elrendezést alkalmazunk, és közöttük távolságot
szeretnénk beállítani.
Padding példák
Gap példák
Tab
Tab alkalmazása
.ds-tab class / komponens
.ds-tab-item.active.ds-tab-sm
x-pds.tab Blade komponens
sizeicondisabled
ds-tab-change eseményt küld, amely tartalmazza az index-et, value-t és az elemet.
Méretek:
sm - kisebb padding (8px 14px) és ds-body-3 tipográfiadefault (md) - normál padding (8px 16px) és ds-body-2 tipográfia
Állapotok:
active - aktív tab, alsó border láthatódisabled - inaktív, nem kattinthatóhover/focus - interaktív állapotok vizuális visszajelzéssel
Funkciók:
- Automatikus horizontális görgetés egérgörgővel (snap scroll)
- Aktív elem automatikus központosítása/scroll-ba hozása
- Ikonok támogatása a tab elemekben
- CustomEvent dispatch tab váltáskor (
ds-tab-change)
Megjegyzés: A komponens JavaScript automatikusan inicializálódik minden
.ds-tab elemen. A tab-item elemek <button> típusúak.
x-pds.tab.item Blade komponens
iconiconConfigclassdisabled
.ds-tab konténeren belül használható. Automatikusan <button> elemet renderel a megfelelő osztályokkal és attribútumokkal.
Tulajdonságok:
icon - ikon neve (opcionális), amely a tab szövege előtt jelenik megiconConfig - ikon konfigurációs tömb (default: ['size' => 'sm'])class - további CSS osztályok (pl. 'active' az aktív állapothoz)disabled - boolean, letiltja a tab elemet (default: false)
Slotok:
$slot - fő tartalom (tab felirat)$additional - további tartalom a slot után
Használat példa:
<x-pds.tab.item icon="home" class="active">Kezdőlap</x-pds.tab.item>
Tab típusok
Amikor nem fér ki széltében
Modalban (mobil tesztelhetőség miatt)
Tags
Tag komponens használata
Alap beállítások
colorsizecontentcustomClass
A
color (alapértelmezett: primary)
A
size (alapértelmezett: md) A
content a címke felirata. A
customClass további CSS osztályok hozzáadására szolgál.
Állapotok
activeStateactiveSubtleactionType
A
activeState határozza meg az induló aktív állapotot. A
activeSubtle finomabb aktív megjelenést ad. A
actionType lehet toggle
(kattintásra vált) vagy close (bezáró ikon eltávolítja a taget).
Ikonok
icon+iconVariantcloseIcon+closeIconVariant
Az
icon a címke elé kerülő ikon neve, az iconVariant
a változata (line vagy solid). A
closeIcon (alap: x-close) és closeIconVariant a bezáró ikon beállításai.
Azonosítók
idwrapperId
Az
id a tag egyedi azonosítója. A
wrapperId az a DOM elem, ahová a tag bekerül. Ha a wrapper nem
létezik, automatikusan létrejön egy egyedi generált id.
Adattulajdonságok
dataAttributes
Objektum formában adható meg, a kulcsok
data-* attribútumként
kerülnek a tagre. Példa: ['id' => 12, 'type' => 'skill'].
Elérhetőség
closeAriaLabel
A tag gombként viselkedik (
role="button"), az állapot aria-pressed attribútummal frissül. Bezárás esetén a bezáró ikonhoz megadható
closeAriaLabel.
Események
Hiba esetén
console.error(error) esemény fut le.
Bezáráskor (ha actionType = close) a komponens eltávolítja magát. Ha
onDelete igaz értékű, egy tagDeleted esemény fut le amire fel lehet iratkozni. document.addEventListener('tagDeleted', function (event) {})
Blade használat
-
<x-pds.tag content="Marketing" color="secondary" size="sm" /> -
<x-pds.tag content="Design" :activeState="true" icon="star" iconVariant="solid" /> -
<x-pds.tag content="Törölhető" actionType="close" closeAriaLabel="Címke törlése" :onDelete="true" /> -
<x-pds.tag content="Skill" wrapperId="skills-wrapper" :dataAttributes="['id' => 12, 'type' => 'skill']" />
JS használat
pds.tag.addTag(config) Példa:
-
pds.tag.addTag({ content: 'HR', color: 'primary', size: 'md', action-type: 'toggle', 'wrapper-id': 'my-wrapper', 'data-attributes': { id: 99 } })
Toggle Interaktív Tag
Close Interaktív Tag
Tag Button
Tag Basic
Tag highlighted
Toast
Toast alkalmazása
x-pds.toast.wrapper
initconfigWrappershow
Nem probléma, ha véletlenül több helyen is implementálva, mert csak egyszer definiálódik.
Az inicializálás a
pds.toast.init() metódussal történik, ami a DOMContentLoaded eseményre van bekötve, ez automatikusan megtörténik a laravel komponens implenentásával.Amennyiben az oldalbetöltésre azonnal szeretnénk megjeleníteni üzenetet, akkor a
window.onload eseményre kell bekötni a pds.toast.show() metódust.pds.toast.configWrapper()
positionstackoffsetelevation+1: force-init
x-pds.toast.wrapper attribútumaiként is.position - megadható szabad szavasan a bottom, top valamint a right, left, center értékek.stack - a megjelenített toast üzenetek számát határozza meg, alapértelmezetten 5.offset - az oldal szélétől való eltérés, x, y értékadásával, amelyek az átadott egységgel (pl.: px, rem) értendők.elevation - z-index beállítása, amennyiben van valami, ami magasabban van, mint amennyire a toast wrapper van pozicionálva, akkor ez a paraméter segít, hogy a toast wrapper mindig a legmagasabb legyen.+1: force-init - Ez az egy extrán átadható a laravel komponensen keresztül. Mivel a wrapper csak egyszer inicializálódik, ezért az átadott paraméterek nem kerülnek figyelembe véve, hacsak nem adjuk át ezt neki. Ez a pds.toast.configWrapper() meghívását tudja helyettesíteni.pds.toast.show()
typemessageiconclosablebuttonduration
type - Itt a következő értékeket adhatjuk meg: info, warning, alert, success, neutral (ez a default érték).message - a megjelenítendő üzenet szövege.icon - a megjelenítendő ikon neve, a @dsIcon() metódusban megadott név.closable - az üzenet bezárásának lehetősége, alapértelmezetten true.button - egy gomb megjelenítése a toast üzenetben, amelynek a szövege (text) és az eseménye (action) megadható.dynamic - az üzenet megjelenítési ideje, amelyet az üzenet alapján számít ki. Ez az alapértelmezett. Amennyiben van megadott extra gomb, akkor van még hozzá tartozó extra idő.duration - az üzenet megjelenítési ideje, ha nem dinamikus, alapértelmezetten 3000ms. Ha dinamikus, és meg van adva, akkor ez a minimum idő, amíg megjelenik, plusz erre számítja az üzenet hosszát.pds.toast.clearAll()
Toast típusok
Kattints a megjelenítéséhezToast Wrapper pozicionálás
Toast Wrapper pozicionálás
Tooltips
Tooltip attribútumok strukturája
data-tooltipdata-tooltip-placementtop, bottom, left, right, valamint a start és end és ezek kombinációi (top-start, top-end, stb.). Alapértelmezett: top.
data-tooltip-titledata-tooltip-html<strong>, <em>) támogatottak.
data-tooltip-closeabledata-tooltip-btn
+ kapcsolódó attribútumok
ds-btn-inverse gomb.
- Callback opciók (válassz egyet):
data-tooltip-btn-onclick- Callback funkció (inline kód vagy globális funkció neve)data-tooltip-btn-callback- Callback funkció (inline kód vagy globális funkció neve)
data-tooltip-btn-close- Ha"false", nem záródik be a tooltip a gomb után (alapértelmezett:"true")
data-tooltip-ellipsisdata-tooltip-triggerhover (alapértelmezett) vagy click. Closeable tooltip-ok automatikusan click trigger-t használnak.
data-tooltip-themeJavaScript API
pds.tooltip.attach()pds.tooltip.attach(element, content, options)
Options objektum:
placement- Pozíciótitle- Címhtml- HTML tartalom engedélyezésecloseable- Bezárható-ebuttonText- Action button szövegebuttonCallback- Action button funkciójabuttonClose- Bezáródjon-e button után (default: true)
pds.tooltip.detach()pds.tooltip.detach(element)
pds.tooltip.scan()data-tooltip attribútumokhoz.
pds.tooltip.scan(containerElement)
pds.tooltip.scanEllipsisTooltips()pds.tooltip.scanEllipsisTooltips(containerElement)