Accordion

Accordion alkalmazása


x-pds.accordion
  • title
  • open
  • disabled
Önálló accordion komponens, amely egy lenyitható/zárható tartalmat reprezentál.
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>
Második elem
Ez nyitva van alapból.

Accordion példák

Speciális esetek

Open by default
Ez az accordion elem alapértelmezetten nyitva van az :open="true" prop miatt.

Modalban (mobil tesztelhetőség miatt)

Avatar

Avatar alkalmazása

ds-avatar class
  • ds-avatar-premium
  • ds-avatar-shadow
  • ds-avatar-border
  • ds-avatar-[size]
Az ds-avatar class definiálja az alapvető stílust, emellé megadható:
  • ds-avatar-premium - prémium gradient border
  • ds-avatar-shadow - árnyék hatás
  • ds-avatar-border - szimpla border (nem prémium esetén)
  • ds-avatar-[size] - méret (xs, sm, md, lg, xl)
x-pds.avatar komponens
  • size
  • img
  • premium
  • shadow
  • border
  • badge
Ez az önálló komponens, automatikusan kezeli az avatar megjelenítését és funkcionalitását.
Paraméterek:
  • size - méret: xs, sm, md, lg, xl
  • img - 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

Premium
Premium: ✅| Border: ✅| Shadow: ✅
avatar
avatar
avatar
avatar
avatar
Premium: ✅| Border: ✅| Shadow: ✅
avatar
avatar
avatar
avatar
avatar
Premium: ✅| Border: ✅| Shadow: ❌
avatar
avatar
avatar
avatar
avatar
Premium: ✅| Border: ✅| Shadow: ❌
avatar
avatar
avatar
avatar
avatar
Premium: ✅| Border: ❌| Shadow: ✅
avatar
avatar
avatar
avatar
avatar
Premium: ✅| Border: ❌| Shadow: ✅
avatar
avatar
avatar
avatar
avatar
Premium: ✅| Border: ❌| Shadow: ❌
avatar
avatar
avatar
avatar
avatar
Premium: ✅| Border: ❌| Shadow: ❌
avatar
avatar
avatar
avatar
avatar
Premium: ✅| Badge: ✅
avatar
avatar
avatar
avatar
avatar
Default
Premium: ❌| Border: ✅| Shadow: ✅
avatar
avatar
avatar
avatar
avatar
Premium: ❌| Border: ✅| Shadow: ✅
avatar
avatar
avatar
avatar
avatar
Premium: ❌| Border: ✅| Shadow: ❌
avatar
avatar
avatar
avatar
avatar
Premium: ❌| Border: ✅| Shadow: ❌
avatar
avatar
avatar
avatar
avatar
Premium: ❌| Border: ❌| Shadow: ✅
avatar
avatar
avatar
avatar
avatar
Premium: ❌| Border: ❌| Shadow: ✅
avatar
avatar
avatar
avatar
avatar
Premium: ❌| Border: ❌| Shadow: ❌
avatar
avatar
avatar
avatar
avatar
Premium: ❌| Border: ❌| Shadow: ❌
avatar
avatar
avatar
avatar
avatar
Premium: ❌| Badge: ✅
avatar
avatar
avatar
avatar
avatar

Badgek

Badgek alkalmazása


x-pds.badge
A badge megjelenítéshez ezt a laravel komponenst kell implementálni.

Beállítási lehetőségek:
color
Badge 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 legyen
focusable boolean, default: false. Tooltipet kaphat, olyankor érdemes true-ra rakni, ez jelenleg manuálisan oldható meg id-ja
wrapper_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 string
custom_class string

Badge Semantic (focusable:true-val)

Badge Basic

Badge highlighted

Badge Advanced

Badge Dot

Badge Dot class strukturúrája


ds-badge-dot
Ez a badge dot alap osztály. Bármit szeretnénk paraméterezni, ez szükséges a használatához. Nem fókuszálható.
ds-badge-dot-[size]
A badge dots-okat megkülönböztetjük méreteikben, ezek a 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]
A badge dotsokat megkülönböztetjük színeiben, ezek lentebb felvannak sorolva.

