diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..7643783 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,123 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index e805548..d4b7acc 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f45e544..e3837bf 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("com.android.application") id("org.jetbrains.kotlin.android") + alias(libs.plugins.compose.compiler) } android { @@ -30,13 +31,12 @@ android { buildFeatures { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.composeCompiler.get() - } namespace = "com.togitech.togii" } dependencies { + val composeBom = platform(libs.androidx.compose.bom) + implementation(composeBom) implementation(libs.accompanist.systemuicontroller) implementation(libs.androidx.core) implementation(libs.androidx.lifecycle.runtime) diff --git a/build.gradle.kts b/build.gradle.kts index d6e6f65..6094779 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,5 @@ plugins { + alias(libs.plugins.compose.compiler) apply false id("com.android.application") version libs.versions.android.gradle.plugin apply false id("com.android.library") version libs.versions.android.gradle.plugin apply false id("org.jetbrains.kotlin.android") version libs.versions.kotlin apply false diff --git a/ccp/build.gradle.kts b/ccp/build.gradle.kts index 7f7640b..bc05044 100644 --- a/ccp/build.gradle.kts +++ b/ccp/build.gradle.kts @@ -4,6 +4,7 @@ plugins { id("maven-publish") id("io.gitlab.arturbosch.detekt") version libs.versions.detekt.get() id("org.jetbrains.dokka") + alias(libs.plugins.compose.compiler) alias(libs.plugins.paparazzi) } @@ -35,9 +36,6 @@ android { jvmTarget = JavaVersion.VERSION_17.toString() freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn" } - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.composeCompiler.get() - } publishing { singleVariant("release") { withJavadocJar() @@ -46,8 +44,11 @@ android { } dependencies { + val composeBom = platform(libs.androidx.compose.bom) api(libs.kotlinx.immutable) api(libs.libphonenumber) + implementation(composeBom) + androidTestImplementation(composeBom) debugImplementation(libs.compose.tooling) implementation(libs.androidx.core) implementation(libs.androidx.lifecycle.compose) @@ -55,6 +56,7 @@ dependencies { implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.compose.activity) implementation(libs.compose.material) + implementation(libs.compose.icons) implementation(libs.compose.tooling.preview) detektPlugins("ru.kode:detekt-rules-compose:1.3.0") diff --git a/ccp/src/main/java/com/togitech/ccp/component/TogiCountryCodePicker.kt b/ccp/src/main/java/com/togitech/ccp/component/TogiCountryCodePicker.kt index 03f9e50..07586e2 100644 --- a/ccp/src/main/java/com/togitech/ccp/component/TogiCountryCodePicker.kt +++ b/ccp/src/main/java/com/togitech/ccp/component/TogiCountryCodePicker.kt @@ -255,7 +255,7 @@ fun TogiCountryCodePicker( visualTransformation = phoneNumberTransformation, keyboardOptions = keyboardOptions ?: KeyboardOptions.Default.copy( keyboardType = KeyboardType.Phone, - autoCorrect = true, + autoCorrectEnabled = true, imeAction = ImeAction.Done, ), keyboardActions = keyboardActions ?: KeyboardActions( diff --git a/ccp/src/main/java/com/togitech/ccp/transformation/PhoneNumberTransformation.kt b/ccp/src/main/java/com/togitech/ccp/transformation/PhoneNumberTransformation.kt index df8f6e6..eacb84b 100644 --- a/ccp/src/main/java/com/togitech/ccp/transformation/PhoneNumberTransformation.kt +++ b/ccp/src/main/java/com/togitech/ccp/transformation/PhoneNumberTransformation.kt @@ -76,7 +76,7 @@ class PhoneNumberTransformation(countryCode: String, context: Context) : VisualT } else { originalToTransformed.add(index) } - transformedToOriginal.add(index - specialCharsCount) + transformedToOriginal.add(maxOf(index - specialCharsCount, 0)) } originalToTransformed.add(originalToTransformed.maxOrNull()?.plus(1) ?: 0) transformedToOriginal.add(transformedToOriginal.maxOrNull()?.plus(1) ?: 0) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3b50754..c7484c4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -kotlin = "1.9.22" +kotlin = "2.0.20" dokka = "1.9.10" ## SDK Versions @@ -8,60 +8,46 @@ targetSdk = "34" compileSdk = "34" # Dependencies -android-gradle-plugin = "8.2.2" +android-gradle-plugin = "8.6.0" gradle-versions = "0.50.0" detekt = "1.23.3" -accompanist = "0.34.0" -androidx-activity-compose = "1.8.2" -androidx-core = "1.12.0" -androidx-lifecycle = "2.7.0" -androidx-test-junit = "1.1.5" - -# update version in README when changing below -compose = "1.6.0" -# https://androidx.dev/storage/compose-compiler/repository/ -# https://developer.android.com/jetpack/androidx/releases/compose-compiler -composeCompiler = "1.5.8" - -kotlinx-coroutines = "1.7.3" +accompanist = "0.36.0" +androidx-compose-bom = "2024.09.02" +androidx-activity-compose = "1.9.2" +androidx-core = "1.13.1" +androidx-lifecycle = "2.8.6" kotlinx-collections-immutable = "0.3.7" -libphonenumber = "8.13.28" +libphonenumber = "8.13.35" junit = "4.13.2" -robolectric = "4.11.1" paparazzi = "1.3.1" [libraries] accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" } androidx-core = { module = "androidx.core:core-ktx", version.ref = "androidx-core" } +androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidx-compose-bom" } androidx-lifecycle-compose = {module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle"} androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidx-lifecycle" } androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle" } androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" } -androidx-test-junit = { module = "androidx.test.ext:junit-ktx", version.ref = "androidx-test-junit" } compose-activity = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } -compose-compiler = { module = "androidx.compose.compiler:compiler", version.ref = "composeCompiler" } -compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "compose" } -compose-material = { module = "androidx.compose.material:material", version.ref = "compose" } -compose-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "compose" } -compose-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "compose" } -compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose" } -coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" } -coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" } +compose-material = { module = "androidx.compose.material:material" } +compose-icons = { module = "androidx.compose.material:material-icons-core" } +compose-tooling = { module = "androidx.compose.ui:ui-tooling" } +compose-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" } +compose-ui = { module = "androidx.compose.ui:ui" } libphonenumber = { module = "io.michaelrocks:libphonenumber-android", version.ref = "libphonenumber" } kotlinx-immutable = { module = "org.jetbrains.kotlinx:kotlinx-collections-immutable", version.ref = "kotlinx-collections-immutable" } junit = { module = "junit:junit", version.ref = "junit" } -kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } -roboelectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } [plugins] +compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } gradleVersions = { id = "com.github.ben-manes.versions", version.ref = "gradle-versions" } -kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } paparazzi = { id = "app.cash.paparazzi", version.ref = "paparazzi" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ac72c34..b82aa23 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME