Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Sources/Sliders/Base/DefaultHorizontalValueView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import SwiftUI
public struct DefaultHorizontalValueView: View {
public var body: some View {
Capsule()
.foregroundColor(.accentColor)
.foregroundColor(Color.accentColor)
.frame(height: 3)
}
}
2 changes: 1 addition & 1 deletion Sources/Sliders/Base/DefaultVerticalValueView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import SwiftUI
public struct DefaultVerticalValueView: View {
public var body: some View {
Capsule()
.foregroundColor(.accentColor)
.foregroundColor(Color.accentColor)
.frame(width: 3)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,16 @@ public struct RectangularPointSliderStyle<Track: View, Thumb: View>: PointSlider
yBounds: configuration.yBounds,
yStep: configuration.yStep
))
.accentColor(.accentColor)
.accentColor(Color.accentColor)

return GeometryReader { geometry in
ZStack {
if self.options.contains(.interactiveTrack) {
track.gesture(
DragGesture(minimumDistance: 0)
.onChanged { gestureValue in
configuration.onEditingChanged(true)

let computedValueX = valueFrom(
distance: gestureValue.location.x,
availableDistance: geometry.size.width,
Expand All @@ -33,7 +35,7 @@ public struct RectangularPointSliderStyle<Track: View, Thumb: View>: PointSlider
leadingOffset: self.thumbSize.width / 2,
trailingOffset: self.thumbSize.width / 2
)

let computedValueY = configuration.yBounds.upperBound - valueFrom(
distance: gestureValue.location.y,
availableDistance: geometry.size.height,
Expand All @@ -42,10 +44,9 @@ public struct RectangularPointSliderStyle<Track: View, Thumb: View>: PointSlider
leadingOffset: self.thumbSize.height / 2,
trailingOffset: self.thumbSize.height / 2
)

configuration.x.wrappedValue = computedValueX
configuration.y.wrappedValue = computedValueY
configuration.onEditingChanged(true)
}
.onEnded { _ in
configuration.onEditingChanged(false)
Expand All @@ -54,7 +55,7 @@ public struct RectangularPointSliderStyle<Track: View, Thumb: View>: PointSlider
} else {
track
}

ZStack {
self.thumb
.frame(width: self.thumbSize.width, height: self.thumbSize.height)
Expand All @@ -80,6 +81,8 @@ public struct RectangularPointSliderStyle<Track: View, Thumb: View>: PointSlider
.gesture(
DragGesture()
.onChanged { gestureValue in
configuration.onEditingChanged(true)

if configuration.dragOffset.wrappedValue == nil {
let gragOffsetX = gestureValue.startLocation.x - distanceFrom(
value: configuration.x.wrappedValue,
Expand All @@ -88,18 +91,18 @@ public struct RectangularPointSliderStyle<Track: View, Thumb: View>: PointSlider
leadingOffset: self.thumbSize.width / 2,
trailingOffset: self.thumbSize.width / 2
)

let dragOffsetY = gestureValue.startLocation.y - (geometry.size.height - distanceFrom(
value: configuration.y.wrappedValue,
availableDistance: geometry.size.height,
bounds: configuration.yBounds,
leadingOffset: self.thumbSize.height / 2,
trailingOffset: self.thumbSize.height / 2
))

configuration.dragOffset.wrappedValue = CGPoint(x: gragOffsetX, y: dragOffsetY)
}

let computedValueX = valueFrom(
distance: gestureValue.location.x - (configuration.dragOffset.wrappedValue?.x ?? 0),
availableDistance: geometry.size.width,
Expand All @@ -108,7 +111,7 @@ public struct RectangularPointSliderStyle<Track: View, Thumb: View>: PointSlider
leadingOffset: self.thumbSize.width / 2,
trailingOffset: self.thumbSize.width / 2
)

let computedValueY = valueFrom(
distance: geometry.size.height - (gestureValue.location.y - (configuration.dragOffset.wrappedValue?.y ?? 0)),
availableDistance: geometry.size.height,
Expand All @@ -117,23 +120,22 @@ public struct RectangularPointSliderStyle<Track: View, Thumb: View>: PointSlider
leadingOffset: self.thumbSize.height / 2,
trailingOffset: self.thumbSize.height / 2
)

configuration.x.wrappedValue = computedValueX
configuration.y.wrappedValue = computedValueY
configuration.onEditingChanged(true)
}
.onEnded { _ in
configuration.dragOffset.wrappedValue = nil
configuration.onEditingChanged(false)
}
)

}
.frame(width: geometry.size.width, height: geometry.size.height)
}
.frame(minWidth: self.thumbInteractiveSize.width, minHeight: self.thumbInteractiveSize.height)
}

public init(track: Track, thumb: Thumb, thumbSize: CGSize = CGSize(width: 27, height: 27), thumbInteractiveSize: CGSize = CGSize(width: 44, height: 44), options: PointSliderOptions = .defaultOptions) {
self.track = track
self.thumb = thumb
Expand Down Expand Up @@ -176,6 +178,6 @@ extension RectangularPointSliderStyle where Thumb == DefaultThumb, Track == Defa
public struct DefaultRectangularPointTrack: View {
public var body: some View {
Rectangle()
.foregroundColor(.accentColor)
.foregroundColor(Color.accentColor)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ public struct HorizontalRangeSliderStyle<Track: View, LowerThumb: View, UpperThu

let lowerThumbSize: CGSize
let upperThumbSize: CGSize

let lowerThumbInteractiveSize: CGSize
let upperThumbInteractiveSize: CGSize

private let options: RangeSliderOptions

let onSelectLower: () -> Void
let onSelectUpper: () -> Void

Expand All @@ -28,8 +28,8 @@ public struct HorizontalRangeSliderStyle<Track: View, LowerThumb: View, UpperThu
upperLeadingOffset: self.lowerThumbSize.width + self.upperThumbSize.width / 2,
upperTrailingOffset: self.upperThumbSize.width / 2
))
.accentColor(.accentColor)
.accentColor(Color.accentColor)

ZStack {
self.lowerThumb
.frame(width: self.lowerThumbSize.width, height: self.lowerThumbSize.height)
Expand All @@ -51,9 +51,10 @@ public struct HorizontalRangeSliderStyle<Track: View, LowerThumb: View, UpperThu
.gesture(
DragGesture()
.onChanged { gestureValue in

configuration.onEditingChanged(true)

self.onSelectLower()

if configuration.dragOffset.wrappedValue == nil {
configuration.dragOffset.wrappedValue = gestureValue.startLocation.x - distanceFrom(
value: configuration.range.wrappedValue.lowerBound,
Expand All @@ -63,7 +64,7 @@ public struct HorizontalRangeSliderStyle<Track: View, LowerThumb: View, UpperThu
trailingOffset: self.lowerThumbSize.width / 2
)
}

let computedLowerBound = valueFrom(
distance: gestureValue.location.x - (configuration.dragOffset.wrappedValue ?? 0),
availableDistance: geometry.size.width - self.upperThumbSize.width,
Expand All @@ -72,23 +73,21 @@ public struct HorizontalRangeSliderStyle<Track: View, LowerThumb: View, UpperThu
leadingOffset: self.lowerThumbSize.width / 2,
trailingOffset: self.lowerThumbSize.width / 2
)

if self.options.contains(.forceAdjacentValue) {
let computedUpperBound = max(computedLowerBound, configuration.range.wrappedValue.upperBound)
configuration.range.wrappedValue = computedLowerBound...computedUpperBound
} else {
let computedLowerBound = min(computedLowerBound, configuration.range.wrappedValue.upperBound)
configuration.range.wrappedValue = computedLowerBound...configuration.range.wrappedValue.upperBound
}

configuration.onEditingChanged(true)
}
.onEnded { _ in
configuration.dragOffset.wrappedValue = nil
configuration.onEditingChanged(false)
}
)

ZStack {
self.upperThumb
.frame(width: self.upperThumbSize.width, height: self.upperThumbSize.height)
Expand All @@ -110,7 +109,8 @@ public struct HorizontalRangeSliderStyle<Track: View, LowerThumb: View, UpperThu
.gesture(
DragGesture()
.onChanged { gestureValue in

configuration.onEditingChanged(true)

self.onSelectUpper()

if configuration.dragOffset.wrappedValue == nil {
Expand All @@ -122,7 +122,7 @@ public struct HorizontalRangeSliderStyle<Track: View, LowerThumb: View, UpperThu
trailingOffset: self.upperThumbSize.width / 2
)
}

let computedUpperBound = valueFrom(
distance: gestureValue.location.x - (configuration.dragOffset.wrappedValue ?? 0),
availableDistance: geometry.size.width,
Expand All @@ -131,7 +131,7 @@ public struct HorizontalRangeSliderStyle<Track: View, LowerThumb: View, UpperThu
leadingOffset: self.lowerThumbSize.width + self.upperThumbSize.width / 2,
trailingOffset: self.upperThumbSize.width / 2
)

if self.options.contains(.forceAdjacentValue) {
let computedLowerBound = min(computedUpperBound, configuration.range.wrappedValue.lowerBound)
configuration.range.wrappedValue = computedLowerBound...computedUpperBound
Expand All @@ -140,7 +140,6 @@ public struct HorizontalRangeSliderStyle<Track: View, LowerThumb: View, UpperThu
configuration.range.wrappedValue = configuration.range.wrappedValue.lowerBound...computedUpperBound
}

configuration.onEditingChanged(true)
}
.onEnded { _ in
configuration.dragOffset.wrappedValue = nil
Expand All @@ -153,7 +152,7 @@ public struct HorizontalRangeSliderStyle<Track: View, LowerThumb: View, UpperThu
}
.frame(minHeight: max(self.lowerThumbInteractiveSize.height, self.upperThumbInteractiveSize.height))
}

public init(track: Track, lowerThumb: LowerThumb, upperThumb: UpperThumb, lowerThumbSize: CGSize = CGSize(width: 27, height: 27), upperThumbSize: CGSize = CGSize(width: 27, height: 27), lowerThumbInteractiveSize: CGSize = CGSize(width: 44, height: 44), upperThumbInteractiveSize: CGSize = CGSize(width: 44, height: 44), options: RangeSliderOptions = .defaultOptions,
onSelectLower: @escaping () -> Void = {},
onSelectUpper: @escaping () -> Void = {}) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ public struct VerticalRangeSliderStyle<Track: View, LowerThumb: View, UpperThumb

let lowerThumbSize: CGSize
let upperThumbSize: CGSize

let lowerThumbInteractiveSize: CGSize
let upperThumbInteractiveSize: CGSize

private let options: RangeSliderOptions

public func makeBody(configuration: Self.Configuration) -> some View {
Expand All @@ -25,8 +25,8 @@ public struct VerticalRangeSliderStyle<Track: View, LowerThumb: View, UpperThumb
upperLeadingOffset: self.lowerThumbSize.height + self.upperThumbSize.height / 2,
upperTrailingOffset: self.upperThumbSize.height / 2
))
.accentColor(.accentColor)
.accentColor(Color.accentColor)

ZStack {
self.lowerThumb
.frame(width: self.lowerThumbSize.width, height: self.lowerThumbSize.height)
Expand All @@ -45,6 +45,8 @@ public struct VerticalRangeSliderStyle<Track: View, LowerThumb: View, UpperThumb
.gesture(
DragGesture()
.onChanged { gestureValue in
configuration.onEditingChanged(true)

if configuration.dragOffset.wrappedValue == nil {
configuration.dragOffset.wrappedValue = gestureValue.startLocation.y - (geometry.size.height - distanceFrom(
value: configuration.range.wrappedValue.lowerBound,
Expand All @@ -54,7 +56,7 @@ public struct VerticalRangeSliderStyle<Track: View, LowerThumb: View, UpperThumb
trailingOffset: self.lowerThumbSize.height / 2
))
}

let computedLowerBound = valueFrom(
distance: geometry.size.height - (gestureValue.location.y - (configuration.dragOffset.wrappedValue ?? 0)),
availableDistance: geometry.size.height - self.upperThumbSize.height,
Expand All @@ -63,16 +65,14 @@ public struct VerticalRangeSliderStyle<Track: View, LowerThumb: View, UpperThumb
leadingOffset: self.lowerThumbSize.height / 2,
trailingOffset: self.lowerThumbSize.height / 2
)

if self.options.contains(.forceAdjacentValue) {
let computedUpperBound = max(computedLowerBound, configuration.range.wrappedValue.upperBound)
configuration.range.wrappedValue = computedLowerBound...computedUpperBound
} else {
let computedLowerBound = min(computedLowerBound, configuration.range.wrappedValue.upperBound)
configuration.range.wrappedValue = computedLowerBound...configuration.range.wrappedValue.upperBound
}

configuration.onEditingChanged(true)
}
.onEnded { _ in
configuration.dragOffset.wrappedValue = nil
Expand All @@ -98,6 +98,8 @@ public struct VerticalRangeSliderStyle<Track: View, LowerThumb: View, UpperThumb
.gesture(
DragGesture()
.onChanged { gestureValue in
configuration.onEditingChanged(true)

if configuration.dragOffset.wrappedValue == nil {
configuration.dragOffset.wrappedValue = gestureValue.startLocation.y - (geometry.size.height - distanceFrom(
value: configuration.range.wrappedValue.upperBound,
Expand All @@ -107,7 +109,7 @@ public struct VerticalRangeSliderStyle<Track: View, LowerThumb: View, UpperThumb
trailingOffset: self.upperThumbSize.height / 2
))
}

let computedUpperBound = valueFrom(
distance: geometry.size.height - (gestureValue.location.y - (configuration.dragOffset.wrappedValue ?? 0)),
availableDistance: geometry.size.height,
Expand All @@ -116,29 +118,27 @@ public struct VerticalRangeSliderStyle<Track: View, LowerThumb: View, UpperThumb
leadingOffset: self.lowerThumbSize.height + self.upperThumbSize.height / 2,
trailingOffset: self.upperThumbSize.height / 2
)

if self.options.contains(.forceAdjacentValue) {
let computedLowerBound = min(computedUpperBound, configuration.range.wrappedValue.lowerBound)
configuration.range.wrappedValue = computedLowerBound...computedUpperBound
} else {
let computedUpperBound = max(computedUpperBound, configuration.range.wrappedValue.lowerBound)
configuration.range.wrappedValue = configuration.range.wrappedValue.lowerBound...computedUpperBound
}

configuration.onEditingChanged(true)
}
.onEnded { _ in
configuration.dragOffset.wrappedValue = nil
configuration.onEditingChanged(false)
}
)

}
.frame(width: geometry.size.width)
}
.frame(minWidth: max(self.lowerThumbInteractiveSize.width, self.upperThumbInteractiveSize.width))
}

public init(track: Track, lowerThumb: LowerThumb, upperThumb: UpperThumb, lowerThumbSize: CGSize = CGSize(width: 27, height: 27), upperThumbSize: CGSize = CGSize(width: 27, height: 27), lowerThumbInteractiveSize: CGSize = CGSize(width: 44, height: 44), upperThumbInteractiveSize: CGSize = CGSize(width: 44, height: 44), options: RangeSliderOptions = .defaultOptions) {
self.track = track
self.lowerThumb = lowerThumb
Expand Down
Loading