Badge dot

neutral
neutral-inverse
warning
success
alert
info
white
primary
secondary
accent
tertiary
yellow
blue-subtle
blue-strong
purple-subtle
purple-strong
purple-premium-subtle
purple-premium-strong

Borders

Border - color


avatar default default-dark-only default-light-only brand-accent(salmon) brand-additional(semantic-warning) brand-primary(purple) brand-secondary(blue) brand-tertiary(turquoise) alert info neutral success warning

Border - size


border-none border-1 border-2 border-3 border-4
Megadható bármilyen oldalon egyedileg is.

Border - Radius


radius-xs radius-sm radius-md radius-lg radius-xl
full

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


avatar default default-dark-only default-light-only brand-accent(salmon) brand-additional(semantic-warning) brand-primary(purple) brand-secondary(blue) brand-tertiary(turquoise) alert info neutral success warning

Border - size


border-none border-1 border-2 border-3 border-4
Megadható bármilyen oldalon egyedileg is.

Border - Radius


radius-xs radius-sm radius-md radius-lg radius-xl
full

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-btn
Ez a button alap osztály. Bármit szeretnénk paraméterezni, ez szükséges a használatához.
ds-btn-[type]
  • ds-btn-text
  • ds-btn-icon
  • (ds-btn-only-icon)
A klasszikus gombok mellett vannak speciális stílusok, mint a 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-sm
  • ds-btn-md
  • ds-btn-lg
  • +1: ds-btn-h100
  • +1: ds-btn-h-unset
  • +1: ds-btn-h-initial
A gombokat megkülönböztetjük méreteikben, ezek a 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-primary
  • ds-btn-secondary
  • ds-btn-tertiary
  • ds-btn-accent
  • ds-btn-ghost
  • ds-btn-inverse
  • ds-btn-destructive
Témában megkülönböztetünk 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-icon
    • ds-btn-trailing-icon
Amennyiben szeretnénk ikont a gombhoz adni, ezt a 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]
A töltés folyamatához adjuk a gombhoz a 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


sm

primary

sm-primary: anchor tag

secondary

sm-secondary: anchor tag

tertiary

sm-tertiary: anchor tag

accent

sm-accent: anchor tag

ghost

sm-ghost: anchor tag

inverse

sm-inverse: anchor tag

md

primary

md-primary: anchor tag

secondary

md-secondary: anchor tag

tertiary

md-tertiary: anchor tag

accent

md-accent: anchor tag

ghost

md-ghost: anchor tag

inverse

md-inverse: anchor tag

lg

primary

lg-primary: anchor tag

secondary

lg-secondary: anchor tag

tertiary

lg-tertiary: anchor tag

accent

lg-accent: anchor tag

ghost

lg-ghost: anchor tag

inverse

lg-inverse: anchor tag

ds-btn-text & ds-btn-icon


sm

primary text button

sm-primary: anchor tag

secondary text button

sm-secondary: anchor tag

inverse text button

sm-inverse: anchor tag

destructive text button

sm-destructive: anchor tag

md

primary text button

md-primary: anchor tag

secondary text button

md-secondary: anchor tag

inverse text button

md-inverse: anchor tag

destructive text button

md-destructive: anchor tag

lg

primary text button

lg-primary: anchor tag

secondary text button

lg-secondary: anchor tag

inverse text button

lg-inverse: anchor tag

destructive text button

lg-destructive: anchor tag

sm

primary icon button

secondary icon button

subtle icon button

inverse icon button

destructive icon button


md

primary icon button

secondary icon button

subtle icon button

inverse icon button

destructive icon button


lg

primary icon button

secondary icon button

subtle icon button

inverse icon button

destructive icon button


Button: Progress status


primary
secondary
tertiary
accent
ghost
inverse

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-apple
  • ds-btn-social-google
  • ds-btn-social-facebook
Ez a social button alap osztály, ezt kell bővíteni a típusal, ami lehet 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-icon
  • ds-btn-lg
