@@ -31,18 +31,18 @@ import androidx.compose.ui.semantics.contentDescription
3131import androidx.compose.ui.semantics.semantics
3232import androidx.compose.ui.unit.dp
3333import androidx.core.graphics.withRotation
34+ import co.yml.charts.common.components.accessibility.AccessibilityBottomSheetDialog
35+ import co.yml.charts.common.components.accessibility.SliceInfo
36+ import co.yml.charts.common.extensions.collectIsTalkbackEnabledAsState
37+ import co.yml.charts.common.extensions.getTextHeight
38+ import co.yml.charts.common.model.PlotType
3439import co.yml.charts.ui.piechart.PieChartConstants.MINIMUM_PERCENTAGE_FOR_SLICE_LABELS
3540import co.yml.charts.ui.piechart.models.PieChartConfig
3641import co.yml.charts.ui.piechart.models.PieChartData
3742import co.yml.charts.ui.piechart.utils.convertTouchEventPointToAngle
3843import co.yml.charts.ui.piechart.utils.getSliceCenterPoints
3944import co.yml.charts.ui.piechart.utils.proportion
4045import co.yml.charts.ui.piechart.utils.sweepAngles
41- import co.yml.charts.common.components.accessibility.AccessibilityBottomSheetDialog
42- import co.yml.charts.common.components.accessibility.SliceInfo
43- import co.yml.charts.common.extensions.collectIsTalkbackEnabledAsState
44- import co.yml.charts.common.extensions.getTextHeight
45- import co.yml.charts.common.model.PlotType
4646import kotlinx.coroutines.launch
4747import kotlin.math.abs
4848import kotlin.math.roundToInt
@@ -95,8 +95,8 @@ fun PieChart(
9595 Surface (
9696 modifier = modifier.fillMaxWidth()
9797 ) {
98- BoxWithConstraints (
99- modifier = modifier
98+ val boxModifier = if (pieChartConfig.isClickOnSliceEnabled) {
99+ modifier
100100 .aspectRatio(1f )
101101 .semantics {
102102 contentDescription = pieChartConfig.accessibilityConfig.chartDescription
@@ -107,7 +107,16 @@ fun PieChart(
107107 accessibilitySheetState.show()
108108 }
109109 }
110- },
110+ }
111+ } else {
112+ modifier
113+ .aspectRatio(1f )
114+ .semantics {
115+ contentDescription = pieChartConfig.accessibilityConfig.chartDescription
116+ }
117+ }
118+ BoxWithConstraints (
119+ modifier = boxModifier
111120 ) {
112121
113122 val sideSize = Integer .min(constraints.maxWidth, constraints.maxHeight)
@@ -124,24 +133,36 @@ fun PieChart(
124133 )
125134 }
126135 }
127- Canvas (modifier = Modifier
128- .width(sideSize.dp)
129- .height(sideSize.dp)
130- .pointerInput(true ) {
131-
132- detectTapGestures {
133- val clickedAngle = convertTouchEventPointToAngle(
134- sideSize.toFloat(), sideSize.toFloat(), it.x, it.y
135- )
136- progressSize.forEachIndexed { index, item ->
137- if (clickedAngle <= item) {
138- if (activePie != index) activePie = index
139- onSliceClick(pieChartData.slices[index])
140- return @detectTapGestures
136+ val canvasModifier = if (pieChartConfig.isClickOnSliceEnabled) {
137+ Modifier
138+ .width(sideSize.dp)
139+ .height(sideSize.dp)
140+ .pointerInput(true ) {
141+ detectTapGestures {
142+ val clickedAngle = convertTouchEventPointToAngle(
143+ sideSize.toFloat(),
144+ sideSize.toFloat(),
145+ it.x,
146+ it.y
147+ )
148+ progressSize.forEachIndexed { index, item ->
149+ if (clickedAngle <= item) {
150+ activePie = if (activePie != index)
151+ index
152+ else
153+ - 1
154+ onSliceClick(pieChartData.slices[index])
155+ return @detectTapGestures
156+ }
141157 }
142158 }
143159 }
144- }) {
160+ } else {
161+ Modifier
162+ .width(sideSize.dp)
163+ .height(sideSize.dp)
164+ }
165+ Canvas (modifier = canvasModifier) {
145166
146167 var sAngle = pieChartConfig.startAngle
147168
0 commit comments