From 1112cd1736f32b071ae6ef2fd884353dc5a0fd15 Mon Sep 17 00:00:00 2001 From: Sunny Chung Date: Sun, 11 Feb 2024 11:32:47 +0800 Subject: [PATCH 01/10] update composable-table to be multiplatform and update compose version to be 1.6.0-beat02 --- build.gradle.kts | 6 +- composable-table/build.gradle.kts | 59 +++++++++++++++---- .../lib/android/composabletable/ux/Table.kt | 0 gradle.properties | 5 +- settings.gradle.kts | 2 +- 5 files changed, 58 insertions(+), 14 deletions(-) rename composable-table/src/{main/java => commonMain/kotlin}/com/sunnychung/lib/android/composabletable/ux/Table.kt (100%) diff --git a/build.gradle.kts b/build.gradle.kts index b119f66..9626e8b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,10 +1,14 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { val androidGradlePluginVersion = "8.1.0" - val kotlinVersion = "1.8.21" + val kotlinVersion = "1.9.22" + val composeVersion = "1.6.0-beta02" id("com.android.application") version androidGradlePluginVersion apply false id("com.android.library") version androidGradlePluginVersion apply false kotlin("android") version kotlinVersion apply false kotlin("plugin.serialization") version kotlinVersion apply false + + kotlin("multiplatform") version kotlinVersion apply false + id("org.jetbrains.compose") version composeVersion apply false } diff --git a/composable-table/build.gradle.kts b/composable-table/build.gradle.kts index b375e61..fb3e859 100644 --- a/composable-table/build.gradle.kts +++ b/composable-table/build.gradle.kts @@ -1,7 +1,47 @@ +import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl + plugins { - id("com.android.library") - kotlin("android") + kotlin("multiplatform") + id("org.jetbrains.compose") id("maven-publish") + id("com.android.library") +// kotlin("android") +} + +kotlin { + jvm(name = "desktop") { + jvmToolchain(17) + } + + @OptIn(ExperimentalWasmDsl::class) + wasmJs { + + } + + androidTarget { + compilations.all { + kotlinOptions { + jvmTarget = "1.8" + } + } + } + + val iosTargets = listOf( + iosArm64(), + iosSimulatorArm64(), + iosX64(), + ) + + sourceSets { + val desktopMain by getting + + commonMain.dependencies { + implementation(compose.runtime) + implementation(compose.foundation) + implementation(compose.material) + implementation(compose.ui) + } + } } android { @@ -20,20 +60,17 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - kotlinOptions { - jvmTarget = "1.8" - } buildFeatures { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = "1.4.7" - } +// composeOptions { +// kotlinCompilerExtensionVersion = "1.4.7" +// } } dependencies { - implementation("androidx.compose.ui:ui:${libs.versions.jetpack.compose.get()}") - implementation("androidx.compose.foundation:foundation:${libs.versions.jetpack.compose.get()}") +// implementation("androidx.compose.ui:ui:${libs.versions.jetpack.compose.get()}") +// implementation("androidx.compose.foundation:foundation:${libs.versions.jetpack.compose.get()}") } publishing { @@ -44,7 +81,7 @@ publishing { version = "1.1.0" afterEvaluate { - from(components["release"]) +// from(components["release"]) } } } diff --git a/composable-table/src/main/java/com/sunnychung/lib/android/composabletable/ux/Table.kt b/composable-table/src/commonMain/kotlin/com/sunnychung/lib/android/composabletable/ux/Table.kt similarity index 100% rename from composable-table/src/main/java/com/sunnychung/lib/android/composabletable/ux/Table.kt rename to composable-table/src/commonMain/kotlin/com/sunnychung/lib/android/composabletable/ux/Table.kt diff --git a/gradle.properties b/gradle.properties index 3c5031e..496a200 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,4 +20,7 @@ kotlin.code.style=official # Enables namespacing of each library's R class so that its R class includes only the # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file +android.nonTransitiveRClass=true + +### Compose Multiplatform ### +org.jetbrains.compose.experimental.wasm.enabled=true diff --git a/settings.gradle.kts b/settings.gradle.kts index e8c9737..4648cc4 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,7 +6,7 @@ pluginManagement { } } dependencyResolutionManagement { - repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) +// repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() From d2ce1a6c223fe4c1eafa987c5886f3feb4a7d7b5 Mon Sep 17 00:00:00 2001 From: Sunny Chung Date: Sun, 11 Feb 2024 11:54:16 +0800 Subject: [PATCH 02/10] move demo android app into demo/android-only-app, and bump compose versions --- composable-table/build.gradle.kts | 6 +++--- {demo-app => demo/android-only-app}/.gitignore | 0 {demo-app => demo/android-only-app}/build.gradle.kts | 2 +- {demo-app => demo/android-only-app}/proguard-rules.pro | 0 .../android-only-app}/src/main/AndroidManifest.xml | 0 .../lib/android/composabletable/demo/MainActivity.kt | 0 .../lib/android/composabletable/demo/model/Currency.kt | 0 .../android/composabletable/demo/model/TransitConnect.kt | 0 .../lib/android/composabletable/demo/model/Types.kt | 0 .../lib/android/composabletable/demo/model/WithDuration.kt | 0 .../demo/repository/RouteSearchHttpRepository.kt | 0 .../demo/serializer/ZonedDateTimeSerializer.kt | 0 .../lib/android/composabletable/demo/util/SDuration.kt | 0 .../lib/android/composabletable/demo/util/ZonedDateTime.kt | 0 .../lib/android/composabletable/demo/ux/AppView.kt | 0 .../composabletable/demo/ux/RouteSearchUiExtension.kt | 0 .../src/main/res/drawable-v24/ic_launcher_foreground.xml | 0 .../src/main/res/drawable/ic_launcher_background.xml | 0 .../android-only-app}/src/main/res/values/styles.xml | 0 gradle/libs.versions.toml | 2 +- settings.gradle.kts | 2 +- 21 files changed, 6 insertions(+), 6 deletions(-) rename {demo-app => demo/android-only-app}/.gitignore (100%) rename {demo-app => demo/android-only-app}/build.gradle.kts (96%) rename {demo-app => demo/android-only-app}/proguard-rules.pro (100%) rename {demo-app => demo/android-only-app}/src/main/AndroidManifest.xml (100%) rename {demo-app => demo/android-only-app}/src/main/java/com/sunnychung/lib/android/composabletable/demo/MainActivity.kt (100%) rename {demo-app => demo/android-only-app}/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/Currency.kt (100%) rename {demo-app => demo/android-only-app}/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/TransitConnect.kt (100%) rename {demo-app => demo/android-only-app}/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/Types.kt (100%) rename {demo-app => demo/android-only-app}/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/WithDuration.kt (100%) rename {demo-app => demo/android-only-app}/src/main/java/com/sunnychung/lib/android/composabletable/demo/repository/RouteSearchHttpRepository.kt (100%) rename {demo-app => demo/android-only-app}/src/main/java/com/sunnychung/lib/android/composabletable/demo/serializer/ZonedDateTimeSerializer.kt (100%) rename {demo-app => demo/android-only-app}/src/main/java/com/sunnychung/lib/android/composabletable/demo/util/SDuration.kt (100%) rename {demo-app => demo/android-only-app}/src/main/java/com/sunnychung/lib/android/composabletable/demo/util/ZonedDateTime.kt (100%) rename {demo-app => demo/android-only-app}/src/main/java/com/sunnychung/lib/android/composabletable/demo/ux/AppView.kt (100%) rename {demo-app => demo/android-only-app}/src/main/java/com/sunnychung/lib/android/composabletable/demo/ux/RouteSearchUiExtension.kt (100%) rename {demo-app => demo/android-only-app}/src/main/res/drawable-v24/ic_launcher_foreground.xml (100%) rename {demo-app => demo/android-only-app}/src/main/res/drawable/ic_launcher_background.xml (100%) rename {demo-app => demo/android-only-app}/src/main/res/values/styles.xml (100%) diff --git a/composable-table/build.gradle.kts b/composable-table/build.gradle.kts index fb3e859..45912ef 100644 --- a/composable-table/build.gradle.kts +++ b/composable-table/build.gradle.kts @@ -63,9 +63,9 @@ android { buildFeatures { compose = true } -// composeOptions { -// kotlinCompilerExtensionVersion = "1.4.7" -// } + composeOptions { + kotlinCompilerExtensionVersion = "1.5.9" + } } dependencies { diff --git a/demo-app/.gitignore b/demo/android-only-app/.gitignore similarity index 100% rename from demo-app/.gitignore rename to demo/android-only-app/.gitignore diff --git a/demo-app/build.gradle.kts b/demo/android-only-app/build.gradle.kts similarity index 96% rename from demo-app/build.gradle.kts rename to demo/android-only-app/build.gradle.kts index 02f796e..dc85a60 100644 --- a/demo-app/build.gradle.kts +++ b/demo/android-only-app/build.gradle.kts @@ -34,7 +34,7 @@ android { compose = true } composeOptions { - kotlinCompilerExtensionVersion = "1.4.7" + kotlinCompilerExtensionVersion = "1.5.9" } } diff --git a/demo-app/proguard-rules.pro b/demo/android-only-app/proguard-rules.pro similarity index 100% rename from demo-app/proguard-rules.pro rename to demo/android-only-app/proguard-rules.pro diff --git a/demo-app/src/main/AndroidManifest.xml b/demo/android-only-app/src/main/AndroidManifest.xml similarity index 100% rename from demo-app/src/main/AndroidManifest.xml rename to demo/android-only-app/src/main/AndroidManifest.xml diff --git a/demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/MainActivity.kt b/demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/MainActivity.kt similarity index 100% rename from demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/MainActivity.kt rename to demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/MainActivity.kt diff --git a/demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/Currency.kt b/demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/Currency.kt similarity index 100% rename from demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/Currency.kt rename to demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/Currency.kt diff --git a/demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/TransitConnect.kt b/demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/TransitConnect.kt similarity index 100% rename from demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/TransitConnect.kt rename to demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/TransitConnect.kt diff --git a/demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/Types.kt b/demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/Types.kt similarity index 100% rename from demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/Types.kt rename to demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/Types.kt diff --git a/demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/WithDuration.kt b/demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/WithDuration.kt similarity index 100% rename from demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/WithDuration.kt rename to demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/model/WithDuration.kt diff --git a/demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/repository/RouteSearchHttpRepository.kt b/demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/repository/RouteSearchHttpRepository.kt similarity index 100% rename from demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/repository/RouteSearchHttpRepository.kt rename to demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/repository/RouteSearchHttpRepository.kt diff --git a/demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/serializer/ZonedDateTimeSerializer.kt b/demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/serializer/ZonedDateTimeSerializer.kt similarity index 100% rename from demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/serializer/ZonedDateTimeSerializer.kt rename to demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/serializer/ZonedDateTimeSerializer.kt diff --git a/demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/util/SDuration.kt b/demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/util/SDuration.kt similarity index 100% rename from demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/util/SDuration.kt rename to demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/util/SDuration.kt diff --git a/demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/util/ZonedDateTime.kt b/demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/util/ZonedDateTime.kt similarity index 100% rename from demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/util/ZonedDateTime.kt rename to demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/util/ZonedDateTime.kt diff --git a/demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/ux/AppView.kt b/demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/ux/AppView.kt similarity index 100% rename from demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/ux/AppView.kt rename to demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/ux/AppView.kt diff --git a/demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/ux/RouteSearchUiExtension.kt b/demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/ux/RouteSearchUiExtension.kt similarity index 100% rename from demo-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/ux/RouteSearchUiExtension.kt rename to demo/android-only-app/src/main/java/com/sunnychung/lib/android/composabletable/demo/ux/RouteSearchUiExtension.kt diff --git a/demo-app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/demo/android-only-app/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from demo-app/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to demo/android-only-app/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/demo-app/src/main/res/drawable/ic_launcher_background.xml b/demo/android-only-app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from demo-app/src/main/res/drawable/ic_launcher_background.xml rename to demo/android-only-app/src/main/res/drawable/ic_launcher_background.xml diff --git a/demo-app/src/main/res/values/styles.xml b/demo/android-only-app/src/main/res/values/styles.xml similarity index 100% rename from demo-app/src/main/res/values/styles.xml rename to demo/android-only-app/src/main/res/values/styles.xml diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index df2fa53..e4b245d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,2 +1,2 @@ [versions] -jetpack-compose = "1.5.0" +jetpack-compose = "1.6.1" diff --git a/settings.gradle.kts b/settings.gradle.kts index 4648cc4..83e5aaa 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -15,4 +15,4 @@ dependencyResolutionManagement { rootProject.name = "Composable Table" include(":composable-table") -include(":demo-app") +include(":demo:android-only-app") From 03f549b2b0b3a3fbe9667f8b8b80db35bed9fcf4 Mon Sep 17 00:00:00 2001 From: Sunny Chung Date: Sun, 11 Feb 2024 13:21:58 +0800 Subject: [PATCH 03/10] add android and wasm of multiplatform demo app --- .gitignore | 12 + .idea/.name | 1 - .idea/artifacts/composable_table_desktop.xml | 6 + .idea/artifacts/composable_table_jvm.xml | 8 + .idea/artifacts/composable_table_wasm_js.xml | 6 + .idea/artifacts/multiplatform_app_desktop.xml | 6 + .idea/artifacts/multiplatform_app_wasm_js.xml | 6 + .idea/deploymentTargetDropDown.xml | 19 + .idea/gradle.xml | 9 +- .idea/inspectionProfiles/Project_Default.xml | 32 + .idea/kotlinc.xml | 2 +- .idea/migrations.xml | 10 + composable-table/build.gradle.kts | 3 +- .../multiplatform-app/shared/build.gradle.kts | 103 + .../src/androidMain/AndroidManifest.xml | 22 + .../composabletable/mpdemo/MainActivity.kt | 25 + .../drawable-v24/ic_launcher_foreground.xml | 30 + .../res/drawable/ic_launcher_background.xml | 170 + .../src/androidMain/res/values/styles.xml | 3 + .../composabletable/demo/model/Currency.kt | 20 + .../demo/model/TransitConnect.kt | 104 + .../composabletable/demo/model/Types.kt | 7 + .../demo/model/WithDuration.kt | 13 + .../repository/RouteSearchHttpRepository.kt | 15 + .../serializer/ZonedDateTimeSerializer.kt | 23 + .../composabletable/demo/util/SDuration.kt | 31 + .../demo/util/ZonedDateTime.kt | 64 + .../composabletable/demo/ux/AppView.kt | 160 + .../demo/ux/RouteSearchUiExtension.kt | 65 + .../shared/src/wasmJsMain/kotlin/main.kt | 8 + .../src/wasmJsMain/resources/index.html | 12 + kotlin-js-store/yarn.lock | 2863 +++++++++++++++++ settings.gradle.kts | 6 +- 33 files changed, 3856 insertions(+), 8 deletions(-) delete mode 100644 .idea/.name create mode 100644 .idea/artifacts/composable_table_desktop.xml create mode 100644 .idea/artifacts/composable_table_jvm.xml create mode 100644 .idea/artifacts/composable_table_wasm_js.xml create mode 100644 .idea/artifacts/multiplatform_app_desktop.xml create mode 100644 .idea/artifacts/multiplatform_app_wasm_js.xml create mode 100644 .idea/deploymentTargetDropDown.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/migrations.xml create mode 100644 demo/multiplatform-app/shared/build.gradle.kts create mode 100644 demo/multiplatform-app/shared/src/androidMain/AndroidManifest.xml create mode 100644 demo/multiplatform-app/shared/src/androidMain/kotlin/com/sunnychung/lib/android/composabletable/mpdemo/MainActivity.kt create mode 100644 demo/multiplatform-app/shared/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 demo/multiplatform-app/shared/src/androidMain/res/drawable/ic_launcher_background.xml create mode 100644 demo/multiplatform-app/shared/src/androidMain/res/values/styles.xml create mode 100644 demo/multiplatform-app/shared/src/commonMain/kotlin/com/sunnychung/lib/android/composabletable/demo/model/Currency.kt create mode 100644 demo/multiplatform-app/shared/src/commonMain/kotlin/com/sunnychung/lib/android/composabletable/demo/model/TransitConnect.kt create mode 100644 demo/multiplatform-app/shared/src/commonMain/kotlin/com/sunnychung/lib/android/composabletable/demo/model/Types.kt create mode 100644 demo/multiplatform-app/shared/src/commonMain/kotlin/com/sunnychung/lib/android/composabletable/demo/model/WithDuration.kt create mode 100644 demo/multiplatform-app/shared/src/commonMain/kotlin/com/sunnychung/lib/android/composabletable/demo/repository/RouteSearchHttpRepository.kt create mode 100644 demo/multiplatform-app/shared/src/commonMain/kotlin/com/sunnychung/lib/android/composabletable/demo/serializer/ZonedDateTimeSerializer.kt create mode 100644 demo/multiplatform-app/shared/src/commonMain/kotlin/com/sunnychung/lib/android/composabletable/demo/util/SDuration.kt create mode 100644 demo/multiplatform-app/shared/src/commonMain/kotlin/com/sunnychung/lib/android/composabletable/demo/util/ZonedDateTime.kt create mode 100644 demo/multiplatform-app/shared/src/commonMain/kotlin/com/sunnychung/lib/android/composabletable/demo/ux/AppView.kt create mode 100644 demo/multiplatform-app/shared/src/commonMain/kotlin/com/sunnychung/lib/android/composabletable/demo/ux/RouteSearchUiExtension.kt create mode 100644 demo/multiplatform-app/shared/src/wasmJsMain/kotlin/main.kt create mode 100644 demo/multiplatform-app/shared/src/wasmJsMain/resources/index.html create mode 100644 kotlin-js-store/yarn.lock diff --git a/.gitignore b/.gitignore index aa724b7..07f9a7b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,15 @@ .externalNativeBuild .cxx local.properties + +**/build/ +xcuserdata +!src/**/build/ +#.idea +captures +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcodeproj/project.xcworkspace/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index bf2ea9d..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -Composable Table \ No newline at end of file diff --git a/.idea/artifacts/composable_table_desktop.xml b/.idea/artifacts/composable_table_desktop.xml new file mode 100644 index 0000000..d5dc944 --- /dev/null +++ b/.idea/artifacts/composable_table_desktop.xml @@ -0,0 +1,6 @@ + + + $PROJECT_DIR$/composable-table/build/libs + + + \ No newline at end of file diff --git a/.idea/artifacts/composable_table_jvm.xml b/.idea/artifacts/composable_table_jvm.xml new file mode 100644 index 0000000..6549e84 --- /dev/null +++ b/.idea/artifacts/composable_table_jvm.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/composable-table/build/libs + + + + + \ No newline at end of file diff --git a/.idea/artifacts/composable_table_wasm_js.xml b/.idea/artifacts/composable_table_wasm_js.xml new file mode 100644 index 0000000..7664428 --- /dev/null +++ b/.idea/artifacts/composable_table_wasm_js.xml @@ -0,0 +1,6 @@ + + + $PROJECT_DIR$/composable-table/build/libs + + + \ No newline at end of file diff --git a/.idea/artifacts/multiplatform_app_desktop.xml b/.idea/artifacts/multiplatform_app_desktop.xml new file mode 100644 index 0000000..20ff125 --- /dev/null +++ b/.idea/artifacts/multiplatform_app_desktop.xml @@ -0,0 +1,6 @@ + + + $PROJECT_DIR$/demo/multiplatform-app/shared/build/libs + + + \ No newline at end of file diff --git a/.idea/artifacts/multiplatform_app_wasm_js.xml b/.idea/artifacts/multiplatform_app_wasm_js.xml new file mode 100644 index 0000000..43a6016 --- /dev/null +++ b/.idea/artifacts/multiplatform_app_wasm_js.xml @@ -0,0 +1,6 @@ + + + $PROJECT_DIR$/demo/multiplatform-app/shared/build/libs + + + \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..c5c6b87 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 7e4744d..4ee6e00 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,17 +4,18 @@ diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..103e00c --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,32 @@ + + + + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index 217e5c5..8d81632 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/composable-table/build.gradle.kts b/composable-table/build.gradle.kts index 45912ef..20fee2e 100644 --- a/composable-table/build.gradle.kts +++ b/composable-table/build.gradle.kts @@ -15,7 +15,8 @@ kotlin { @OptIn(ExperimentalWasmDsl::class) wasmJs { - + moduleName = "composable-table" + browser() } androidTarget { diff --git a/demo/multiplatform-app/shared/build.gradle.kts b/demo/multiplatform-app/shared/build.gradle.kts new file mode 100644 index 0000000..33353fd --- /dev/null +++ b/demo/multiplatform-app/shared/build.gradle.kts @@ -0,0 +1,103 @@ +import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl + +plugins { + kotlin("multiplatform") + id("org.jetbrains.compose") + id("com.android.application") +// kotlin("android") + + kotlin("plugin.serialization") +} + +kotlin { + jvm(name = "desktop") { + jvmToolchain(17) + } + + @OptIn(ExperimentalWasmDsl::class) + wasmJs { + moduleName = "composeApp" + browser { + commonWebpackConfig { + outputFileName = "composeApp.js" + } + } + binaries.executable() + } + + androidTarget { + compilations.all { + kotlinOptions { + jvmTarget = "1.8" + } + } + } + + val iosTargets = listOf( + iosArm64(), + iosSimulatorArm64(), + iosX64(), + ).apply { + forEach { + it.binaries.framework { + baseName = "ComposeApp" + isStatic = true + } + } + } + + sourceSets { + val desktopMain by getting + + commonMain.dependencies { + implementation(compose.runtime) + implementation(compose.foundation) + implementation(compose.material) + implementation(compose.ui) + + implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.5.0") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2") + + implementation(project(":composable-table")) + } + + androidMain.dependencies { + implementation("androidx.activity:activity-compose:1.7.2") + } + } +} + +android { + namespace = "com.sunnychung.lib.android.composabletable.mpdemo" + compileSdk = 34 + + defaultConfig { + applicationId = "com.sunnychung.lib.android.composabletable.mpdemo" + minSdk = 23 + targetSdk = 34 + versionCode = 1 + } + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + buildFeatures { + compose = true + } + composeOptions { + kotlinCompilerExtensionVersion = "1.5.9" + } +} + +compose.experimental { + web.application {} +} diff --git a/demo/multiplatform-app/shared/src/androidMain/AndroidManifest.xml b/demo/multiplatform-app/shared/src/androidMain/AndroidManifest.xml new file mode 100644 index 0000000..b226ab4 --- /dev/null +++ b/demo/multiplatform-app/shared/src/androidMain/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/multiplatform-app/shared/src/androidMain/kotlin/com/sunnychung/lib/android/composabletable/mpdemo/MainActivity.kt b/demo/multiplatform-app/shared/src/androidMain/kotlin/com/sunnychung/lib/android/composabletable/mpdemo/MainActivity.kt new file mode 100644 index 0000000..c703405 --- /dev/null +++ b/demo/multiplatform-app/shared/src/androidMain/kotlin/com/sunnychung/lib/android/composabletable/mpdemo/MainActivity.kt @@ -0,0 +1,25 @@ +package com.sunnychung.lib.android.composabletable.mpdemo + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material.Surface +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import com.sunnychung.lib.android.composabletable.demo.ux.AppView + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + setContent { + Surface( + modifier = Modifier.fillMaxSize(), + color = Color.White + ) { + AppView() + } + } + } +} diff --git a/demo/multiplatform-app/shared/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml b/demo/multiplatform-app/shared/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/demo/multiplatform-app/shared/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/demo/multiplatform-app/shared/src/androidMain/res/drawable/ic_launcher_background.xml b/demo/multiplatform-app/shared/src/androidMain/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/demo/multiplatform-app/shared/src/androidMain/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/multiplatform-app/shared/src/androidMain/res/values/styles.xml b/demo/multiplatform-app/shared/src/androidMain/res/values/styles.xml new file mode 100644 index 0000000..6b4fa3d --- /dev/null +++ b/demo/multiplatform-app/shared/src/androidMain/res/values/styles.xml @@ -0,0 +1,3 @@ + +