Ha csak az ikont szeretnénk megjeleníteni, akkor alkalmazzuk a 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.

apple
google
facebook

ds-btn-toggle


Button Toggle Utility

data-ds-toggle
A toggle gombok automatikusan inicializálódnak DOM betöltéskor. Minden gombra, amely rendelkezik data-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"
Az inicializált gombok automatikusan megkapják ezt az értéket. Ha nincs kezdeti 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)
Dinamikus gombok inicializálásához használd ezt a funkciót. Paraméter nélkül az összes új toggle gombot inicializálja, container paraméterrel csak az adott konténeren belülieket.
Megjegyzés: Alapértelmezetten nem kell meghívni, mert automatikusan működik.
window.pds.cleanupToggleButtons()
  • Automatikus cleanup
  • Manuális cleanup
Automatikus cleanup esetei: 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ó


Default, aria-pressed nélkül
aria-pressed="false"
aria-pressed="true"
data-ds-toggle
Leading icon
Trailing icon
Only icon

ds-btn-h* - ds-flex-row esetén


Colors

Text colors


Default colors

brand-primary
brand-secondary
brand-tertiary
brand-accent
brand-additional
disabled
forced-black
forced-white
inverse
primary
secondary
tertiary
alert
info
success
warning

Gradients


Default colors

blue-strong
blue-strong-inv
blue-subtle
blue-subtle-inv
blue-weak
blue-weak-inv
purple-weak
purple-weak-inv
purple-strong
purple-strong-inv
purple-subtle
purple-subtle-inv
purple-premium-weak
purple-premium-weak-inv
purple-premium-strong
purple-premium-strong-inv
purple-premium-subtle
purple-premium-subtle-inv

Backgrounds


Default colors

default
default-alt
disabled
elevated
forced-white
forced-dark
overlay
sunken
transparent
alert
info
neutral
neutral-inverse
success
warning
brand-primary-strong
brand-primary-subtle
brand-primary-weak
brand-secondary-strong
brand-secondary-subtle
brand-secondary-weak
brand-tertiary-strong
brand-tertiary-subtle
brand-tertiary-weak
brand-accent-strong
brand-accent-subtle
brand-accent-weak
brand-additional-strong
brand-additional-subtle
brand-additional-weak

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.

default
strong hover
strong pressed
strong selected

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.

transparent weak hover
transparent weak hover
transparent weak pressed
transparent weak selected

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

brand-primary
brand-secondary
brand-tertiary
brand-accent
brand-additional
disabled
forced-black
forced-white
inverse
primary
secondary
tertiary
alert
info
success
warning

Gradients


Default colors

blue-strong
blue-strong-inv
blue-subtle
blue-subtle-inv
blue-weak
blue-weak-inv
purple-weak
purple-weak-inv
purple-strong
purple-strong-inv
purple-subtle
purple-subtle-inv
purple-premium-weak
purple-premium-weak-inv
purple-premium-strong
purple-premium-strong-inv
purple-premium-subtle
purple-premium-subtle-inv

Backgrounds


Default colors

default
default-alt
disabled
elevated
forced-white
forced-dark
overlay
sunken
transparent
alert
info
neutral
neutral-inverse
success
warning
brand-primary-strong
brand-primary-subtle
brand-primary-weak
brand-secondary-strong
brand-secondary-subtle
brand-secondary-weak
brand-tertiary-strong
brand-tertiary-subtle
brand-tertiary-weak
brand-accent-strong
brand-accent-subtle
brand-accent-weak
brand-additional-strong
brand-additional-subtle
brand-additional-weak

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.

default
strong hover
strong pressed
strong selected

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.

transparent weak hover
transparent weak hover
transparent weak pressed
transparent weak selected

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)
Blade Komponens Props:

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ött
placeholder - Helyettesítő szöveg, amikor nincs kiválasztva semmi
options - 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ése
multipleType - 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éhez
leadingIcon - Ikon megjelenítése a trigger elején
dropdownWidth - 'auto' esetén a dropdown szélessége alkalmazkodik a tartalomhoz
dropdownPosition - 'top' esetén a dropdown felfelé nyílik
dropdownAlign - '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-placeholder
  • data-multiple-type
  • data-dropdown-width
  • data-dropdown-position
