From b904ae25367402e6d625af706b5d446c6c476296 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Fri, 22 Mar 2024 12:31:56 +0000 Subject: [PATCH 1/3] bump version to 2.5.4 and update dependencies --- app/build.gradle | 6 +++--- build.gradle | 6 +++--- composecalendar/build.gradle | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 82f4c53..dd1111b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,11 +27,11 @@ android { } } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = '1.8' + jvmTarget = "17" } buildFeatures { compose true diff --git a/build.gradle b/build.gradle index 94bff6a..c51d993 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ buildscript { ext { - compose_bom_version = '2024.02.01' - compose_compiler_version = '1.5.8' + compose_bom_version = '2024.03.00' + compose_compiler_version = '1.5.11' corektx_version = '1.12.0' accompanist_version = '0.34.0' } @@ -10,7 +10,7 @@ buildscript { plugins { id 'com.android.application' version '8.3.1' apply false id 'com.android.library' version '8.3.1' apply false - id 'org.jetbrains.kotlin.android' version '1.9.22' apply false + id 'org.jetbrains.kotlin.android' version '1.9.23' apply false id 'io.github.gradle-nexus.publish-plugin' version "1.1.0" } diff --git a/composecalendar/build.gradle b/composecalendar/build.gradle index cf70ad1..224e6d8 100644 --- a/composecalendar/build.gradle +++ b/composecalendar/build.gradle @@ -39,11 +39,11 @@ android { } } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = '1.8' + jvmTarget = "17" } buildFeatures { compose true @@ -82,7 +82,7 @@ afterEvaluate { from components.release groupId = 'com.squaredem.composecalendar' artifactId = 'composecalendar' - version = '2.5.3' + version = '2.5.4' } } } From 310a4937f658f7bcfb0eb09932a40b165732f783 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Fri, 22 Mar 2024 12:36:31 +0000 Subject: [PATCH 2/3] fix clean task --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index c51d993..1231b11 100644 --- a/build.gradle +++ b/build.gradle @@ -14,8 +14,8 @@ plugins { id 'io.github.gradle-nexus.publish-plugin' version "1.1.0" } -task clean(type: Delete) { - delete rootProject.buildDir +tasks.register('clean', Delete) { + delete rootProject.layout.buildDirectory } apply from: "${rootDir}/scripts/publish-root.gradle" From 8190eacdc612fc667428442e87f564bc3020f7cf Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Fri, 22 Mar 2024 12:57:25 +0000 Subject: [PATCH 3/3] fix and add documentation to date selection --- .../composecalendar/model/CalendarMode.kt | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/composecalendar/src/main/java/com/squaredem/composecalendar/model/CalendarMode.kt b/composecalendar/src/main/java/com/squaredem/composecalendar/model/CalendarMode.kt index ad85bb8..ded5c94 100644 --- a/composecalendar/src/main/java/com/squaredem/composecalendar/model/CalendarMode.kt +++ b/composecalendar/src/main/java/com/squaredem/composecalendar/model/CalendarMode.kt @@ -56,7 +56,7 @@ sealed class CalendarMode { ) : CalendarMode() } -internal fun CalendarMode.Range.hasEndDate(): Boolean = +internal fun CalendarMode.Range.rangeSelected(): Boolean = selection?.endDate != null && selection.endDate != selection.startDate internal fun CalendarMode.Range.onDayClicked(day: LocalDate): CalendarMode.Range = when { @@ -69,32 +69,44 @@ internal fun CalendarMode.Range.onDayClicked(day: LocalDate): CalendarMode.Range selectionMode == ForcedSelectMode.StartDate -> { when { - !hasEndDate() && day.isAfter(selection.startDate) -> copy( + // BO: Single date selected, and the new date is after selected start -> + // Continue single selection on the selected day. + !rangeSelected() && day.isAfter(selection.startDate) -> copy( selection = DateRangeSelection(day), selectionMode = ForcedSelectMode.EndDate ) - !hasEndDate() && day.isBefore(selection.startDate) -> copy( + // BO: Single date selected, and the new date is before selected start -> + // Date range from the selected date to the previous start date. + !rangeSelected() && day.isBefore(selection.startDate) -> copy( selection = DateRangeSelection(day, startDate), selectionMode = ForcedSelectMode.EndDate ) - !hasEndDate() && day == selection.startDate -> copy( + // BO: Single date selected, and the new date is the same as start -> + // Clear selection. + !rangeSelected() && day == selection.startDate -> copy( selection = null, selectionMode = ForcedSelectMode.StartDate ) - !hasEndDate() && day.isBefore(selection.endDate) -> copy( - selection = selection.copy(startDate = day), + // BO: Range selected, and the date selected is the start date -> + // Deselect start date. + rangeSelected() && day == selection.startDate -> copy( + selection = selection.endDate?.let { DateRangeSelection(it) }, selectionMode = ForcedSelectMode.EndDate ) - day == selection.startDate -> copy( - selection = selection.endDate?.let { DateRangeSelection(it) }, + // BO: Range selected, and the date selected is before end date -> + // Make a range from selection to end date. + rangeSelected() && day.isBefore(selection.endDate) -> copy( + selection = selection.copy(startDate = day), selectionMode = ForcedSelectMode.EndDate ) - day == selection.endDate -> copy( + // BO: Range selected, and the new date is the end date -> + // Deselect end date. + rangeSelected() && day == selection.endDate -> copy( selection = selection.copy(startDate = day, endDate = null), selectionMode = ForcedSelectMode.EndDate ) @@ -108,6 +120,8 @@ internal fun CalendarMode.Range.onDayClicked(day: LocalDate): CalendarMode.Range selectionMode == ForcedSelectMode.EndDate -> { when { + // BO: Date selected is before the start date -> + // Make single selection with the selected day. day.isBefore(selection.startDate) -> copy( selection = selection.copy( startDate = day, @@ -115,24 +129,28 @@ internal fun CalendarMode.Range.onDayClicked(day: LocalDate): CalendarMode.Range ) ) - !hasEndDate() && day.isAfter(selection.startDate) -> copy( + // BO: Single selection, and the new date is after start date -> + // Make range from old start to selected day. + !rangeSelected() && day.isAfter(selection.startDate) -> copy( selection = selection.copy(endDate = day) ) - !hasEndDate() && day == selection.startDate -> copy( + // BO: Single selection, and the new date is the same as start -> + // Clear selection. + !rangeSelected() && day == selection.startDate -> copy( selection = null, selectionMode = ForcedSelectMode.StartDate, ) - day == selection.startDate -> copy( - selection = DateRangeSelection(startDate = day), - ) - - hasEndDate() && day.isBefore(selection.endDate) -> copy( - selection = selection.copy(endDate = day), + // BO: Range selection, and the new date is the start date -> + // Clear start selection. + rangeSelected() && day == selection.startDate -> copy( + selection = selection.endDate?.let { DateRangeSelection(it) } ) - hasEndDate() && day == selection.endDate -> copy( + // BO: Range selection, and the new date is the end date -> + // Clear end selection. + rangeSelected() && day == selection.endDate -> copy( selection = selection.copy(endDate = null), )