FileUploadPattern

fun FileUploadPattern(pattern: FileUploadPatternState, modifier: Modifier = Modifier, content: @Composable (onClick: () -> Unit) -> Unit)(source)

High-level wrapper composable that integrates file upload pattern with any component.

This composable allows you to wrap any component (button, surface, image, etc.) with file upload functionality. The pattern handles all file picking logic while you control the UI trigger.

For displaying selected files, use PreviewFile or FileUploadList separately.

Parameters

modifier

Modifier to be applied to the container

content

Composable lambda that receives an onClick function to trigger file selection. This can be any component that accepts an onClick callback.

Samples

var selectedFiles by remember {
    mutableStateOf<ImmutableList<UploadedFile>?>(null)
}
val pattern = rememberFileUploadPattern(
    onFilesSelect = { files -> selectedFiles = files },
)

Column(modifier = Modifier.fillMaxWidth()) {
    FileUploadPattern(pattern = pattern) { onClick ->
        ButtonTinted(
            onClick = onClick,
            text = "Pick files",
            icon = LeboncoinIcons.ImageOutline,
            iconSide = IconSide.START,
            modifier = Modifier.fillMaxWidth(),
        )
    }

    VerticalSpacer(16.dp)

    selectedFiles?.let { files ->
        FileUploadList(
            files = files,
            onClearFile = { file ->
                selectedFiles = selectedFiles?.filterNot { it == file }?.toImmutableList()
            },
            onClick = { file -> FileUploadDefaults.openFile(file) },
        )
    }
}