Option elemen:
  • data-icon
  • data-trailing-icon
  • data-subtitle
  • data-link
  • data-[tetszőleges-role]
Eltávolítás:
  • data-remove-[role-név]
Data Attribútumok Konfigurálása:

A <select> elemen:
Ezek az attribútumok a teljes komponens viselkedését szabályozzák.
data-placeholder - Placeholder szöveg
data-multiple-type - Többszörös kiválasztás típusa ('list' vagy 'tag')
data-dropdown-width - 'auto' esetén tartalomhoz igazodó szélesség
data-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 neve
data-subtitle - Alcím szöveg az opció alatt
data-role Rendszer

A három elem kapcsolata:
  1. data-role="[role-név]"
  2. data-placeholder-role-[role-név]="[__MASK__]"
  3. Template-ben: "[__MASK__]"

Elérhető role-ok:
  • trigger-text
  • icon
  • trailing-icon
  • text
  • subtitle
  • tag
  • link
  • + tetszőleges egyéni role
A Data-Role Rendszer Működése - Részletesen:

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-tooltip
Fontos: 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:
  • triggerTemplateId
  • dropdownTemplateId
  • optionTemplateId
  • tagTemplateId
  • tagsContainerTemplateId
  • mobileNative
  • multipleType
  • cleanupTemplate
JavaScript Inicializálás Blade Nélkül:

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 és id attribútum
  • Ha nincs megadva template ID, automatikusan generálódik a select ID/name alapján
  • A template-ekben használt data-role és data-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. A destroy() híváskor automatikusan tisztítódik a memória. Kikapcsolása csak debug/fejlesztés céljából ajánlott.

Select Input példák

További Select példák, különböző konfigurációkkal

(Kötelező)

Interaktív Tesztek

JS oldalról létrehozva

Code Input

Code Input alkalmazása

Blade komponens
x-pds.form-control.code-input
  • name
  • label
  • readonly
  • error-messages
  • (warning-messages)
  • (info-messages)
  • (success-messages)
Kódbeviteli mező 4 karakteres kód (pl. PIN, verifikációs kód) beírására. Automatikusan továbbugrik a következő mezőre karakter beírásakor, támogatja a paste műveletet, és Backspace-szel visszalépést tesz lehetővé.
Additional properties
  • additional-info
  • additional-is-inverse
  • additional-icon
  • additional-title
  • additional-btn
  • additional-callback
Opcionális kiegészítő információk megjelenítésére szolgáló property-k. Segítő szöveg, ikon, cím és egyéni művelet hozzáadására alkalmasak.
JavaScript osztály
DsCodeInput
  • constructor(target)
  • _rootElement
  • _setValue(value)
  • _dsInstance
  • destroy()
constructor(target): Inicializálja a komponenst. A 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.
Events és funkciók
Events:
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

This is an additional description
This is an error message

Form Controls

Input - Basic


(Nem kötelező)
(Kötelező)
Nem valid a mező tartalma
vagy bármi error van

Input - Leading


(Nem kötelező)
(Kötelező)
Nem valid a mező tartalma
vagy bármi error van

Input - Trailing icon


(Nem kötelező)
(Kötelező)
Nem valid a mező tartalma
vagy bármi error van

Trailing button alkalmazása


trailing-button
  • trailing-button="button-name"
  • trailing-button-color
  • trailing-button-variant
Alapvető beállítások
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
Click eseménykezelés
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
Komplex használati esetek
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


Alapvető beállítások
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.
(Kötelező)
A jelszó túl rövid
Legalább 8 karakter szükséges

Input - Tooltip info help


Input - Addon info help


Ez egy rövid leírás kicsi információval
Kiegészítés Lehet itt ikon, gomb, cím, stb.

Input - Inverse addon info help


A megjegyzés lehet kiemelt, inverse színekkel.
Kiegészítés A megjegyzés lehet kiemelt, inverse színekkel.

Textarea


Laravel komponensek

