Skip to main content

View Yapısı

Bu sayfa view.json dosyasının yapısını, bileşen hiyerarşisini ve binding sistemini açıklar.

view.json Dosyasının Anatomisi

Bir view dosyasının kök seviyesi şu alanlardan oluşur:

{
"$schema": "https://amorphie.io/meta/view-vocabulary/1.0",
"dataSchema": "urn:amorphie:res:schema:customer:registration-form",
"lookups": ["branchDetail"],
"uiState": {
"showConfirmDialog": false
},
"view": { ... }
}
AlanZorunluAçıklama
$schemaEvetView vocabulary sürümü — her zaman bu değer olmalı
dataSchemaEvetBu view'ın bağlı olduğu schema'nın URN adresi
lookupsHayırView açılışında önceden yüklenecek lookup adları (bkz. Data Akışı)
uiStateHayırDialog açık/kapalı gibi saf UI durumları için başlangıç değerleri
viewEvetKök bileşen — tüm UI ağacının başlangıç noktası

Bileşen Ağacı Mantığı

View bir ağaç yapısıdır. Her bileşen type ve isteğe bağlı children içerir. children kendi içinde başka bileşenler barındırabilir — bu özyinelemeli yapı derinlemesine iç içe geçmeye izin verir.

ScrollView
└── Column
├── Text (başlık)
├── Card
│ └── Column
│ ├── TextField (firstName)
│ ├── TextField (lastName)
│ └── Dropdown (city)
├── Component (branch-selection)
└── Row
├── Button (iptal)
└── Button (kaydet)

Temel Binding: bind

Bir input bileşenini schema'daki bir alana bağlamak için bind kullanılır:

{ "type": "TextField", "bind": "firstName" }

bind sayesinde Renderer otomatik olarak şunları yapar:

  • Schema'dan x-labels okuyarak label'ı gösterir
  • Validasyon kurallarını (minLength, pattern, format…) uygular
  • Hata mesajlarını (x-errorMessages) gösterir
  • x-conditional kurallarına göre alanı gösterir/gizler/etkinleştirir/devre dışı bırakır
  • Alanın değerini form verisine yazar ve okur

İfade Sistemi

bind dışında, bileşenlerin content, showIf, source gibi değerlerinde dinamik ifadeler kullanılabilir. İfadeler $ ile başlar:

İfadeKaynakKullanım Örneği
$form.fieldNameKullanıcının doldurduğu form verisi"content": "$form.selectedBranchName"
$instance.fieldNameBackend'den gelen mevcut kayıt"content": "$instance.customerId"
$param.fieldNameÜst bileşenden gelen parametre"source": "$param.cityCode"
$lov.fieldNameLOV listesi (dizi)"source": "$lov.branchCode"
$lookup.fieldName.propLookup tekil kayıt"content": "$lookup.branchDetail.address"
$ui.keyuiState değeri"showIf": {"field": "$ui.showDialog"}
$item.propForEach döngüsünde aktif öğe"content": "$item.display"
$schema.fieldName.labelAlan etiketi"content": "$schema.city.label"
$context.langAktif dil kodu

Örnek: ForEach içinde ifade kullanımı

{
"type": "ForEach",
"source": "$lov.branchCode",
"as": "branch",
"template": {
"type": "Card",
"children": [
{ "type": "Text", "content": "$item.display" },
{ "type": "Text", "content": "$item.address" }
]
}
}

Bileşen Kataloğu

Layout Bileşenleri

Diğer bileşenleri düzenlemek için kullanılır, kendi başlarına görsel içerik üretmezler.

BileşenAçıklamaTemel Özellikler
ColumnAlt bileşenleri dikey dizergap, crossAxisAlignment
RowAlt bileşenleri yatay dizergap, mainAxisAlignment, crossAxisAlignment
ExpandedRow/Column içinde mevcut alanı kaplar
ScrollViewİçeriği kaydırılabilir yapardirection (vertical/horizontal)
Centerİçeriği ortalar
WrapSığmayan bileşenleri alt satıra taşırspacing, runSpacing
SpacerBoşluk bırakırsize
StackAlt bileşenleri üst üste konumlandırır
GridIzgara düzenicolumns, gap

