Skip to content

A flexible and customizable table component for Android. High-performance and modern table library built with Jetpack Compose.

License

Notifications You must be signed in to change notification settings

dilarakiraz/FlexTableSDK

Repository files navigation

FlexTable SDK

Kotlin Compose Min SDK License GitHub

Android için esnek ve özelleştirilebilir tablo bileşeni. Jetpack Compose ile yazılmış, performanslı ve modern bir tablo kütüphanesi.

🎬 Demo Video

Demo Video

✨ Özellikler

  • Kolon Sürükle-Bırak: Kolonları sürükleyerek yeniden sıralayın
  • Özelleştirilebilir Sürükleme İkonu: Kolon başlıklarında özel drag handle ikonu
  • Satır Sıralama: Kolonlara göre artan/azalan sıralama
  • Zebra Satırlar: Alternatif satır renkleri ile daha okunabilir tablolar
  • Sabit Kolonlar: Sol tarafta sabitlenmiş kolonlar ile geniş tablolarda navigasyon
  • Özelleştirilebilir Tema: Renkler, boyutlar ve stiller tamamen özelleştirilebilir
  • Satır Seçimi: Tekli veya çoklu satır seçimi desteği
  • Hover Efektleri: Satır üzerine gelince görsel geri bildirim
  • Boş Durum ve Yükleme Durumu: Özelleştirilebilir boş/yükleniyor durumları
  • Performanslı: LazyColumn kullanarak büyük veri setlerinde optimize edilmiş performans

📋 Gereksinimler

  • Min SDK: 24 (Android 7.0)
  • Compile SDK: 36
  • Kotlin: 2.0.21+
  • Jetpack Compose: 2024.09.00+
  • Java: 17+ (JitPack build için)

🚀 Kurulum

JitPack ile (Önerilen)

  1. Projenizin root build.gradle.kts (veya build.gradle) dosyasına JitPack repository'sini ekleyin:

Kotlin DSL:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
    repositories {
        google()
        mavenCentral()
        maven { url = uri("https://jitpack.io") }
    }
}

Groovy:

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}
  1. app/build.gradle.kts (veya app/build.gradle) dosyanıza dependency ekleyin:

Kotlin DSL:

dependencies {
    implementation("com.github.dilarakiraz.FlexTableSDK:flextable-core:VERSION")
}

Groovy:

dependencies {
    implementation 'com.github.dilarakiraz.FlexTableSDK:flextable-core:VERSION'
}

