() {
+ private val dialog: FileUploadDialog
+
+ init {
+ dialog = FileUploadDialog("Upload a file").apply {
+ isFileSystemAccess = false
+ }
+
+ show()
+ }
+
+ /**
+ * Shows the file upload dialog and handles the result.
+ */
+ private fun show() {
+ val file = dialog.show()
+
+ if (file != null) {
+ file.delete()
+ OptionDialog.showMessageDialog("File uploaded successfully", "File Uploaded")
+ } else {
+ OptionDialog.showMessageDialog(
+ "No file selected",
+ "File Selection Failed",
+ MessageDialog.MessageType.ERROR
+ )
+ }
+ }
+}
+
diff --git a/src/main/kotlin/com/webforj/samples/views/optiondialog/input/InputDialogBasicKotlinView.kt b/src/main/kotlin/com/webforj/samples/views/optiondialog/input/InputDialogBasicKotlinView.kt
new file mode 100644
index 000000000..b30e3aff2
--- /dev/null
+++ b/src/main/kotlin/com/webforj/samples/views/optiondialog/input/InputDialogBasicKotlinView.kt
@@ -0,0 +1,70 @@
+package com.webforj.samples.views.optiondialog.input
+
+import com.webforj.component.Composite
+import com.webforj.component.button.ButtonTheme
+import com.webforj.component.html.elements.Div
+import com.webforj.component.optiondialog.InputDialog
+import com.webforj.component.optiondialog.MessageDialog
+import com.webforj.component.optiondialog.OptionDialog
+import com.webforj.router.annotation.FrameTitle
+import com.webforj.router.annotation.Route
+
+@Route
+@FrameTitle("Input Dialog Basics")
+class InputDialogBasicKotlinView : Composite
() {
+ init {
+ val message = """
+
+ Unexpected bad things will happen if you don't read this!
+
+
+ This will permanently delete the repository, wiki, issues,
+ comments, packages, secrets, workflow runs, and remove all collaborator associations.
+
+ To confirm, type
$CONFIRMATION_CODE in the box below
+ """.trimIndent()
+
+ val dialog: InputDialog = InputDialog(message, "Delete Repository", /*InputDialog.MessageType.ERROR*/).apply {
+ messageType = InputDialog.MessageType.PLAIN
+ firstButtonText = "Delete Repository"
+ setSecondButtonTheme(ButtonTheme.OUTLINED_GRAY)
+ }
+
+ var input: String?
+ do {
+ input = dialog.show()
+
+ when (input) {
+ null -> {
+ // User cancelled
+ OptionDialog.showMessageDialog(
+ "Aborted repository deletion.",
+ "Repository Deletion Aborted",
+ MessageDialog.MessageType.ERROR
+ )
+ }
+ CONFIRMATION_CODE -> {
+ // Correct code entered
+ OptionDialog.showMessageDialog(
+ "Repository was deleted successfully",
+ "Repository Deleted",
+ MessageDialog.MessageType.INFO
+ )
+ }
+ else -> {
+ // Wrong code entered
+ OptionDialog.showMessageDialog(
+ "Failed to delete the repository. Code entered is incorrect",
+ "Repository Deletion Failed",
+ MessageDialog.MessageType.ERROR
+ )
+ }
+ }
+ } while (input == null || input != CONFIRMATION_CODE)
+ }
+
+ companion object {
+ // Confirmation code required for deletion
+ private const val CONFIRMATION_CODE = "7ANfB"
+ }
+}
diff --git a/src/main/kotlin/com/webforj/samples/views/optiondialog/input/InputDialogTypeKotlinView.kt b/src/main/kotlin/com/webforj/samples/views/optiondialog/input/InputDialogTypeKotlinView.kt
new file mode 100644
index 000000000..16d91c398
--- /dev/null
+++ b/src/main/kotlin/com/webforj/samples/views/optiondialog/input/InputDialogTypeKotlinView.kt
@@ -0,0 +1,55 @@
+package com.webforj.samples.views.optiondialog.input
+
+import com.webforj.component.Composite
+import com.webforj.component.button.ButtonTheme
+import com.webforj.component.html.elements.Div
+import com.webforj.component.optiondialog.InputDialog
+import com.webforj.component.optiondialog.MessageDialog
+import com.webforj.component.optiondialog.OptionDialog
+import com.webforj.router.annotation.FrameTitle
+import com.webforj.router.annotation.Route
+
+@Route
+@FrameTitle("Input Dialog Type")
+class InputDialogTypeKotlinView: Composite
() {
+ // Input dialog for password entry
+ private val dialog: InputDialog? = null
+
+ init {
+ dialog = InputDialog(
+ "This page is restricted. Please enter your password to continue.",
+ "Restricted access.",
+ InputDialog.InputType.PASSWORD
+ )
+ .setFirstButtonText("Continue")
+ .setSecondButtonText("Cancel")
+ .setFirstButtonTheme(ButtonTheme.PRIMARY)
+
+ tryLogin()
+ }
+
+ /**
+ * Attempts login by showing the password dialog.
+ */
+ fun tryLogin() {
+ val result = dialog!!.show()
+
+ if (result != null && !result.isEmpty()) {
+ // Access granted
+ OptionDialog.showMessageDialog(
+ "Access granted",
+ "Welcome",
+ "Got it",
+ MessageDialog.MessageType.INFO
+ )
+ } else {
+ // Access denied - retry
+ OptionDialog.showMessageDialog(
+ "Access denied",
+ "Access denied",
+ "Try again",
+ MessageDialog.MessageType.ERROR
+ )
+ }
+ }
+}
diff --git a/src/main/kotlin/com/webforj/samples/views/optiondialog/message/MessageDialogTypeKotlinView.kt b/src/main/kotlin/com/webforj/samples/views/optiondialog/message/MessageDialogTypeKotlinView.kt
new file mode 100644
index 000000000..2c4e904fe
--- /dev/null
+++ b/src/main/kotlin/com/webforj/samples/views/optiondialog/message/MessageDialogTypeKotlinView.kt
@@ -0,0 +1,21 @@
+package com.webforj.samples.views.optiondialog.message
+
+import com.webforj.component.Composite
+import com.webforj.component.html.elements.Div
+import com.webforj.component.optiondialog.MessageDialog
+import com.webforj.component.optiondialog.OptionDialog
+import com.webforj.router.annotation.FrameTitle
+import com.webforj.router.annotation.Route
+
+@Route
+@FrameTitle("Message Dialog Types")
+class MessageDialogTypeKotlinView: Composite
() {
+
+ init {
+ OptionDialog.showMessageDialog(
+ "Your session will expire in 5 minutes due to inactivity. Save your work now to prevent any data loss.",
+ "Session is expiring",
+ MessageDialog.MessageType.WARNING
+ )
+ }
+}
diff --git a/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java
index f83c5b408..926dbc735 100644
--- a/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java
+++ b/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java
@@ -2,23 +2,28 @@
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
+import com.webforj.samples.pages.SupportedLanguage;
+import com.webforj.samples.views.BaseTest;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.options.AriaRole;
-import com.webforj.samples.views.BaseTest;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
public class ConfirmDialogOptionsViewIT extends BaseTest {
- @BeforeEach
- public void setupConfirmDialogOptionsView() {
- navigateToRoute("confirmdialogoptions");
+ private static final String ROUTE = "confirmdialogoptions";
+
+ public void setupConfirmDialogOptionsView(SupportedLanguage language) {
+ navigateToRoute(language.getPath(ROUTE));
}
- @Test
- public void testDialogConfirmationIsShownWhenDiscardButtonIsClicked() {
+ @ParameterizedTest
+ @MethodSource("provideRoutes")
+ public void testDialogConfirmationIsShownWhenDiscardButtonIsClicked(SupportedLanguage language) {
+ setupConfirmDialogOptionsView(language);
Locator dialog = page.getByRole(AriaRole.DIALOG);
assertThat(dialog).isVisible();
diff --git a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java
index b96b56668..0c2ce52e6 100644
--- a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java
+++ b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java
@@ -2,23 +2,28 @@
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
+import com.webforj.samples.pages.SupportedLanguage;
+import com.webforj.samples.views.BaseTest;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.options.AriaRole;
-import com.webforj.samples.views.BaseTest;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
public class InputDialogBasicViewIT extends BaseTest {
- @BeforeEach
- public void setupInputDialogBasicView() {
- navigateToRoute("inputdialogbasic");
+ private static final String ROUTE = "inputdialogbasic";
+
+ public void setupInputDialogBasicView(SupportedLanguage language) {
+ navigateToRoute(language.getPath(ROUTE));
}
- @Test
- public void testInvalidInputDialogIsShownWhenDeleteButtonIsClicked() {
+ @ParameterizedTest
+ @MethodSource("provideRoutes")
+ public void testInvalidInputDialogIsShownWhenDeleteButtonIsClicked(SupportedLanguage language) {
+ setupInputDialogBasicView(language);
Locator dialog = page.getByRole(AriaRole.DIALOG);
assertThat(dialog).isVisible();
@@ -36,8 +41,10 @@ public void testInvalidInputDialogIsShownWhenDeleteButtonIsClicked() {
okButton.click();
}
- @Test
- public void testValidInputDialogIsShownWhenDeleteButtonIsClicked() {
+ @ParameterizedTest
+ @MethodSource("provideRoutes")
+ public void testValidInputDialogIsShownWhenDeleteButtonIsClicked(SupportedLanguage language) {
+ setupInputDialogBasicView(language);
Locator dialog = page.getByRole(AriaRole.DIALOG);
assertThat(dialog).isVisible();
diff --git a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java
index b730488a1..9e64fcaed 100644
--- a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java
+++ b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java
@@ -2,23 +2,28 @@
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
+import com.webforj.samples.pages.SupportedLanguage;
+import com.webforj.samples.views.BaseTest;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.options.AriaRole;
-import com.webforj.samples.views.BaseTest;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
public class InputDialogTypeViewIT extends BaseTest {
- @BeforeEach
- public void setupInputDialogTypeView() {
- navigateToRoute("inputdialogtype");
+ private static final String ROUTE = "inputdialogtype";
+
+ public void setupInputDialogTypeView(SupportedLanguage language) {
+ navigateToRoute(language.getPath(ROUTE));
}
- @Test
- public void testInputDialogTypeIsShownWhenContinueButtonIsClicked() {
+ @ParameterizedTest
+ @MethodSource("provideRoutes")
+ public void testInputDialogTypeIsShownWhenContinueButtonIsClicked(SupportedLanguage language) {
+ setupInputDialogTypeView(language);
Locator dialog = page.getByRole(AriaRole.DIALOG);
assertThat(dialog).isVisible();