Gap değerleri: xs · sm · md · lg · xl


Container (Kapsayıcı) Bileşenleri

Görsel gruplamayı ve navigasyonu sağlar.

BileşenAçıklama
Cardİçeriği kartlı çerçevede gösterir; variant: elevated, filled, outlined
ExpansionPanelAçılır/kapanır panel; title ile başlık
StepperAdım adım ilerleme göstergesi
TabViewSekme navigasyonu; tabs dizisiyle tanımlanır
DialogModal dialog; uiState ile açılır/kapanır
BottomSheetAlttan açılan panel
SideSheetYandan açılan panel
CarouselKaydırmalı kart görünümü

Input Bileşenleri

Kullanıcıdan veri almak için kullanılır. Tümü bind ile bir schema alanına bağlanır.

BileşenAçıklamaNe Zaman Kullanılır
TextFieldTek satırlı metin girişiAd, soyad, kimlik no vb.
TextAreaÇok satırlı metin girişiAdres, açıklama
NumberFieldSayı girişiGelir, miktar
DropdownAçılır seçim listesiLOV olan her alan
RadioGroupSeçenek grubu (tek seçim)Cinsiyet, müşteri tipi
CheckboxOnay kutusuKVKK, rıza
SwitchAçma/kapama düğmesiTercihler
DatePickerTarih seçiciDoğum tarihi, başlangıç tarihi
TimePickerSaat seçiciRandevu saati
SliderKaydırmalı sayı seçiciYüzde, aralık
SegmentedButtonSegmentli buton (tek seçim)Filtre seçenekleri
SearchFieldArama girişi + filtrelemeArama kutuları
AutoCompleteOtomatik tamamlamaŞehir arama vb.

Görüntüleme Bileşenleri

Salt okunur içerik gösterir.

BileşenAçıklamaTemel Özellikler
TextMetin — content ile içerik, variant ile boyutvariant: displayLargelabelSmall
IconMaterial Symbols ikonuname, size
ImageResimsrc, width, height, fit
ChipKüçük etiket/rozetlabel, variant
BadgeSayısal bildirim rozeticount
ProgressIndicatorYükleme göstergesitype: linear, circular
ListTileİkon + başlık + alt başlık satırıleading, title, subtitle, trailing
AvatarProfil avatarıname, src, size
RichTextHTML/Markdown içerikcontent
DividerAyraç çizgisi

Text Variant'ları (büyükten küçüğe): displayLarge · displayMedium · displaySmall · headlineLarge · headlineMedium · headlineSmall · titleLarge · titleMedium · titleSmall · bodyLarge · bodyMedium · bodySmall · labelLarge · labelMedium · labelSmall


Aksiyon Bileşenleri

BileşenAçıklamaTemel Özellikler
ButtonButonlabel, variant (filled/outlined/text/elevated/tonal), action, command, icon
IconButtonİkon butonicon, action
FABFloating Action Buttonicon, label, variant (small/regular/large/extended), action

Kontrol Bileşenleri

BileşenAçıklama
ForEachDizi üzerinde döngü — source, as, template ile kullanılır
ComponentBaşka bir schema+view çiftini dahil eder — ref, bind ile kullanılır

Card ve Button Variant Referansı

Card variant

DeğerGörünüm
elevatedGölgeli, beyaz arka plan (varsayılan)
filledDolu arka plan rengi
outlinedÇerçeveli, saydam arka plan

Button variant

DeğerGörünümKullanım
filledDolu, primary renkAna eylem (kaydet, ilerle)
outlinedÇerçeveliİkincil eylem (iptal, geri)
textÇerçevesizÜçüncül eylem
elevatedGölgeli, beyazÖne çıkarılmış eylem
tonalHafif renkli arka planOrta önem eylemleri

Sonraki Konular