Skip to content

Commit

Permalink
add a checkbox to toggle links in the Markdown standalone showcase
Browse files Browse the repository at this point in the history
  • Loading branch information
hamen committed Jul 8, 2024
1 parent efc4785 commit 4516bbc
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,20 @@ import org.jetbrains.jewel.ui.component.Divider
fun MarkdownDemo() {
Row(Modifier.trackActivation().fillMaxSize().background(JewelTheme.globalColors.panelBackground)) {
var currentMarkdown by remember { mutableStateOf(JewelReadme) }
MarkdownEditor(currentMarkdown, { currentMarkdown = it }, Modifier.fillMaxHeight().weight(1f))
var linksAreEnabled by remember { mutableStateOf(true) }
MarkdownEditor(
currentMarkdown = currentMarkdown,
onMarkdownChange = { currentMarkdown = it },
onLinksEnabledChange = { linksAreEnabled = it },
modifier = Modifier.fillMaxHeight().weight(1f),
)

Divider(Orientation.Vertical, Modifier.fillMaxHeight())

MarkdownPreview(currentMarkdown, Modifier.fillMaxHeight().weight(1f))
MarkdownPreview(
modifier = Modifier.fillMaxHeight().weight(1f),
rawMarkdown = currentMarkdown,
linksAreEnabled = linksAreEnabled,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import com.darkrockstudios.libraries.mpfilepicker.JvmFile
import org.jetbrains.jewel.foundation.theme.JewelTheme
import org.jetbrains.jewel.samples.standalone.StandaloneSampleIcons
import org.jetbrains.jewel.ui.Orientation
import org.jetbrains.jewel.ui.component.Checkbox
import org.jetbrains.jewel.ui.component.Divider
import org.jetbrains.jewel.ui.component.Icon
import org.jetbrains.jewel.ui.component.OutlinedButton
Expand All @@ -36,22 +37,29 @@ import org.jetbrains.jewel.ui.component.TextArea
internal fun MarkdownEditor(
currentMarkdown: String,
onMarkdownChange: (String) -> Unit,
onLinksEnabledChange: (Boolean) -> Unit,
modifier: Modifier = Modifier,
) {
Column(modifier) {
ControlsRow(
onMarkdownChange,
Modifier.fillMaxWidth().background(JewelTheme.globalColors.panelBackground).padding(8.dp),
modifier = Modifier.fillMaxWidth().background(JewelTheme.globalColors.panelBackground).padding(8.dp),
onMarkdownChange = onMarkdownChange,
onLinksEnabledChange = onLinksEnabledChange,
)
Divider(orientation = Orientation.Horizontal)
Editor(currentMarkdown, onMarkdownChange, Modifier.fillMaxWidth().weight(1f))
Editor(
currentMarkdown = currentMarkdown,
onMarkdownChange = onMarkdownChange,
modifier = Modifier.fillMaxWidth().weight(1f),
)
}
}

@Composable
private fun ControlsRow(
onMarkdownChange: (String) -> Unit,
modifier: Modifier = Modifier,
onMarkdownChange: (String) -> Unit,
onLinksEnabledChange: (Boolean) -> Unit,
) {
Row(
modifier.horizontalScroll(rememberScrollState()),
Expand Down Expand Up @@ -118,14 +126,28 @@ private fun ControlsRow(
}
}
}

var linksAreEnabled by remember { mutableStateOf(true) }
Row(
verticalAlignment = Alignment.CenterVertically,
) {
Text("Links enabled")
Checkbox(
checked = linksAreEnabled,
onCheckedChange = {
linksAreEnabled = it
onLinksEnabledChange(it)
},
)
}
}
}

@Composable
private fun Editor(
currentMarkdown: String,
onMarkdownChange: (String) -> Unit,
modifier: Modifier,
modifier: Modifier = Modifier,
) {
val monospacedTextStyle = JewelTheme.defaultTextStyle.copy(fontFamily = FontFamily.Monospace)
Box(modifier.padding(16.dp)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,9 @@ import java.net.URI

@Composable
internal fun MarkdownPreview(
rawMarkdown: String,
modifier: Modifier = Modifier,
rawMarkdown: String,
linksAreEnabled: Boolean,
) {
val isDark = JewelTheme.isDark

Expand Down Expand Up @@ -91,8 +92,8 @@ internal fun MarkdownPreview(
contentPadding = PaddingValues(16.dp),
state = lazyListState,
selectable = true,
enabled = linksAreEnabled,
onUrlClick = { url -> Desktop.getDesktop().browse(URI.create(url)) },
onTextClick = { },
)

VerticalScrollbar(
Expand Down

0 comments on commit 4516bbc

Please sign in to comment.