Olobase Admin girdi bileşenleri, mevcut API kaynak nesnesinin belirli özelliklerinin düzenlenmesine olanak tanır. Temel olarak görünüm oluşturmak ve düzenlemek için form'larda kullanılır. VaList için filtre girişi olarak da kullanılabilir. Kaynak desteği için, öğe eklemeyi ve hata mesajlarıyla model sağlamayı işleyen VaForm bileşeni içinde kullanılması gerekir.
Va girdileri hem kaynak hem de model desteğini destekler. Kaynak, değerin getirileceği orijinal özellik nesnesidir ve model, veri sağlayıcınıza gönderilecek yeni değerle birlikte son özellik adı olacaktır.
Olobase Admin girişleri kaynak desteği için nokta gösterimini kabul eder. İçiçe nesne için çok kullanışlıdır:
<template>
<va-text-input source="address.street"></va-text-input>
<va-text-input source="address.postcode"></va-text-input>
<va-text-input source="address.city"></va-text-input>
</template>
Yukarıdaki örnekte görüldüğü gibi doğrudan adres nesnesinin sokak özelliğinin değerini alınıyor. Veri sağlayıcınıza gönderilecek son form model verileri de bu iç içe geçmiş yapıya uygundur.
Bu bölümde packages/admin/src/components/ui/inputs klasöründeki Olobase Admin girdi bileşenlerine değinilecektir.
Temel metin girişi yoluyla metin değeri türü için metin düzenler. Çok satırlı destek aracılığıyla uzun metinler için textarea modunu destekler. Herhangi bir tarih, tarihsaat veya saat düzenlemesi için kullanılabilir; tarih, tarihsaat-yerel veya saate göre ayarlanan türü kullanın. İşlem tarayıcı desteğine bağlı olacaktır.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
type | string |
Metin girişi türü. Tüm HTML türlerine izin verilir. |
multiline | boolean |
Metin girişini textarea'ya dönüştürün. |
variant | string |
Bileşene farklı stiller uygular (outlined, plain, underlined, solo, filled, solo-filled, solo-inverted). |
Örnek
<template>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-text-input :label="$t('demo.text')" source="founder"></va-text-input>
</v-col>
<v-col lg="3" md="4" sm="6">
<va-text-input :label="$t('demo.text')" source="headquarter"></va-text-input>
</v-col>
</v-row>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-text-input :label="$t('demo.text')" source="description" multiline></va-text-input>
</v-col>
</v-row>
</template>
Şifre alanları için kullanılır. Geçerli giriş için gösterme/gizleme davranışı vardır.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
variant | string |
Bileşene farklı stiller uygular (outlined, plain, underlined, solo, filled, solo-filled, solo-inverted). |
Örnek
<template>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-password-input label="Password" source="password"></va-password-input>
</v-col>
</v-row>
</template>
Sayı düzenleme için optimize edilmiştir. Min, max ve step özelliklerini destekler.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
v-model | string |
Düzenlenecek metin. |
variant | string |
Bileşene farklı stiller uygular. (outlined, plain, underlined, solo, filled, solo-filled, solo-inverted). |
step | number |
Aralık adımı. |
min | number |
Kabul edilen minimum değer. |
max | number |
Kabul edilen maksimum değer. |
Örnek
<template>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-number-input source="level" label="Level" :step="1" :min="0" :max="99"></va-number-input>
</v-col>
</v-row>
</template>
Tarih türü değerini düzenlemek için kullanılır. Vuetify tarih seçiciyle ilişkili salt okunur bir metin alanından oluşur. Zamanı değerini desteklemez, bu durum için klasik VaTextInput'u kullanın.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
header | string |
Başlık altında gösterilen bölüme bir metin yazmanızı sağlar. Varsayılan değer boş. |
format | string |
Kullanılacak tarih formatı. Örneğin: (dd-mm-YYYY). |
allowedDates | function , array |
Hangi tarihlerin seçilebileceğini kısıtlar. |
color | string |
Belirtilen rengi bileşene uygular - yardımcı renkleri (örneğin success veya purple) veya css rengini (örneğin success veya purple) veya css rengini (#033 veya rgba(255, 0, 0, 0,5)) gibi destekler. Varsayılan değer: primary. |
elevation | string , number |
Bileşene 0 ile 24 arasında uygulanan bir yüksekliği belirtir. Daha fazla bilgiyi yükseklik sayfasında bulabilirsiniz. |
hideHeader | boolean |
Bileşenin başlık bölümünü tamamen gizler (Varsayılan: false). |
height | string , number |
Bileşenin yüksekliğini ayarlar. |
width | string , number |
Bileşenin genişliğini ayarlar. |
max | string , number , date |
İzin verilen maksimum tarih/ay (ISO 8601 biçimi). |
maxHeight | string , number |
Bileşenin maksiumum yüksekliğini ayarlar. |
maxWidth | string , number |
Bileşenin maksiumum genişliğini ayarlar. |
min | string , number , date |
İzin verilen minumum tarih/ay (ISO 8601 biçimi). |
minHeight | string , number |
Bileşenin minumum yüksekliğini ayarlar. |
minWidth | string , number |
Bileşenin minumum genişliğini ayarlar. |
multiple | boolean |
Birden fazla tarih seçimine izin ver. |
position | boolean |
Bileşenin konumunu ayarlar. (static, relative, fixed, absolute, sticky). |
rounded | string , number , boolean |
Bileşene uygulanan kenar yarıçapını belirtir. |
showAdjacentMonths | boolean |
Önceki ve sonraki ayların günlerinin görünürlüğünü değiştirir. |
showWeek | boolean |
Takvimin gövdesindeki hafta numaralarının görünürlüğünü değiştirir. |
hideActions | boolean |
Seçme eylemlerini gizler. |
hideWeekdays | boolean |
Hafta içi günleri gizler. |
inputPlaceholder | string |
Girdiye ait placeholder değerini atar. |
variant | string |
Bileşene farklı stiller uygular (outlined, plain, underlined, solo, filled, solo-filled, solo-inverted). |
viewMode | string |
Ay ya da yıl görünümü arasında geçiş sağlar (month, year). |
disabled | boolean |
Bileşene tıklama özelliğini kaldırır. |
Örnek
<template>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-date-input source="publishDate" label="Publish Date" format="shortFormat"></va-date-input>
</v-col>
</v-row>
</template>
Boolean girdi türüne değer boolean ya da 0/1 olarak gönderildiğinde girdi bir düğme olarak gösterilir.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
Örnek
<template>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-boolean-input source="active" label="Active"></va-boolean-input>
</v-col>
</v-row>
</template>
Sayı değerini derecelendirme yıldızları olarak düzenleyin. Yarım artışlar etkinse değer geçerli bir tam sayı veya ondalık sayı olmalıdır. Simgeler, Vuetify ayarlarında $ratingFull, $ratingEmpty ve $ratingHalf aracılığıyla düzenlenebilir.
Mixinler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
active-color | string |
Bileşene etkin durumdayken uygulanan renk. |
clearable | boolean |
Geçerli değere tıklanarak bileşenin temizlenmesine olanak sağlar. |
color | string |
Belirtilen rengi denetime uygular |
density | string |
Bileşenin kullandığı dikey yüksekliği ayarlar. (default, comfortable, compact). |
disabled | boolean |
Bileşene tıklama özelliğini kaldırır. |
empty-icon | string , array , function |
Boş olduğunda görüntülenen simge. |
full-icon | string , array , function |
Dolu olduğunda görüntülenen simge. |
half-increments | boolean |
Yarım artışların seçimine izin verir. |
hover | boolean |
Görsellik sağlar simgelerin üzerine gelindiğinde geri bildirim. |
item-aria-label | string |
Öğe etiketlerinin ayarlar. |
item-label-position | string |
Öğe etiketlerinin konumu 'top' ve 'bottom'ı kabul eder. |
item-labels | array |
Her öğenin yanında görüntülenecek etiket dizisi. |
length | string , number |
Gösterilecek öğe miktarı |
model-value | string , number |
Bileşenin v-model değeri. Bileşen çoklu desteği destekliyorsa, bu varsayılan olarak boş bir diziye dönüşür. |
name | string |
Bileşenin ad özelliğini ayarlar. |
readonly | boolean |
Tüm fareyle üzerine gelme efektlerini ve işaretçi olaylarını kaldırır. |
size | string , number |
Bileşenin yüksekliğini ve genişliğini ayarlar. Varsayılan birim pikseldir. (x-small, small, default, large, x-large). |
Örnek
<template>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-rating-input source="rating" length="10" half-increments></va-rating-input>
</v-col>
</v-row>
</template>
Tiptap kullanarak bir Wysiwyg HTML editörü oluşturur.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
Örnek
<template>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-rich-text-editor
:label="$t('demo.richtext')"
source="richtext"
v-model="model.richText"
:active-buttons="[
'bold',
'italic',
'strike',
'underline',
'code',
'h1',
'h2',
'h3',
'bulletList',
'orderedList',
'blockquote',
'codeBlock',
'horizontalRule',
'undo',
'redo',
]"
>
</va-rich-text-editor>
</v-col>
</v-row>
</template>
Tiny MCE GPL lisansını kullanarak bir Wysiwyg HTML editörü oluşturur.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
Örnek
<template>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-tiny-mce-editor
:options="{ min_height: 250 }"
v-model="model.richText"
>
</va-tiny-mce-editor>
</v-col>
</v-row>
</template>
Bir seçim listesinden değer veya değerler seçmenizi sağlar. Çoklu seçimleri ve referansları destekler. Hiçbir seçenek yoksa, varsayılan olarak, src/I18n/locales/tr.json dosyasından kaynak içeren yerelleştirilmiş listeleri alabilir.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
reference | string |
Aranacak kaynağın adı |
variant | string |
Bileşene farklı stiller uygular. (outlined, plain, underlined, solo, filled, solo-filled, solo-inverted). |
multiple | boolean |
Çoklu seçimi aktif hale getirir. |
Örnek
<template>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-select-input
label="Select"
clearable
multiple
reference="employeegrades"
v-model="model.grades"
>
</va-select-input>
</v-col>
</v-row>
</template>
Burada açıklandığı gibi tüm yeniden kullanım seçeneklerini doğrudan yerel ayarlarınızda merkezileştirebilirsiniz. Hiçbir seçenek ayarlanmadıysa, VaSelectInput şu geçerli çevrilmiş anahtar biçimini arayacaktır: resources.{resource}.enums.{source}.{value}
Mevcut kaynak referansından seçim yapmak istiyorsanız referans opsiyonunu aşağıdaki gibi kullanın:
<template>
<va-select-input
source="companyId"
model="companyId"
reference="companies"
:filter="{ active: true }"
></va-select-input>
</template>
Yukarıdaki örnek tüm şirketleri api servisinden getirecek ve bunları seçenek olarak listeleyecektir. Filtreleme için filtre opsiyonunu kullanın. Arka uç tarafındaki şema adının kaynaktan farklı olması durumunda model seçeneğini kullanabilirsiniz. Aksi durumda bu seçeneği kullanmanız gerekli değildir.
Bir seçim alanını seçtikten sonra başka bir seçim alanını etkileşimli olarak değiştirmek istiyorsanız aşağıdaki örnekteki koda göz atın.
<va-select-input
source="companyId"
v-model="model.companyId"
reference="departments"
variant="outlined"
></va-select-input>
<va-select-input
source="departmentId"
:key="model.companyId"
:filter="{ companyId: model.companyId }"
v-model="model.departmentId"
reference="departments"
variant="outlined"
></va-select-input>
Bir seçim listesinden değer seçmenizi sağlar. Referansları destekler. Hiçbir seçenek yoksa, varsayılan olarak, src/I18n/locales/tr.json dosyasından kaynak içeren yerelleştirilmiş listeleri alabilir.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
reference | string |
Aranacak kaynağın adı. |
inline | boolean |
Seçenekleri yatay olarak gösterir. (Varsayılan: false). |
Örnek
<template>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-radio-group-input
clearable
label="Currencies"
v-model="model.radios"
reference="currencies"
>
</va-radio-group-input>
</v-col>
<v-col lg="3" md="4" sm="6">
<va-radio-group-input
clearable
inline
label="Currencies"
v-model="model.radios"
reference="currencies"
>
</va-radio-group-input>
</v-col>
</v-row>
</template>
Referanslar
Yukarıdaki ilgili VaSelectInput referans açıklamasının aynısı geçerlidir, çoklu seçenek desteklenmez.
Aranabilir seçenekler arasından değer veya değerler seçimi sağlar. Çoklu seçim ve referansları destekler. API servisinizden bağlantılı kaynakların aranmasına izin verir.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
variant | string |
Bileşene farklı stiller uygular. (outlined, plain, underlined, solo, filled, solo-filled, solo-inverted). |
reference | string |
Aranacak kaynağın adı. |
minChars | number |
Arama sorgusu başlatılmadan önce dokunulması gereken minimum karakterler. |
searchQuery | string |
API servisinizde arama yapmak için istek sorgusunun adı. (Varsayılan değer: "q") |
taggable | boolean |
Etiketlenebilir modu etkinleştirin. Otomatik tamamlamayı açılan kutuya dönüştürün. |
Slotlar
Ad | Açıklama |
---|---|
selection | Özel bir seçim görünümü tanımlayın. |
item | Özel bir öğe görünümü tanımlama. |
Örnek
<template>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-auto-complete-input
density="compact"
source="userId"
resource="employees"
reference="employees"
variant="outlined"
multiple
>
<template v-slot:chip="{ props, item }">
<v-chip v-if="item.raw.name"
class="cursor-pointer"
v-bind="props"
:text="item.raw.name"
>
{{ item.raw.name }}
</v-chip>
</template>
</va-auto-complete-input>
</v-col>
</v-row>
</template>
searchQuery ve minChars:
Arama yapmadan önce gereken minimum karakteri ve varsayılan olarak q olan sorgu arama parametre anahtarını yapılandırmak için minChars ve searchQuery'yi kullanın. Bu element GetList veri sağlayıcı yöntemini özel bir arama filtresiyle yeniden kullanacak.
Daha iyi performans için API sorgusunun aşırı alımını azaltmak amacıyla fields opsiyonunu kullanın.
taggable
Otomatik tamamlama, etiketlenebilir desteği etkinleştirdiğiniz anda birleşik giriş kutusu bileşenine dönüştürülecektir. Anında yeni etiketler oluşturmanıza olanak tanır.
Tek satır halinde dosya yüklemelerine izin verir. Bir veya birden fazla yüklemelerin her ikisi de aynı anda desteklenir. Yüklenen dosyaların önizlemesini göstermek için VaFileField veya VaImageField'ı bu elementle birlikte kullanın.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
variant | string |
Bileşene farklı stiller uygular. (outlined, plain, underlined, solo, filled, solo-filled, solo-inverted). |
itemValue | string |
Silinecek dosyaları tanımlamak için kimlik değerinin nereden alınacağını belirtir. (Varsayılan: "id"). |
accept | string |
Basit istemci tarafı doğrulaması için HTML5 `kabul etme` özelliğini ekler. |
base64 | boolean |
Yüklemenin base64 kodlama ile yapılmasını sağlar. |
tableName | string |
Veritabanında genel yükleme dosyalarının tutulduğu tablonun adı. |
download | boolean |
Tıkla ve dosya indir seçeneğini aktif eder. |
Örnek
<template>
<v-row no-gutters>
<v-col sm="3" class="mr-3">
<va-file-field
source="files"
:item="model"
action-type="download"
table-name="employeeFiles"
></va-file-field>
</v-col>
</v-row>
<v-row>
<v-col lg="3" md="4" sm="6">
<va-file-input
source="files"
table-name="employeeFiles"
></va-file-input>
</v-col>
</v-row>
</template>
Tablo biçiminde dizi olarak birden fazla veri girişine izin verir. Yeni veri ekleme, silme ve veri güncellemeyi destekler.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
class | String |
Dizi tablosu etrafını saran div elementinin html class niteliğine bir değer atar. |
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
title | string |
Dizi tablosunun başlığını belirler. |
headers | array |
Dizi tablosunun sütun başlıklarını belirlerir. |
fields | array |
Dizi tablosundan kullanılacak va-girdilerini yerleştirir. |
primaryKey | string |
Dizi'ye ait anahtar alan adını ayarlar. Bu ad arka uç taraflı doğrulama ve veritabanı kayıdı için gereklidir. |
errorMessages | array |
Atanan form doğrulama hatalarının gösterilmesini sağlar. |
Slotlar
Ad | Açıklama |
---|---|
top | İhtiyaç duyulduğunda dizi başlığına ait bölümü düzenler. |
bottom | Dizi tablosunun en alt bölümünü düzenler. |
headers | Dizi tablosuna ait sütunları özelleştirir. |
item.actions | Dizi tablosuna ait işlemler bölümünü özelleştirir. |
Olaylar
Array Table olayları form kaydetme aşamadından sonra sunucudan dönen yanıtları alarak buna göre aksiyon almanızı kolaylaştırır.
Olay Adı | Açıklama |
---|---|
save | Form satırı kayıt edildikten sonra silinen veriye ait nesneye erişmenizi sağlar. |
delete | Form satırı silindikten sonra silinen veriye ait nesneye erişmenizi sağlar. |
edit | Form satırı açıkken düzenlenen veriye ait nesneye erişmenizi sağlar. |
Örnek
<template>
<v-row no-gutters>
<v-col lg="8" md="12" sm="12">
<va-array-table-input
source="employeeChildren"
:title="$t('resources.employees.fields.employeeChildren')"
primary-key="childId"
:headers="headers"
:fields="fields"
:generate-uid="true"
>
<template v-slot:[`input.childName`]="{ field }">
<va-text-input
:key="field.source"
v-model="employeeChildrenForm.childName"
variant="outlined"
:error-messages="childNameErrors"
clearable
>
</va-text-input>
</template>
<template v-slot:[`input.childBirthdate`]="{ field }">
<va-date-input
:key="field.source"
v-model="employeeChildrenForm.childBirthdate"
variant="outlined"
:error-messages="childBirthdateErrors"
>
</va-date-input>
</template>
</va-array-table-input>
</v-col>
</v-row>
</template>
<script>
import { useVuelidate } from "@vuelidate/core";
import { required, maxLength, numeric } from "@vuelidate/validators";
import Utils from "vuetify-admin/src/mixins/utils";
import Resource from "vuetify-admin/src/mixins/resource";
import { provide } from 'vue'
export default {
props: ["id", "item"],
mixins: [Utils, Resource],
setup() {
let vuelidate = useVuelidate();
provide('v$', vuelidate)
return { v$: vuelidate }
},
data() {
return {
model: {
id: null,
employeeChildren: null,
},
employeeChildrenHeaders: [
{ key: "childName", width: "40%" },
{ key: "childBirthdate", width: "40%" },
{ key: "actions" },
],
employeeChildrenFields: [
{
source: "childName",
type: "text",
},
{
source: "childBirthdate",
type: "date",
},
]
};
},
validations() {
return {
// model: {},
employeeChildrenForm: {
childName: {
required,
},
childBirthdate: {
required,
}
}
}
},
created() {
this.model.id = this.generateId(this);
},
computed: {
employeeChildrenForm: {
get() {
return this.$store.getters[`${this.resource}/getRow`];
},
set(val) {
this.$store.commit(`${this.resource}/setRow`, val);
}
},
childNameErrors() {
const errors = [];
const field = "childName";
if (!this.v$["employeeChildrenForm"][field].$dirty) return errors;
this.v$["employeeChildrenForm"][field].required.$invalid &&
errors.push(this.$t("v.text.required"));
return errors;
},
childBirthdateErrors() {
const errors = [];
const field = "childBirthdate";
if (!this.v$["employeeChildrenForm"][field].$dirty) return errors;
this.v$["employeeChildrenForm"][field].required.$invalid &&
errors.push(this.$t("v.text.required"));
return errors;
},
},
}
</script>
Kesme ve küçültme seçenekleri ile kullanıcıya ait bir profil resminin oluşturulmasını kolaylaştırır.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
backgroundColor | string |
Arka plan rengini belirler. Varsayılan değer #ededed değeridir. |
defaultSrc | string |
Varsayılan olarak gösterilen resmi belirler. Varsayılan değer /src/assets/avatar_2x.png değeridir. |
setLabel | string |
Avatar ekleme işlemine ait tuşun etiketini belirler. |
delLabel | string |
Avatar silme işlemine ait tuşun etiketini belirler. |
Örnek
<template>
<v-row no-gutters>
<v-col sm="3" class="mr-3">
<va-avatar-input
source="avatarImage"
:set-label="$t('resources.account.fields.avatar.set')"
:del-label="$t('resources.account.fields.avatar.delete')"
>
</va-avatar-input>
</v-col>
</v-row>
</template>
Birinci seviyede alt alta gruplanmış checkbox input bileşenlerinin birlikte oluşturulmasını sağlar. Açılıp kapanma (toggle) özelliği, tüm girdilerin bir üst checkbox ile seçilebilmesi ve liste içinde arama gibi özellikler varsayılan olarak desteklenir.
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
disableSearch | boolean |
Üst kısımda çıkan arama özelliğini gizler/gösterir. (Varsayılan: false). |
disableFooter | boolean |
Alt kısımda çıkan sayfalama özelliğini gizler/gösterir. (Varsayılan: false). |
primaryKey | string |
Gruplama işlemleri için birincil anahatar adını belirler. |
itemsPerPage | string |
Sayfalama başına gösterilecek veri sayısını belirler. |
headers | array |
Sütun başlıklarını belirler. |
fields | string |
Sütun alanlarını belirler. |
initUrl | string |
Tüm listeyi getiren arka uç url adresini belirler. |
groupBy | string |
Girilen değere göre hangi sütunun gruplanacağını belirler. |
Örnek
<template>
<h2 class="h2 mb-4">
{{ $t("menu.permissions") }}
</h2>
<v-row no-gutters>
<v-col cols="6">
<va-check-list-input
source="rolePermissions"
:headers="headers"
:fields="fields"
primary-key="permId"
items-per-page="25"
:group-header="$t('resources.roles.fields.moduleName')"
group-by="moduleName"
init-url="/permissions/findAll"
>
</va-check-list-input>
</v-col>
</v-row>
</template>
<script>
import utils from "vuetify-admin/src/mixins/utils";
import { provide } from 'vue'
export default {
props: ["id", "item"],
mixins: [utils],
setup() {
let vuelidate = useVuelidate();
provide('v$', vuelidate)
return { v$: vuelidate }
},
data() {
return {
rolePermissions: [],
model: {
rolePermissions: null,
},
fields: [
{ source: "moduleName" },
{ source: "action" },
{ source: "route" },
{ source: "method"},
],
};
},
computed: {
headers() {
return [
{
key: "moduleName",
sortable: false,
},
{
key: "action",
sortable: false,
},
{
key: "route",
sortable: false,
},
{
key: "method",
sortable: false,
},
];
}
}
}
</script>
HEX renk kodlarının seçilmesini kolaylaştıran bileşeni oluşturur.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
color | string |
Bileşenin genel rengini belirler. |
border | string |
Bileşene kenarlık stilleri uygular. |
rounded | boolean , string , number |
Bileşene uygulanan kenar yarıçapını belirtir. |
dotSize | string |
Tuval üzerindeki seçim noktasının boyutunu değiştirir. |
hideCanvas | boolean |
Tuvali gizler. |
canvasHeight | string , Number |
Tuvalin yüksekliğini belirler. |
mode | string |
Geçerli seçili giriş türü. v-model:mode ile girdi senkronize edilebilir. Alabileceği Değerler: 'rgb' | 'rgba' | 'hsl' | 'hsla' | 'hex' | 'hexa' |
modes | Array |
Kullanılabilir giriş türlerini ayarlar. Verilebilecek Değerler: ['rgb', 'rgba', 'hsl', 'hsla', 'hex', 'hexa']. |
hideInputs | boolean |
Girdi alanlarını gizler. (Varsayılan: false). |
hideSliders | boolean |
Girdi alanlarını gizler. (Varsayılan: false). |
showSwatches | boolean |
Tuval üzerinde renk örneklerini görüntüler. (Varsayılan: false). |
swatchesMaxHeight | string , Number |
Renk örnekleri bölümünün maksimum yüksekliğini ayarlar. |
position | string |
Bileşenin konumunu ayarlar. (Varsayılan: undefined). Alabileceği Değerler: 'static' | 'relative' | 'fixed' | 'absolute' | 'sticky'. |
width | string |
Renk seçicinin genişliğini ayarlar. |
variant | string |
Bileşene farklı stiller uygular. (outlined, plain, underlined, solo, filled, solo-filled, solo-inverted). |
Örnek
<template>
<v-row no-gutters>
<v-col sm="3" class="mr-3">
<va-color-picker-input
source="themeColor"
resource="account"
dot-size="25"
mode="hexa"
show-swatches
swatches-max-height="150"
v-model="themeColor"
:error-messages="themeColorErrors"
></va-color-picker-input>
</v-col>
</v-row>
</template>
Para birimi gösterimi için vue-currency-input bileşenini kullanarak mevcut değeri varolan param birimine göre biçimlendirir.
Mixinler
Özellikler
Özellik | Tür | Açıklama |
---|---|---|
source | string |
Gösterilecek değeri getirmek için kaynağın özelliği. Slot kullanılmış nesne için nokta gösterimini destekler. |
model | string |
Varsayılan olarak source, create/update için API servisine gönderilecek son ad olacaktır. Bu destek, bu varsayılan davranışı geçersiz kılmanıza olanak tanır. |
variant | string |
Bileşene farklı stiller uygular. (outlined, plain, underlined, solo, filled, solo-filled, solo-inverted). |
options | object |
vue-currency-input opsiyonlarını girmenizi sağlar. Örnek: options="{ currency: "USD", precision: 2 } |
Örnek
<template>
<v-row no-gutters>
<v-col lg="3" md="4" sm="6">
<va-select-input
:label="$t('demo.currencyId')"
reference="currencies"
v-model="model.currencyId"
>
</va-select-input>
<va-currency-input
clearable
:label="$t('demo.amount')"
v-model="model.amount"
:key="'amount_' + getCurrencyId"
:options="{ currency: getCurrencyId, precision: 2 }"
></va-currency-input>
</v-col>
</v-row>
</template>
<script>
export default {
data() {
return {
model: {
amount: 0,
currencyId: { id: "USD", name: "Usd" },
},
};
},
computed: {
getCurrencyId() {
if (this.model && this.model.currencyId && this.model.currencyId.id) {
return this.model.currencyId.id;
}
return "TRY";
},
}
};
</script>
Yüksek sayıdaki excel verilerini okuyup cli modunda veritabanına eklemenize olanak sağlayan girdi bileşenidir. İçeri alınan verileri kaydetmek için kendi oluşturduğunuz bir sheet kaydetme şablonu ile kullanılmalıdır.
Örnek
<template>
<va-list
disable-create
:filters="filters"
:fields="fields"
:items-per-page="50"
>
<va-data-table-server
row-edit
row-create
disable-edit
disable-create
disable-clone
disable-show
:disable-empty-data-row-create="true"
>
<template v-slot:row.actions="{ item }">
<v-btn
:item="item"
:label="$t('va.actions.show')"
:color="'blue'"
variant="text"
exact
@click.stop="getRoute(item)"
>
<v-icon size="small">mdi-eye</v-icon>
</v-btn>
</template>
</va-data-table-server>
</va-list>
<v-card
class="mx-auto mt-2"
variant="flat"
>
<template v-slot:title>
{{ $t("resources.jobtitles.createNewList") }}
</template>
<v-card-text>
<div>
{{ $t("resources.jobtitles.importDescription") }}
</div>
</v-card-text>
<v-card-actions>
<v-btn
color="primary"
@click="downloadEmptyXls()">
{{ $t("resources.jobtitles.downloadXls") }}
</v-btn>
</v-card-actions>
</v-card>
<v-card
variant="flat"
class="mt-2"
>
<v-card-text>
<v-row class="mt-2">
<v-col sm="2">
<va-select-input
v-model="yearId"
reference="years"
variant="outlined"
clearable
:disabled="loadingStatus"
:error-messages="yearIdErrors"
></va-select-input>
</v-col>
<v-col sm="2">
<va-text-input
v-model="listName"
variant="outlined"
clearable
:disabled="loadingStatus"
:error-messages="listNameErrors"
></va-text-input>
</v-col>
<v-col sm="8">
<v-btn
v-if="loadingStatus"
color="primary"
class="mr-2"
@click="cancelSaveList()"
variant="outlined"
>
{{ $t("va.actions.cancel") }}
</v-btn>
<v-btn
:loading="loadingStatus"
color="primary"
variant="outlined"
@click="saveList()">
{{ $t("resources.jobtitles.saveList") }}
</v-btn>
</v-col>
</v-row>
</v-card-text>
</v-card>
<v-card
variant="flat"
class="mt-2"
v-if="!loadingStatus"
>
<v-card-text>
<h5 class="h4 mb-3">Sheet Input Component</h5>
<va-sheet-input
icon="mdi-file-excel"
items-per-page="100"
upload-url="/jobtitlelists/upload"
preview-url="/jobtitlelists/preview"
remove-url="/jobtitlelists/remove"
@importedItems="onItems"
>
</va-sheet-input>
</v-card-text>
</v-card>
</template>
<script>
import { useVuelidate } from "@vuelidate/core";
import { required } from "@vuelidate/validators";
import { provide } from 'vue';
import { mapActions } from "vuex"
export default {
props: [],
inject: ['admin'],
setup() {
provide('v$', useVuelidate() )
return { v$: useVuelidate() }
},
provide() {
return {
validations: {
form: {
listName: {
required
},
}
},
errors: {
listNameErrors: (v$) => {
const errors = [];
if (!v$['form'].listName.$dirty) return errors;
v$['form'].listName.required.$invalid &&
errors.push(this.$t("v.text.required"));
return errors;
},
}
};
},
validations() {
return {
yearId: {
required
},
listName: {
required
}
}
},
data() {
return {
cancel: false,
status: false,
loadingStatus: false,
listId: null,
listName: null,
companyId: null,
yearId: new Date().getFullYear(),
loading: false,
loadingList: false,
importData: [],
validationError: null,
filters: [
{
source: "yearId",
type: "selectfilter",
attributes: {
optionText: "name",
multiple: true,
reference: "years",
}
},
],
fields: [
{
source: "yearId",
type: "select",
attributes: {
reference: "years",
},
sortable: true,
},
{
source: "listName",
sortable: true,
},
],
}
},
computed: {
yearIdErrors() {
const errors = [];
if (!this.v$.yearId.$dirty) return errors;
this.v$.yearId.required.$invalid &&
errors.push(this.$t("v.text.required"));
return errors;
},
listNameErrors() {
const errors = [];
if (!this.v$.listName.$dirty) return errors;
this.v$.listName.required.$invalid &&
errors.push(this.$t("v.text.required"));
return errors;
}
},
methods: {
...mapActions({
checkAuth: "auth/checkAuth",
}),
onItems(items, vError) {
this.importData = items;
if (items.length == 0) {
this.validationError = null
} else {
this.validationError = vError
}
},
getRoute(item) {
let filter = null
if (item.listId) {
filter = '{ "yearId" : ["'+ item.yearId.id + '"] , "listId" : ["' + item.listId + '"] }';
}
this.$router.push({ name: "jobtitles_list", query: { filter: filter } });
},
async importStatus() {
let Self = this;
this.loadingStatus = true;
try {
//
// get status with EventSource
//
let user = await this.checkAuth();
if (user) {
const apiUrl = import.meta.env.VITE_API_URL;
this.source = new EventSource(apiUrl + '/stream/events?userId=' + user.id + '&route=list');
this.source.onmessage = function(e) {
if (e.data) {
let data = JSON.parse(e.data);
if (data.status == 1 || data.status == true) {
Self.source.close(); // lets close it when the process is done !
Self.status = false;
Self.loadingStatus = false
Self.importData = []; // reset import data
Self.admin.http({ method: "DELETE", url: "/jobtitlelists/reset" }); // reset all status
Self.$store.dispatch("api/refresh", 'jobtitlelists');
}
}
};
}
} catch (e) {
if (e["response"]
&& e["response"]["status"]
&& e.response.status === 400) {
this.admin.message("error", e.response.data.data.error);
}
}
},
saveList() {
this.cancel = false;
this.v$.yearId.$touch();
this.v$.listName.$touch();
if (this.v$.listName.$invalid || this.v$.yearId.$invalid) {
return false;
}
if (this.validationError) {
this.$store.commit("messages/show", { type: 'error', message: this.$t("employees.fixErrorsMessage") });
} else {
if (this.importData.length == 0) {
this.$store.commit("messages/show", { type: 'error', message: this.$t("employees.importDataMessage") });
} else {
// save imported data
//
this.admin.http({ method: "POST", url: "/jobtitlelists/import", data: { yearId: this.yearId, listName: this.listName } });
// check status every 1 seconds
//
this.importStatus();
}
}
},
cancelSaveList() {
this.cancel = true;
this.loadingStatus = false;
this.importData = []; // reset import data
this.admin.http({ method: "DELETE", url: "/jobtitlelists/reset" }); // reset all status
this.$store.dispatch("api/refresh", 'jobtitlelists'); // refresh page
},
downloadEmptyXls() {
window.location.href = "/src/assets/JobTitles.xlsx"
}
}
}
</script>