Ez egy hiba üzenet
100

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
A 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
  • name
  • label
  • value
  • checked
  • disabled
  • required
  • error
  • size
  • type
  • class
Ez a checkbox (jelölőnégyzet) komponens, amely kiválasztásra/bepipálásra használható.
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ő


kötelező kitölteni

Checkbox - További állapotok


Switch komponens dokumentáció


ds-switch class
  • ds-switch-[size]
  • ds-invalid
A 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
  • name
  • label
  • checked
  • disabled
  • required
  • error
  • size
  • class
Ez a switch (kapcsoló) komponens, amely ki/be kapcsolásra használható.
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ő


A kapcsoló bekapcsolása kötelező

Switch - Használati példa szöveggel


Szöveg Mindig használj magyarázó szöveget a switch-ek esetén.
Méretek md, sm

Radio Group komponens dokumentáció


ds-radio-group class
  • ds-invalid
A 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
  • name
  • options
  • error
  • disabled
  • required
  • readonly
  • size
  • class
Ez a radio csoport komponens, amely több radio elemet kezel egyként. Automatikusan létrehozza az egyedi radio elemeket az options tömb alapján.
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
Összességében a 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.
  • name
  • id
  • value
  • label
  • size
  • checked
  • disabled
  • required
  • error
  • class

Á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):
Kérjük válasszon egyet a lehetőségek közül.
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]
Összességében a 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
  • type
  • size
  • icon
Ez az önálló komponens, itt nem kell definiálni az ikont dekorátorral, és egyedileg beállítani a hozzá tartozó méretet, hanem elég az alapvető adatokat átadni.
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

undefined
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

Icons (Untitled Icons)

@dsIcon direktíva strukturúrája


@dsIcon('icon-name')
Itt adjuk át az ikon nevét, amit meg szeretnénk jeleníteni, ez az untitled-ui-icons library-t használja.
@dsIcon('icon-name', [...args])
Ezeket az attribútumokat adhatjuk meg a dsIcon direktívának,
hogy testre szabhassuk az ikont: class variant size light
[class => 'custom-class']
Ide bármilyen egyedi class-t megadhatunk.
[variant => 'selected-variant']
  • line
  • solid
Itt lehet megadni, hogy vonalas (line) vagy kitöltött (solid) ikont szeretnénk használni. Alapértelmezetten line, így ezt nem kell átadni.
[size => 'selected-size']
  • default
  • tiny
  • sm
  • lg