Kullanılabilir Versiyonlar:

  • 1.0.1 - Son stabil sürüm (Java 17 gerekli)
  • main-SNAPSHOT - En son geliştirme versiyonu (main branch'inden)
  • Commit hash'i de kullanabilirsiniz: com.github.dilarakiraz.FlexTableSDK:flextable-core:COMMIT_HASH

Örnek:

dependencies {
    implementation("com.github.dilarakiraz.FlexTableSDK:flextable-core:1.0.1")
}

Not: JitPack modül path'i için format: com.github.USERNAME.REPO:MODULE_NAME:VERSION

Local Kurulum (Geliştirme için)

  1. Repo'yu klonlayın:
git clone https://github.com/dilarakiraz/FlexTableSDK.git
  1. Projenize modül olarak ekleyin:

    • Android Studio'da File > New > Import Module
    • flextable-core klasörünü seçin
  2. settings.gradle.kts dosyanıza ekleyin:

include(":flextable-core")
project(":flextable-core").projectDir = File("../FlexTableSDK/flextable-core")
  1. build.gradle.kts dosyanıza dependency ekleyin:
dependencies {
    implementation(project(":flextable-core"))
}

📖 Temel Kullanım

import com.dilara.flextable.core.component.ScrollableTable
import com.dilara.flextable.core.model.*
import com.dilara.flextable.core.state.rememberTableState

val columns = listOf(
    ColumnDef(
        id = "name",
        title = "İsim",
        width = 150.dp,
        cellRenderer = { user -> Text(user.name) },
        sortable = true,
        sortSelector = { it.name }
    ),
    ColumnDef(
        id = "age",
        title = "Yaş",
        width = 100.dp,
        alignment = Alignment.CenterHorizontally,
        cellRenderer = { user -> Text(user.age.toString()) },
        sortable = true,
        sortSelector = { it.age }
    )
)

val tableState = rememberTableState()

ScrollableTable(
    data = TableData(
        columns = columns,
        rows = users
    ),
    config = TableConfig(
        enableColumnReordering = true,
        stripedRows = true,
        hoverEffect = true
    ),
    state = tableState,
    onSort = { column, order ->
        // Sıralama işlemi
    },
    onRowClick = { user ->
        // Satır tıklama işlemi
    }
)

🎨 Gelişmiş Kullanım

Kolon Sıralama (Reordering)

ScrollableTable(
    data = tableData,
    config = TableConfig(
        enableColumnReordering = true
    ),
    state = tableState,
    onReorderColumns = { newOrder ->
        // Kolon sıralaması değişti
        println("Yeni sıra: $newOrder")
    }
)

Özel Sürükleme İkonu

ColumnDef(
    id = "column1",
    title = "Kolon 1",
    dragHandleRenderer = {
        Icon(
            imageVector = Icons.Default.DragHandle,
            contentDescription = "Sürükle"
        )
    }
)

Sabit Kolonlar

ColumnDef(
    id = "id",
    title = "ID",
    width = 100.dp,
    isFixed = true, // Bu kolon sabitlenecek
    cellRenderer = { item -> Text(item.id.toString()) }
)

Özel Tema

val customTheme = TableTheme(
    headerBackground = Color(0xFF6200EE),
    headerTextColor = Color.White,
    rowBackground = Color.White,
    rowBackgroundAlternate = Color(0xFFF5F5F5),
    hoverRowBackground = Color(0xFFE3F2FD)
)

ScrollableTable(
    data = tableData,
    theme = customTheme
)

📚 API Dokümantasyonu

ScrollableTable

Ana tablo bileşeni. Tüm tablo işlevselliğini sağlar.

Parametreler:

  • data: TableData<T> - Tablo verisi (kolonlar ve satırlar)
  • config: TableConfig - Tablo yapılandırması
  • theme: TableTheme - Tablo teması
  • state: TableState<T> - Tablo durumu (sıralama, kolon sırası, vb.)
  • onRowClick: ((T) -> Unit)? - Satır tıklama callback'i
  • onCellClick: ((T, ColumnDef<T>) -> Unit)? - Hücre tıklama callback'i
  • onSort: ((ColumnDef<T>, SortOrder) -> Unit)? - Sıralama callback'i
  • onReorderColumns: ((List<String>) -> Unit)? - Kolon sıralama callback'i (yeni sıralama: kolon ID listesi)

ColumnDef

Kolon tanımı. Her kolonun özelliklerini belirler.

Ana Özellikler:

  • id: String - Kolon benzersiz ID'si
  • title: String - Kolon başlığı
  • width: Dp - Kolon genişliği
  • isFixed: Boolean - Sol tarafta sabitlenmiş kolon
  • sortable: Boolean - Sıralanabilir kolon
  • cellRenderer: @Composable (T) -> Unit - Hücre içeriği renderer'ı
  • dragHandleRenderer: @Composable (() -> Unit)? - Özel sürükleme ikonu

TableConfig

Tablo görünüm ve davranış yapılandırması.

Ana Ayarlar:

  • enableColumnReordering: Boolean - Kolon sıralaması aktif
  • stripedRows: Boolean - Zebra çizgili satırlar
  • hoverEffect: Boolean - Hover efekti
  • clickableRows: Boolean - Tıklanabilir satırlar
  • rowHeight: Dp - Satır yüksekliği
  • headerHeight: Dp - Başlık yüksekliği

🤝 Katkıda Bulunma

Katkılarınızı bekliyoruz! Lütfen önce bir issue açarak değişiklik önerilerinizi paylaşın.

  1. Fork edin
  2. Feature branch oluşturun (git checkout -b feature/amazing-feature)
  3. Commit edin (git commit -m 'feat: amazing feature eklendi')
  4. Push edin (git push origin feature/amazing-feature)
  5. Pull Request açın

📝 Lisans

Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.

👤 Yazar

Dilara - @dilarakiraz

Projeyi beğendiyseniz ⭐ yıldız vermeyi unutmayın!

🔗 Linkler

About

A flexible and customizable table component for Android. High-performance and modern table library built with Jetpack Compose.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages