SpatialPopup
Opens a popup with the given content.
A popup is a floating container that appears on top of the current window with a fixed spatial z offset. It is especially useful for non-modal UI surfaces that remain hidden until they are needed, for example floating widgets like Cut/Copy/Paste.
The popup is positioned relative to its anchor view, using the popupPositionProvider. You can use rememberSpatialPopupPositionProvider to create a PopupPositionProvider that places the popup relative to it's anchor view.
Parameters
Executes when the user clicks outside of the popup.
Modifier for the popup.
Provides the screen position of the popup, see rememberSpatialPopupPositionProvider.
The corner radius of the popup.
The minimum width of the popup. Use Dp.Unspecified to wrap content size.
The minimum height of the popup. Use Dp.Unspecified to wrap content size.
PopupProperties for further customization of this popup's behavior.
The content to be displayed inside the popup.
Samples
import androidx.compose.foundation.layout.Box
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.pico.spatial.ui.design.Button
import com.pico.spatial.ui.design.Text
import com.pico.spatial.ui.design.windows.SpatialPopup
import com.pico.spatial.ui.design.windows.popup.HorizontalPlacement
import com.pico.spatial.ui.design.windows.popup.VerticalPlacement
import com.pico.spatial.ui.design.windows.rememberSpatialPopupPositionProvider
fun main() {
//sampleStart
// declare show state
var showPopup by remember { mutableStateOf(false) }
Box {
// declare a popup
if (showPopup) {
SpatialPopup(
onDismissRequest = {
// dismiss popup
showPopup = false
}
) {
// popup content
Text(text = "SpatialPopup", modifier = Modifier.align(Alignment.Center))
}
}
// use Button as anchor
Button(
onClick = {
// show popup
showPopup = true
}
) {
Text("show popup")
}
}
//sampleEnd
}import androidx.compose.foundation.layout.Box
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.pico.spatial.ui.design.Button
import com.pico.spatial.ui.design.Text
import com.pico.spatial.ui.design.windows.SpatialPopup
import com.pico.spatial.ui.design.windows.popup.HorizontalPlacement
import com.pico.spatial.ui.design.windows.popup.VerticalPlacement
import com.pico.spatial.ui.design.windows.rememberSpatialPopupPositionProvider
fun main() {
//sampleStart
var showPopup by remember { mutableStateOf(false) }
Box {
if (showPopup) {
SpatialPopup(
// use Dp.Unspecified to wrap content size
defaultMinHeight = Dp.Unspecified,
defaultMinWidth = Dp.Unspecified,
onDismissRequest = { showPopup = false },
) {
Text(text = "SpatialPopup", modifier = Modifier.align(Alignment.Center))
}
}
Button(onClick = { showPopup = true }) { Text("show popup") }
}
//sampleEnd
}