Itt a következő értékeket adhatjuk meg: default tiny sm lg Alapértelmezeten, ha nem adunk át más értéket, akkor a default érték lesz érvényben.
[light => boolean]
a [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
Itt a következő értékeket adhatjuk meg:
  • hoverIcon - amennyiben meg van adva, akkor hover esetén ez jelenik meg
  • hoverColor - 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 animated a 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ó

- Alap ikon hover konfigurációval
- .toggle class
- .ds-icon-hover-disabled class
- .toggle + .ds-icon-hover-disabled class

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ó

- Csak az ikon (cursor öröklődik)
- A hover ki van kapcsolva de toggle classal átállítható.
- ds-icon-trigger (ez az elem kapcsolja át)
- ds-icon-hover-disabled + animáció (ha triggereljük a toggle classal, akkor érdemes a hover-t disabled-re állítani)

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ó

- default
- 'animated' => false/ 'false'
- 'animated' => 'flip-x'
- 'animated' => 'flip-y'
- 'animated' => 'swipe-left'
- 'animated' => 'swipe-right'
- 'animated' => 'swipe-up'
- 'animated' => 'swipe-down'
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éret
  • active - aktív állapot
  • disabled - letiltott állapot
  • type - típus
  • icon - vezető ikon
  • trailingIcon - záró ikon
  • subtitle - alcím
  • ariaControls - ARIA attribútum
A List Item egy interaktív listaelem komponens, amely különböző méretekben, állapotokban és ikonokkal használható. A komponens button elemként renderelődik, támogatja az aktív és letiltott állapotokat, valamint opcionális vezető és záró ikonokat.
Komponens props
  • iconConfig - ikon konfiguráció
  • class - CSS osztályok
  • href - link cél
Méretek:
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 elem
selected - 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 slot
trailingIconSlot - egyéni záró ikon slot
additional - 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
  • id
  • type (basic | alt)
  • position (center | right | fullscreen)
  • content
Megjelenés és tartalom
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, showFooter
  • closeIcon
  • navigationIcon
  • title, subtitle
  • footer slot
Elemek és vezérlők
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
  • scrollable
  • closeable
Görgethetőség és bezárás
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
Példák
  • <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
HTML indítók és vezérlők
  • data-ds-modal-target: azon id, 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
Programozott vezérlés
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
Böngésző események
A modál elemen ( [data-ds-modal-id="…"] ) a következő egyedi események érhetők el:
  • modal:open – megnyitáskor
  • modal:close – bezáráskor
  • modal:navigation – navigációs ikon kattintásakor
Feliratkozás példa: 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


Modal ID (opcionális, ha nincs generálódik egy egyedi id)
Pozíció
Cím (title)
Alcím (subtitle)
Tartalom (HTML megengedett)
Footer (HTML megengedett)

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
A lapozó komponens oldalszámozást biztosít lista vagy táblázat jellegű tartalomhoz. Használható manuális oldalkezeléssel (current/total megadásával) vagy Laravel paginator objektummal, amely automatikusan generálja a linkeket is.

Alapvető használat:
<x-pds.pagination :current="1" :total="10" />

Laravel paginator használatával:
<x-pds.pagination :paginator="$users" />
size paraméter
  • sm
  • md
  • lg
A lapozó három méretben érhető el, amelyek meghatározzák az oldalszám gombok és navigációs nyilak magasságát és szélességét.

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
Kompakt módban a lapozó egyetlen dropdown menüben jeleníti meg az összes oldalt, amely [aktuális]/[összes] formátumban látható. Ez különösen hasznos mobil nézetben vagy szűk helyen.

Példa kompakt módra:
<x-pds.pagination :current="5" :total="20" :compact="true" />
:visible paraméter
Meghatározza, hogy az aktuális oldal körül hány oldalszám jelenjen meg egyidejűleg (az első és utolsó oldal mindig látható). Ha több oldal van, "..." dropdown menü jelenik meg, amelyből a rejtett oldalak kiválaszthatók.

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
A komponens 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
  • variant
  • name
  • class
  • animation
  • hasQuery
  • query

x-pds.segmented-control.item
  • key
  • active
  • icon
  • iconColor
  • iconVariant
  • disabled
  • onclick
  • badgeContent
  • badgeType
  • badgeBgColor
  • badgeTextColor
A segmented control 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ó

Első opció tartalma
Második opció tartalma
Harmadik opció tartalma

Segmented Control típusok


Default:
Fill:
Equal:
Fill Equal:
Animáció nélkül:

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").

Alapértelmezett query név (segment):
Áttekintés tartalom (URL query: ?segment=overview)
Részletek tartalom (URL query: ?segment=details)
Beállítások tartalom (URL query: ?segment=settings)
Egyedi query név (tab):
Kezdőlap tartalom (URL query: ?tab=home)
Profil tartalom (URL query: ?tab=profile)
Üzenetek tartalom (URL query: ?tab=messages)

Semantic Card

Semantic Card alkalmazása


x-pds.semantic-card
  • type
  • title
  • description
  • icon
  • compact
  • class
A semantic card 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.
Bezárhatóság
  • closeable
  • closeCallback
  • closeId
A 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).
Műveleti lehetőségek
  • actionLabel
  • action
  • action2Label
  • action2
  • linkLabel
  • link
  • link2Label
  • link2
  • <actionSlot>
A műveleti sávban 3 opcióra van lehetőség, valami (js) eseményt végrehajtani, linkre navigálni, vagy pedig saját template-t megadni. Ha nem adunk meg semmit, akkor nem jelenik meg a műveleti sáv.
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.
Műveleti lehetőségek
  • helpLabel
  • tooltip
  • helpTrigger
