Skip to content

Commit 952e3ee

Browse files
committed
Add compactSliderOnChange modifier to observe configuration
1 parent b78c043 commit 952e3ee

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

Sources/CompactSlider/CompactSlider.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ public struct CompactSlider<Value: BinaryFloatingPoint, Point: CompactSliderPoin
133133
@Environment(\.compactSliderGridStyle) var compactSliderGridStyle
134134
@Environment(\.compactSliderCircularGridStyle) var compactSliderCircularGridStyle
135135
@Environment(\.compactSliderAnimations) var animations
136+
@Environment(\.compactSliderOnChangeAction) var onChangeAction
136137

137138
let bounds: ClosedRange<Value>
138139
let pointBounds: ClosedRange<Point>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// The MIT License (MIT)
2+
//
3+
// Copyright (c) 2025 Alexey Bukhtin (github.com/buh).
4+
//
5+
6+
import SwiftUI
7+
8+
struct CompactSliderOnChangeActionKey: EnvironmentKey {
9+
static var defaultValue: ((CompactSliderStyleConfiguration) -> Void)? = nil
10+
}
11+
12+
extension EnvironmentValues {
13+
var compactSliderOnChangeAction: ((CompactSliderStyleConfiguration) -> Void)? {
14+
get { self[CompactSliderOnChangeActionKey.self] }
15+
set { self[CompactSliderOnChangeActionKey.self] = newValue }
16+
}
17+
}
18+
19+
// MARK: - View
20+
21+
extension View {
22+
/// Adds an action to perform when the slider configuration (progress, focus state and etc) changes.
23+
public func compactSliderOnChange(
24+
action: @escaping (_ configuration: CompactSliderStyleConfiguration) -> Void
25+
) -> some View {
26+
environment(\.compactSliderOnChangeAction, action)
27+
}
28+
}

0 commit comments

Comments
 (0)