From 2246061c038f5b9407506ec7d3ffdfdc3a3b1c85 Mon Sep 17 00:00:00 2001 From: Kostas Kougios Date: Mon, 5 Feb 2024 17:31:09 +0000 Subject: [PATCH] - --- docs/images/tutorial/read-value.png | Bin 0 -> 33321 bytes docs/tutorial.md | 58 ++++++++++++++++++++++++++ example-scripts/read-changed-value.sc | 30 +++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 docs/images/tutorial/read-value.png create mode 100755 example-scripts/read-changed-value.sc diff --git a/docs/images/tutorial/read-value.png b/docs/images/tutorial/read-value.png new file mode 100644 index 0000000000000000000000000000000000000000..88921fda027b50da9cbb35a1816fb5898b75649d GIT binary patch literal 33321 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%0AG;{ZPT9YCCl6fH_^LT0L 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 literal 0 HcmV?d00001 diff --git a/docs/tutorial.md b/docs/tutorial.md index ad02e9c2..4593813d 100644 --- a/docs/tutorial.md +++ b/docs/tutorial.md @@ -203,3 +203,61 @@ session.waitTillUserClosesSessionOr(exit) Now if we run it with `./on-click.sc` and click the button, the script will terminate. +## Reading updated values + +Some UI element values, like input boxes, can be changed by the user. We can read the changed value at any point of our +code or install an onChange handler so that we read the value as soon as the user changes it. + +Let's see how we can just read the value. The following script will create an email input box and a button. Whenever +the button is pressed, it will read the email and create a new paragraph with the email value. + +[read-changed-value.sc](../example-scripts/read-changed-value.sc) + +![read-value](images/tutorial/read-value.png) + +```scala +#!/usr/bin/env -S scala-cli project.scala + +import org.terminal21.client.* +import org.terminal21.client.components.* +import org.terminal21.client.components.std.Paragraph +import org.terminal21.client.components.chakra.* + +Sessions.withNewSession("read-changed-value-example", "Read Changed Value"): session => + given ConnectedSession = session + + val email = Input(`type` = "email", value = "my@email.com") + val output = Box() + + Seq( + FormControl().withChildren( + FormLabel(text = "Email address"), + InputGroup().withChildren( + InputLeftAddon().withChildren(EmailIcon()), + email + ), + FormHelperText(text = "We'll never share your email.") + ), + Button(text = "Read Value").onClick: () => + val value = email.current.value + output.current.addChildren(Paragraph(text = s"The value now is $value")).renderChanges() + , + output + ).render() + + session.waitTillUserClosesSession() +``` + +The important bit is this: + +```scala + Button(text = "Read Value").onClick: () => + val value = email.current.value + output.current.addChildren(Paragraph(text = s"The value now is $value")).renderChanges() +``` + +When the button is clicked, we get the current state of the `email` input box via `email.current`. And then get it's value, `email.current.value`. + +Also in order to append a new paragraph to the `output`, we get the current state of it (which includes any previous paragraphs we have added) and then +add a paragraph as a new child. Then we render the changes of `output` which includes the paragraphs. + diff --git a/example-scripts/read-changed-value.sc b/example-scripts/read-changed-value.sc new file mode 100755 index 00000000..65f2693d --- /dev/null +++ b/example-scripts/read-changed-value.sc @@ -0,0 +1,30 @@ +#!/usr/bin/env -S scala-cli project.scala + +import org.terminal21.client.* +import org.terminal21.client.components.* +import org.terminal21.client.components.std.Paragraph +import org.terminal21.client.components.chakra.* + +Sessions.withNewSession("read-changed-value-example", "Read Changed Value"): session => + given ConnectedSession = session + + val email = Input(`type` = "email", value = "my@email.com") + val output = Box() + + Seq( + FormControl().withChildren( + FormLabel(text = "Email address"), + InputGroup().withChildren( + InputLeftAddon().withChildren(EmailIcon()), + email + ), + FormHelperText(text = "We'll never share your email.") + ), + Button(text = "Read Value").onClick: () => + val value = email.current.value + output.current.addChildren(Paragraph(text = s"The value now is $value")).renderChanges() + , + output + ).render() + + session.waitTillUserClosesSession()