Ha egy extra segítő információs réteget is szeretnénk, akkor a 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

shadow-xs shadow-sm shadow-md shadow-lg shadow-xl shadow-focus

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]
Így határozzuk meg a padding-et, általánosan, bizonyos oldal vagy irány alapján. A level helyére a fentebb felsorolt értékeket kell behelyettesíteni.
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]
Így határozzuk meg a margin-t, általánosan, bizonyos oldal vagy irány alapján. A level helyére a fentebb felsorolt értékeket kell behelyettesíteni.
Gap
  • ds-gap-[level]
Így határozhatjuk meg a gap-et, ha 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


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
0px
zero
0px
2px
4xs
2px
4px
3xs
2px
8px
2xs
4px
12px
xs
8px
16px
sm
12px
20px
md
16px
24px
lg
20px
32px
xl
24px
40px
2xl
32px
48px
3xl
40px
56px
4xl
40px
64px
5xl
48px
72px
6xl
56px
96px
7xl
64px
104px
8xl
72px
128px
9xl
72px
0
2
4
8
12
16
20
24
32
40
48
56
64
72
96
104
128
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

Gap példák


zero
zero
4xs
4xs
3xs
3xs
2xs
2xs
xs
xs
sm
sm
md
md
lg
lg
xl
xl
2xl
2xl
3xl
3xl
4xl
4xl
5xl
5xl
6xl
6xl
7xl
7xl
8xl
8xl
9xl
9xl
0
0
2
2
4
4
8
8
12
12
16
16
20
20
24
24
32
32
40
40
48
48
56
56
64
64
72
72
96
96
104
104
128
128
zero
zero
4xs
4xs
3xs
3xs
2xs
2xs
xs
xs
sm
sm
md
md
lg
lg
xl
xl
2xl
2xl
3xl
3xl
4xl
4xl
5xl
5xl
6xl
6xl
7xl
7xl
8xl
8xl
9xl
9xl
0
0
2
2
4
4
8
8
12
12
16
16
20
20
24
24
32
32
40
40
48
48
56
56
64
64
72
72
96
96
104
104
128
128

Tab

Tab alkalmazása

.ds-tab class / komponens
  • .ds-tab-item
  • .active
  • .ds-tab-sm
Horizontálisan görgethető fül (tab) komponens osztálya, amely automatikus scroll-kezelést és aktív elem jelzést biztosít. A tab elemek kattintásra aktiválódnak, és a komponens automatikusan gondoskodik az aktív elem láthatóságáról.
x-pds.tab Blade komponens
  • size
  • icon
  • disabled
A Tab komponens automatikusan inicializálódik és kezeli a kattintásokat, görgetést és az aktív állapotot. Minden kattintáskor 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áfia
default (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
  • icon
  • iconConfig
  • class
  • disabled
Egyedi tab elem (fül), amely a .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 meg
iconConfig - 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

Default (md)
sm

Amikor nem fér ki széltében

Default (md)
sm

Modalban (mobil tesztelhetőség miatt)

Tags

Tag komponens használata


Alap beállítások
  • color
  • size
  • content
  • customClass
Megjelenés és tartalom
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
  • activeState
  • activeSubtle
  • actionType
Interakció
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 + iconVariant
  • closeIcon + closeIconVariant
Elő- és bezáró ikonok
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
  • id
  • wrapperId
Egyediség és elhelyezés
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
Adat átadás
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
Hozzáférhetőség
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
Böngésző 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
Példák
  • <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
Javascrpitel így lehet létrehozni a tag-et:
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
  • init
  • configWrapper
  • show
A toast üzenetekhez ezt a laravel komponenst kell implementálni.
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()
  • position
  • stack
  • offset
  • elevation
  • +1: force-init
A már létrehozott wrapper konfigurálására használható. Ezek a paraméterek adhatóak át a 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()
  • type
  • message
  • icon
  • closable
  • button
  • duration
Mivel a toast-ok valamilyen esemény hatására jelennek meg, ezért csak JS alkalmazásra van lehetőség.
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()
Kitörli az összes megjelenített toast üzenetet.

Toast típusok

Kattints a megjelenítéséhez

Toast Wrapper pozicionálás

Toast Wrapper pozicionálás

Tooltips

Tooltip attribútumok strukturája


data-tooltip
Az alap tooltip attribútum. Ez a tooltip szövegét tartalmazza.
data-tooltip-placement
A tooltip pozíciója a trigger elemhez képest. Lehetőségek: top, bottom, left, right, valamint a start és end és ezek kombinációi (top-start, top-end, stb.). Alapértelmezett: top.
data-tooltip-title
Opcionális cím a tooltip tetejére.
data-tooltip-html
Boolean attribútum . Ha meg van adva, a tooltip tartalma HTML-ként kerül feldolgozásra. Linkek, formázások (<strong>, <em>) támogatottak.
data-tooltip-closeable
Boolean attribútum . Ha meg van adva, a tooltip klikkelésre jelenik meg és X gombbal zárható be. Hover helyett click trigger.
data-tooltip-btn
+ kapcsolódó attribútumok
Action button szövege. Ha meg van adva, automatikusan closeable lesz a tooltip és megjelenik egy 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)
    Mindkettő ugyanazt csinálja, csak más névvel. Tetszés szerint használható.
  • data-tooltip-btn-close - Ha "false", nem záródik be a tooltip a gomb után (alapértelmezett: "true")
