From 01c439da4d6a2eafe18f10eb85731f7b37be734a Mon Sep 17 00:00:00 2001 From: Fernando Moya de Rivas Date: Fri, 20 Nov 2020 13:20:41 +0000 Subject: [PATCH 1/5] Adding modifier to limit page reveal --- .../Examples/InfiniteExampleView.swift | 3 ++- Sources/SwiftUIPager/Pager+Buildable.swift | 15 +++++++++++++++ Sources/SwiftUIPager/Pager.swift | 4 ++++ Sources/SwiftUIPager/PagerContent+Buildable.swift | 12 ++++++++++++ Sources/SwiftUIPager/PagerContent+Helper.swift | 1 + Sources/SwiftUIPager/PagerContent.swift | 12 +++++++++++- 6 files changed, 45 insertions(+), 2 deletions(-) diff --git a/Example/SwiftUIPagerExample/Examples/InfiniteExampleView.swift b/Example/SwiftUIPagerExample/Examples/InfiniteExampleView.swift index 552ee3d..13a2070 100644 --- a/Example/SwiftUIPagerExample/Examples/InfiniteExampleView.swift +++ b/Example/SwiftUIPagerExample/Examples/InfiniteExampleView.swift @@ -28,6 +28,7 @@ struct InfiniteExampleView: View { id: \.self) { self.pageView($0) } + .partialPagination(0.5, sensitivity: .high) .onPageChanged({ page in guard page == self.data1.count - 2 else { return } guard let last = self.data1.last else { return } @@ -38,7 +39,7 @@ struct InfiniteExampleView: View { } }) .pagingPriority(.simultaneous) - .preferredItemSize(CGSize(width: 300, height: 50)) + .preferredItemSize(CGSize(width: 200, height: 100)) .itemSpacing(10) .background(Color.gray.opacity(0.2)) .alert(isPresented: self.$isPresented, content: { diff --git a/Sources/SwiftUIPager/Pager+Buildable.swift b/Sources/SwiftUIPager/Pager+Buildable.swift index 8816bea..5e018a9 100644 --- a/Sources/SwiftUIPager/Pager+Buildable.swift +++ b/Sources/SwiftUIPager/Pager+Buildable.swift @@ -52,6 +52,21 @@ extension Pager: Buildable, PagerProxy { .mutating(keyPath: \.loopingCount, value: count) } + /// Sets a limit to the dragging offset, affecting the pagination towards neighboring items. + /// When the limit is reached, items won't keep scrolling further. + /// This modifier is incompatible with `multiplePagination` and will modify its value. + /// + /// - Parameter ratio: max page percentage. Should be `0 < ratio < 1` + /// - Parameter value: sensitivity to be applied when paginating + /// - Note: This modifier is incompatible with `multiplePagination` + /// + /// For instance, setting this `ratio` to `0.5` will make `Pager` reveal half of the next item tops. + public func partialPagination(_ ratio: CGFloat, sensitivity: PaginationSensitivity) -> Self { + mutating(keyPath: \.paginationRatio, value: min(1, max(0, ratio))) + .mutating(keyPath: \.allowsMultiplePagination, value: false) + .mutating(keyPath: \.sensitivity, value: sensitivity) + } + #if !os(tvOS) /// Sensitivity used to determine whether or not to swipe the page diff --git a/Sources/SwiftUIPager/Pager.swift b/Sources/SwiftUIPager/Pager.swift index becba7c..3b38c25 100644 --- a/Sources/SwiftUIPager/Pager.swift +++ b/Sources/SwiftUIPager/Pager.swift @@ -64,6 +64,9 @@ public struct Pager: View where PageView: View, Element: /*** ViewModified properties ***/ + /// Max relative ratio that `Pager` should scroll before determining wether to move to the next page or not + var paginationRatio: CGFloat? + /// Animation to be applied when the user stops dragging var pagingAnimation: ((DragResult) -> PagingAnimation)? @@ -200,6 +203,7 @@ public struct Pager: View where PageView: View, Element: .onDraggingBegan(onDraggingBegan) .padding(sideInsets) .pagingAnimation(pagingAnimation) + .partialPagination(paginationRatio) #if !os(tvOS) pagerContent = pagerContent diff --git a/Sources/SwiftUIPager/PagerContent+Buildable.swift b/Sources/SwiftUIPager/PagerContent+Buildable.swift index 601ac54..002031e 100644 --- a/Sources/SwiftUIPager/PagerContent+Buildable.swift +++ b/Sources/SwiftUIPager/PagerContent+Buildable.swift @@ -56,6 +56,18 @@ extension Pager.PagerContent: Buildable, PagerProxy { .mutating(keyPath: \.data, value: newData) } + /// Sets a limit to the dragging offset, affecting the pagination towards neighboring items. + /// When the limit is reached, items won't keep scrolling further. + /// This modifier is incompatible with `multiplePagination` and will modify its value. + /// + /// - Parameter ratio: max page percentage. Should be `0 < ratio < 1` + /// - Note: This modifier is incompatible with `multiplePagination` + /// + /// For instance, setting this `ratio` to `0.5` will make `Pager` reveal half of the next item tops. + func partialPagination(_ ratio: CGFloat?) -> Self { + mutating(keyPath: \.paginationRatio, value: ratio) + } + #if !os(tvOS) /// Sensitivity used to determine whether or not to swipe the page diff --git a/Sources/SwiftUIPager/PagerContent+Helper.swift b/Sources/SwiftUIPager/PagerContent+Helper.swift index a83651e..feae648 100644 --- a/Sources/SwiftUIPager/PagerContent+Helper.swift +++ b/Sources/SwiftUIPager/PagerContent+Helper.swift @@ -217,6 +217,7 @@ extension Pager.PagerContent { let numberOfPages = CGFloat(numberOfPagesDisplayed) let xIncrement = pageDistance / 2 let offset = (numberOfPages / 2 - indexOfPageFocused) * pageDistance - xIncrement + totalOffset + alignmentOffset + print(offset) return max(offsetUpperbound, min(offsetLowerbound, offset)) } diff --git a/Sources/SwiftUIPager/PagerContent.swift b/Sources/SwiftUIPager/PagerContent.swift index 50d46df..6f4ea7c 100644 --- a/Sources/SwiftUIPager/PagerContent.swift +++ b/Sources/SwiftUIPager/PagerContent.swift @@ -50,6 +50,9 @@ extension Pager { /*** ViewModified properties ***/ + /// Max relative ratio that `Pager` should scroll before determining wether to move to the next page or not + var paginationRatio: CGFloat? + /// Animation to be applied when the user stops dragging var pagingAnimation: ((DragResult) -> PagingAnimation)? @@ -246,7 +249,13 @@ extension Pager.PagerContent { self.draggingVelocity = Double(offsetIncrement) / timeIncrement } - self.draggingOffset += offsetIncrement + var newOffset = self.draggingOffset + offsetIncrement + if let ratio = self.paginationRatio { + newOffset = self.direction == .forward ? max(newOffset, ratio * -self.pageDistance) : min(newOffset, ratio * self.pageDistance) + } + +// print("(\(newOffset), \(self.draggingVelocity)") + self.draggingOffset = newOffset self.lastDraggingValue = value } } @@ -265,6 +274,7 @@ extension Pager.PagerContent { let pagingAnimation = self.pagingAnimation?((pageIndex, newPage, draggingOffset, draggingVelocity)) ?? defaultPagingAnimation +// print(self.draggingOffset) let animation = pagingAnimation.animation.speed(speed) withAnimation(animation) { self.draggingOffset = 0 From 98d034a5f6f4e722322c23bc61f6895901d273ba Mon Sep 17 00:00:00 2001 From: fermoya Date: Wed, 25 Nov 2020 19:14:23 +0000 Subject: [PATCH 2/5] Remove prints --- Sources/SwiftUIPager/PagerContent+Helper.swift | 1 - Sources/SwiftUIPager/PagerContent.swift | 2 -- 2 files changed, 3 deletions(-) diff --git a/Sources/SwiftUIPager/PagerContent+Helper.swift b/Sources/SwiftUIPager/PagerContent+Helper.swift index feae648..a83651e 100644 --- a/Sources/SwiftUIPager/PagerContent+Helper.swift +++ b/Sources/SwiftUIPager/PagerContent+Helper.swift @@ -217,7 +217,6 @@ extension Pager.PagerContent { let numberOfPages = CGFloat(numberOfPagesDisplayed) let xIncrement = pageDistance / 2 let offset = (numberOfPages / 2 - indexOfPageFocused) * pageDistance - xIncrement + totalOffset + alignmentOffset - print(offset) return max(offsetUpperbound, min(offsetLowerbound, offset)) } diff --git a/Sources/SwiftUIPager/PagerContent.swift b/Sources/SwiftUIPager/PagerContent.swift index 6f4ea7c..0c882dc 100644 --- a/Sources/SwiftUIPager/PagerContent.swift +++ b/Sources/SwiftUIPager/PagerContent.swift @@ -254,7 +254,6 @@ extension Pager.PagerContent { newOffset = self.direction == .forward ? max(newOffset, ratio * -self.pageDistance) : min(newOffset, ratio * self.pageDistance) } -// print("(\(newOffset), \(self.draggingVelocity)") self.draggingOffset = newOffset self.lastDraggingValue = value } @@ -274,7 +273,6 @@ extension Pager.PagerContent { let pagingAnimation = self.pagingAnimation?((pageIndex, newPage, draggingOffset, draggingVelocity)) ?? defaultPagingAnimation -// print(self.draggingOffset) let animation = pagingAnimation.animation.speed(speed) withAnimation(animation) { self.draggingOffset = 0 From e0d13e9327ac8c48395999ed1fb3c1f9190a90f5 Mon Sep 17 00:00:00 2001 From: fermoya Date: Thu, 26 Nov 2020 12:41:48 +0000 Subject: [PATCH 3/5] Renamed to singlePagination and tests --- Documentation/Usage.md | 32 ++++++++++++++ .../Examples/InfiniteExampleView.swift | 2 +- README.md | 2 + Sources/SwiftUIPager/Pager+Buildable.swift | 30 ++++++------- Sources/SwiftUIPager/Pager.swift | 6 +-- .../SwiftUIPager/PagerContent+Buildable.swift | 4 +- Sources/SwiftUIPager/PagerContent.swift | 8 ++-- .../Pager+Buildable_Tests.swift | 42 ++++++++++++++++++- 8 files changed, 100 insertions(+), 26 deletions(-) diff --git a/Documentation/Usage.md b/Documentation/Usage.md index fbbdf23..57eb5c0 100644 --- a/Documentation/Usage.md +++ b/Documentation/Usage.md @@ -98,6 +98,21 @@ Pager(...) Pages positioned at the start of the horizontal pager +### Partial pagination + +By default, `Pager` will reveal the neighbor items completely (100% of their relative size). If you wish to limit this _reveal ratio_, you can use `singlePatination(ratio:sensitivity)` to modify this ratio: + +```swift +Pager(...) + .singlePagination(0.33, sensitivity: .custom(0.2)) + .preferredItemSize(CGSize(width: 300, height: 400)) + .itemSpacing(10) + .background(Color.gray.opacity(0.2)) +``` +Reveal Ratio set to a third of the page + +For more information about `sensitivity`, check out [Pagination sensitivity](#pagination-sensitivity). + ### Multiple pagination It's possible for `Pager` to swipe more than one page at a time. This is especially useful if your page size is small. Use `multiplePagination`. @@ -182,6 +197,23 @@ Transform your `Pager` into an endless sroll by using `loopPages`: **Note**: You'll need a minimum number of elements to use this modifier based on the page size. If you need more items, use `loopPages(repeating:)` to let `Pager` know elements should be repeated in batches. +## Page Tranistions + +Use `pagingAnimation` to customize the _transition_ to the next page once the drag has ended. This is achieve by a block with a `DragResult`which contains: +* Current page +* Next page +* Total shift +* Velocity + +By default, `pagingAnimation`is set to `standard`(a.k.a, `.easeOut`) for `singlePagination`and `steep`([custom bezier curve](https://cubic-bezier.com/#.2,1,.9,1)) for `multiplePagination`. If you wish to change the animation, you could do it as follows: + +```swift +Pager(...) + .pagingAnimation({ currentPage, nextPage, totalShift, velocity in + return PagingAnimation.custom(animation: .easeInOut) + }) +``` + ## Events Use `onPageChanged` to react to any change on the page index: diff --git a/Example/SwiftUIPagerExample/Examples/InfiniteExampleView.swift b/Example/SwiftUIPagerExample/Examples/InfiniteExampleView.swift index 13a2070..a3d3464 100644 --- a/Example/SwiftUIPagerExample/Examples/InfiniteExampleView.swift +++ b/Example/SwiftUIPagerExample/Examples/InfiniteExampleView.swift @@ -28,7 +28,7 @@ struct InfiniteExampleView: View { id: \.self) { self.pageView($0) } - .partialPagination(0.5, sensitivity: .high) + .singlePagination(ratio: 0.5, sensitivity: .high) .onPageChanged({ page in guard page == self.data1.count - 2 else { return } guard let last = self.data1.last else { return } diff --git a/README.md b/README.md index 5110ed9..d6fb117 100644 --- a/README.md +++ b/README.md @@ -26,12 +26,14 @@ Create vertical or horizontal pagers, align the cards, change the direction of t - [Pagination sensitivity](Documentation/Usage.md#pagination-sensitivity) - [Orientation and direction](Documentation/Usage.md#orientation-and-direction) - [Alignment](Documentation/Usage.md#alignment) + - [Partial pagination](Documentation/Usage.md#partial-pagination) - [Multiple pagination](Documentation/Usage.md#multiple-pagination) - [Paging Priority](Documentation/Usage.md#paging-priority) - [Animations](Documentation/Usage.md#animations) - [Scale](Documentation/Usage.md#scale) - [Rotation](Documentation/Usage.md#rotation) - [Loop](Documentation/Usage.md#loop) + - [Page Tranistions](Documentation/Usage.md#page-transitions) - [Add pages on demand](Documentation/Usage.md#add-pages-on-demand) - [Content Loading Policy](Documentation/Usage.md#content-loading-policy) - [Examples](Documentation/Usage.md#examples) diff --git a/Sources/SwiftUIPager/Pager+Buildable.swift b/Sources/SwiftUIPager/Pager+Buildable.swift index 5e018a9..4f5873c 100644 --- a/Sources/SwiftUIPager/Pager+Buildable.swift +++ b/Sources/SwiftUIPager/Pager+Buildable.swift @@ -29,6 +29,21 @@ extension Pager: Buildable, PagerProxy { .mutating(keyPath: \.contentLoadingPolicy, value: .eager) } + /// Allows to scroll one page at a time. Use `ratio` to limit next item's reveal ratio. + /// Once reached, items won't keep scrolling further. + /// `Pager` will use then `sensitivity` to determine whether to paginate to the next page. + /// + /// - Parameter ratio: max page reveal ratio. Should be `0 < ratio < 1`. `default` is `1` + /// - Parameter sensitivity: sensitivity to be applied when paginating. `default` is `medium` a.k.a `0.5` + /// + /// For instance, setting `ratio` to `0.33` will make `Pager` reveal up to a third of the next item. + /// A proper `sensitivy` for this scenario would be `high` (a.k.a, `0.33`) or a custom value lower than `ratio` + public func singlePagination(ratio: CGFloat = 1, sensitivity: PaginationSensitivity = .medium) -> Self { + mutating(keyPath: \.pageRatio, value: min(1, max(0, ratio))) + .mutating(keyPath: \.allowsMultiplePagination, value: false) + .mutating(keyPath: \.sensitivity, value: sensitivity) + } + /// Sets the policy followed to load `Pager` content. /// /// - Parameter value: policy to load the content. @@ -52,21 +67,6 @@ extension Pager: Buildable, PagerProxy { .mutating(keyPath: \.loopingCount, value: count) } - /// Sets a limit to the dragging offset, affecting the pagination towards neighboring items. - /// When the limit is reached, items won't keep scrolling further. - /// This modifier is incompatible with `multiplePagination` and will modify its value. - /// - /// - Parameter ratio: max page percentage. Should be `0 < ratio < 1` - /// - Parameter value: sensitivity to be applied when paginating - /// - Note: This modifier is incompatible with `multiplePagination` - /// - /// For instance, setting this `ratio` to `0.5` will make `Pager` reveal half of the next item tops. - public func partialPagination(_ ratio: CGFloat, sensitivity: PaginationSensitivity) -> Self { - mutating(keyPath: \.paginationRatio, value: min(1, max(0, ratio))) - .mutating(keyPath: \.allowsMultiplePagination, value: false) - .mutating(keyPath: \.sensitivity, value: sensitivity) - } - #if !os(tvOS) /// Sensitivity used to determine whether or not to swipe the page diff --git a/Sources/SwiftUIPager/Pager.swift b/Sources/SwiftUIPager/Pager.swift index 3b38c25..9f5d8c3 100644 --- a/Sources/SwiftUIPager/Pager.swift +++ b/Sources/SwiftUIPager/Pager.swift @@ -64,8 +64,8 @@ public struct Pager: View where PageView: View, Element: /*** ViewModified properties ***/ - /// Max relative ratio that `Pager` should scroll before determining wether to move to the next page or not - var paginationRatio: CGFloat? + /// Max relative item size that `Pager` will scroll before determining whether to move to the next page + var pageRatio: CGFloat = 1 /// Animation to be applied when the user stops dragging var pagingAnimation: ((DragResult) -> PagingAnimation)? @@ -203,7 +203,7 @@ public struct Pager: View where PageView: View, Element: .onDraggingBegan(onDraggingBegan) .padding(sideInsets) .pagingAnimation(pagingAnimation) - .partialPagination(paginationRatio) + .partialPagination(pageRatio) #if !os(tvOS) pagerContent = pagerContent diff --git a/Sources/SwiftUIPager/PagerContent+Buildable.swift b/Sources/SwiftUIPager/PagerContent+Buildable.swift index 002031e..192f816 100644 --- a/Sources/SwiftUIPager/PagerContent+Buildable.swift +++ b/Sources/SwiftUIPager/PagerContent+Buildable.swift @@ -64,8 +64,8 @@ extension Pager.PagerContent: Buildable, PagerProxy { /// - Note: This modifier is incompatible with `multiplePagination` /// /// For instance, setting this `ratio` to `0.5` will make `Pager` reveal half of the next item tops. - func partialPagination(_ ratio: CGFloat?) -> Self { - mutating(keyPath: \.paginationRatio, value: ratio) + func partialPagination(_ ratio: CGFloat) -> Self { + mutating(keyPath: \.pageRatio, value: ratio) } #if !os(tvOS) diff --git a/Sources/SwiftUIPager/PagerContent.swift b/Sources/SwiftUIPager/PagerContent.swift index 0c882dc..b8c432b 100644 --- a/Sources/SwiftUIPager/PagerContent.swift +++ b/Sources/SwiftUIPager/PagerContent.swift @@ -50,8 +50,8 @@ extension Pager { /*** ViewModified properties ***/ - /// Max relative ratio that `Pager` should scroll before determining wether to move to the next page or not - var paginationRatio: CGFloat? + /// Max relative item size that `Pager` will scroll before determining whether to move to the next page + var pageRatio: CGFloat = 1 /// Animation to be applied when the user stops dragging var pagingAnimation: ((DragResult) -> PagingAnimation)? @@ -250,8 +250,8 @@ extension Pager.PagerContent { } var newOffset = self.draggingOffset + offsetIncrement - if let ratio = self.paginationRatio { - newOffset = self.direction == .forward ? max(newOffset, ratio * -self.pageDistance) : min(newOffset, ratio * self.pageDistance) + if !allowsMultiplePagination { + newOffset = self.direction == .forward ? max(newOffset, self.pageRatio * -self.pageDistance) : min(newOffset, self.pageRatio * self.pageDistance) } self.draggingOffset = newOffset diff --git a/Tests/SwiftUIPagerTests/Pager+Buildable_Tests.swift b/Tests/SwiftUIPagerTests/Pager+Buildable_Tests.swift index efefb90..0f51866 100644 --- a/Tests/SwiftUIPagerTests/Pager+Buildable_Tests.swift +++ b/Tests/SwiftUIPagerTests/Pager+Buildable_Tests.swift @@ -36,6 +36,7 @@ final class Pager_Buildable_Tests: XCTestCase { XCTAssertEqual(pager.allowsMultiplePagination, false) XCTAssertNil(pager.pagingAnimation) XCTAssertEqual(pager.sensitivity, .default) + XCTAssertEqual(pager.pageRatio, 1) let pagerContent = pager.content(for: CGSize(width: 100, height: 100)) XCTAssertNil(pagerContent.direction) @@ -43,6 +44,41 @@ final class Pager_Buildable_Tests: XCTestCase { XCTAssertFalse(pagerContent.isDragging) } + func test_GivenPager_WhenSinglePagination_ThenRatioChanges() { + var pager = givenPager + pager = pager.singlePagination(ratio: 0.33, sensitivity: .high) + + let pagerContent = pager.content(for: CGSize(width: 100, height: 100)) + XCTAssertEqual(pagerContent.sensitivity, .high) + XCTAssertEqual(pagerContent.pageRatio, 0.33) + } + + func test_GivenPager_WhenSinglePaginationNegativeValue_ThenRatioZero() { + var pager = givenPager + pager = pager.singlePagination(ratio: -0.33, sensitivity: .high) + + let pagerContent = pager.content(for: CGSize(width: 100, height: 100)) + XCTAssertEqual(pagerContent.sensitivity, .high) + XCTAssertEqual(pagerContent.pageRatio, 0) + } + + func test_GivenPager_WhenSinglePaginationTooLarge_ThenRatio1() { + var pager = givenPager + pager = pager.singlePagination(ratio: 1.2, sensitivity: .high) + + let pagerContent = pager.content(for: CGSize(width: 100, height: 100)) + XCTAssertEqual(pagerContent.sensitivity, .high) + XCTAssertEqual(pagerContent.pageRatio, 1) + } + + func test_GivenMultiplePaginationPager_WhenSinglePagination_ThenAllowsMultiplePaginationFalse() { + var pager = givenPager.multiplePagination() + pager = pager.singlePagination() + + let pagerContent = pager.content(for: CGSize(width: 100, height: 100)) + XCTAssertFalse(pagerContent.allowsMultiplePagination) + } + func test_GivenPager_WhenSensitivityHigh_ThenSensitivityHigh() { var pager = givenPager pager = pager.sensitivity(.high) @@ -540,7 +576,11 @@ final class Pager_Buildable_Tests: XCTestCase { ("test_GivenPager_WhenMultiplePagination_ThenAllowsMultiplePagination", test_GivenPager_WhenMultiplePagination_ThenAllowsMultiplePagination), ("test_GivenPager_WhenPagingAnimation_ThenPagingAnimationNotNil", test_GivenPager_WhenPagingAnimation_ThenPagingAnimationNotNil), ("test_GivenPager_WhenPageOffsetPositive_ThenDirectionForward", test_GivenPager_WhenPageOffsetPositive_ThenDirectionForward), - ("test_GivenPager_WhenPageOffsetNegative_ThenDirectionBackward", test_GivenPager_WhenPageOffsetNegative_ThenDirectionBackward) + ("test_GivenPager_WhenPageOffsetNegative_ThenDirectionBackward", test_GivenPager_WhenPageOffsetNegative_ThenDirectionBackward), + ("test_GivenPager_WhenSinglePagination_ThenRatioChanges", test_GivenPager_WhenSinglePagination_ThenRatioChanges), + ("test_GivenPager_WhenSinglePaginationNegativeValue_ThenRatioZero", test_GivenPager_WhenSinglePaginationNegativeValue_ThenRatioZero), + ("test_GivenPager_WhenSinglePaginationTooLarge_ThenRatio1", test_GivenPager_WhenSinglePaginationTooLarge_ThenRatio1), + ("test_GivenMultiplePaginationPager_WhenSinglePagination_ThenAllowsMultiplePaginationFalse", test_GivenMultiplePaginationPager_WhenSinglePagination_ThenAllowsMultiplePaginationFalse) ] } From 9b95bcf357042da819d6fa8e52b23157a60cd87c Mon Sep 17 00:00:00 2001 From: fermoya Date: Thu, 26 Nov 2020 12:45:43 +0000 Subject: [PATCH 4/5] Set up last xcode to create xcframework --- .github/workflows/create-release.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index e570248..85ec871 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -17,6 +17,10 @@ jobs: steps: - uses: actions/checkout@v2 + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + - name: Create XCFramework id: xcframework run: ./scripts/build_xcframework.sh From 6e083a9ef8a734bc140fe173463700d2c834dcba Mon Sep 17 00:00:00 2001 From: fermoya Date: Thu, 26 Nov 2020 12:48:18 +0000 Subject: [PATCH 5/5] Update release notes --- release_description.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release_description.md b/release_description.md index 66e580c..a5fd51d 100644 --- a/release_description.md +++ b/release_description.md @@ -1,5 +1,5 @@ ### Features -- New modifier to adjust pagination sensitivity +- New modifier to switch back to `singlePagination` and provide a reveal `ratio` ### Fixes -- Fixed `animation` disabled with infinite pagers +- Enhancement on the pagination animation