data-tooltip-ellipsis
Boolean attribútum . Automatikus tooltip ellipsis szövegekhez. Ha a szöveg túlcsordul (text-overflow: ellipsis), automatikusan megjelenik a teljes szöveggel.
data-tooltip-trigger
Trigger mód: hover (alapértelmezett) vagy click. Closeable tooltip-ok automatikusan click trigger-t használnak.
data-tooltip-theme
Jelenleg nem implementált. Jövőbeli light/dark téma támogatáshoz.

JavaScript API


pds.tooltip.attach()
Programatikus tooltip hozzáadása elemhez.
pds.tooltip.attach(element, content, options)
Options objektum:
  • placement - Pozíció
  • title - Cím
  • html - HTML tartalom engedélyezése
  • closeable - Bezárható-e
  • buttonText - Action button szövege
  • buttonCallback - Action button funkciója
  • buttonClose - Bezáródjon-e button után (default: true)
pds.tooltip.detach()
Tooltip eltávolítása elemről.
pds.tooltip.detach(element)
pds.tooltip.scan()
Automatikus tooltip inicializálás container-ben található data-tooltip attribútumokhoz.
pds.tooltip.scan(containerElement)
pds.tooltip.scanEllipsisTooltips()
Ellipsis tooltip-ok automatikus inicializálása container-ben.
pds.tooltip.scanEllipsisTooltips(containerElement)
100px
Ez egy nagyon hosszú szöveg, ami nem fér ki és ezért ellipsisszel rövidül le, de tooltip-ban megjelenik a teljes szöveg. Ha kifér, akkor nem jelenik meg a tooltip.

Typography (figma)

Display


Display1
Display2
Display1
Display2

Display Body


Display body
Display body bold
Display body
Display body bold

Heading (ds-heading-1,...)


Heading 1
Heading 2
Heading 3
Heading 4
Heading 1
Heading 2
Heading 3
Heading 4

Heading (h1,..)


Heading 1

Heading 2

Heading 3

Heading 4

Heading 1

Heading 2

Heading 3

Heading 4

Body text


Body 1
Body 2
Body 3
Body 4
Body 5
Body 1
Body 2
Body 3
Body 4
Body 5

Body bold text


Body 1 bold
Body 2 bold
Body 3 bold
Body 4 bold
Body 5 bold
Body 1 bold
Body 2 bold
Body 3 bold
Body 4 bold
Body 5 bold

Body link text


Body bold link text


Label



Label 1

Label 2

Label 1 bold

Label 2 bold

Label 1

Label 2

Label 1 bold

Label 2 bold

Action


Action 1
Action 2
Action 3
Action 1
Action 2
Action 3