From 08e1d70ebd086bd820627dadada8e303457184bc Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 29 Jun 2025 00:15:46 +0200 Subject: [PATCH] fancydialogs: Allow inputs to be null --- docs/src/fancydialogs/changelog/v0.md | 4 ++ plugins/fancydialogs/VERSION | 2 +- .../fancydialogs/api/data/DialogData.java | 3 +- .../api/data/inputs/DialogInputs.java | 6 +- .../fancydialogs/dialog/DialogImpl.java | 60 ++++++++++--------- 5 files changed, 42 insertions(+), 33 deletions(-) diff --git a/docs/src/fancydialogs/changelog/v0.md b/docs/src/fancydialogs/changelog/v0.md index 8fd22eb8..81611d07 100644 --- a/docs/src/fancydialogs/changelog/v0.md +++ b/docs/src/fancydialogs/changelog/v0.md @@ -5,6 +5,10 @@ order: 1 # FancyDialogs v0.x.x +## v0.0.9 [!badge variant="info" text="2025-06-29"] + +- Allow inputs to be null + ## v0.0.9 [!badge variant="info" text="2025-06-28"] - Added `open_random_dialog` action to open a random dialog from a list diff --git a/plugins/fancydialogs/VERSION b/plugins/fancydialogs/VERSION index 429d94ae..b0a12275 100644 --- a/plugins/fancydialogs/VERSION +++ b/plugins/fancydialogs/VERSION @@ -1 +1 @@ -0.0.9 \ No newline at end of file +0.0.10 \ No newline at end of file diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogData.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogData.java index 91f116e2..fc6578b6 100644 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogData.java +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogData.java @@ -2,6 +2,7 @@ package com.fancyinnovations.fancydialogs.api.data; import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInputs; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.List; @@ -10,7 +11,7 @@ public record DialogData( @NotNull String title, boolean canCloseWithEscape, @NotNull List body, - @NotNull DialogInputs inputs, + @Nullable DialogInputs inputs, @NotNull List buttons ) { diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/inputs/DialogInputs.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/inputs/DialogInputs.java index 2241b2cd..f8517738 100644 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/inputs/DialogInputs.java +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/inputs/DialogInputs.java @@ -1,11 +1,13 @@ package com.fancyinnovations.fancydialogs.api.data.inputs; +import org.jetbrains.annotations.Nullable; + import java.util.ArrayList; import java.util.List; public record DialogInputs( - List textFields, - List selects + @Nullable List textFields, + @Nullable List selects ) { public static final DialogInputs EMPTY = new DialogInputs(List.of(), List.of()); diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java index be98a5ea..51dcc4ad 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java @@ -47,38 +47,40 @@ public class DialogImpl extends Dialog { } List inputs = new ArrayList<>(); - for (DialogInput input : data.inputs().all()) { - FS_DialogInputControl control = null; - if (input instanceof DialogTextField textField) { - control = new FS_DialogTextInput( - 200, // default width - textField.getLabel(), - !textField.getLabel().isEmpty(), - textField.getPlaceholder(), - textField.getMaxLength(), - textField.getMaxLines() > 0 ? - new FS_DialogTextInput.MultilineOptions(textField.getMaxLines(), null) : - null - ); - } else if (input instanceof DialogSelect select) { - List entries = new ArrayList<>(); - for (DialogSelect.Entry entry : select.getOptions()) { - entries.add(new FS_DialogSingleOptionInput.Entry(entry.value(), entry.display(), entry.initial())); + if (data.inputs() != null) { + for (DialogInput input : data.inputs().all()) { + FS_DialogInputControl control = null; + if (input instanceof DialogTextField textField) { + control = new FS_DialogTextInput( + 200, // default width + textField.getLabel(), + !textField.getLabel().isEmpty(), + textField.getPlaceholder(), + textField.getMaxLength(), + textField.getMaxLines() > 0 ? + new FS_DialogTextInput.MultilineOptions(textField.getMaxLines(), null) : + null + ); + } else if (input instanceof DialogSelect select) { + List entries = new ArrayList<>(); + for (DialogSelect.Entry entry : select.getOptions()) { + entries.add(new FS_DialogSingleOptionInput.Entry(entry.value(), entry.display(), entry.initial())); + } + control = new FS_DialogSingleOptionInput( + 200, // default width + entries, + select.getLabel(), + !select.getLabel().isEmpty() + ); } - control = new FS_DialogSingleOptionInput( - 200, // default width - entries, - select.getLabel(), - !select.getLabel().isEmpty() - ); - } - if (control == null) { - throw new IllegalArgumentException("Unsupported input type: " + input.getClass().getSimpleName()); - } + if (control == null) { + throw new IllegalArgumentException("Unsupported input type: " + input.getClass().getSimpleName()); + } - FS_DialogInput fsDialogInput = new FS_DialogInput(input.getKey(), control); - inputs.add(fsDialogInput); + FS_DialogInput fsDialogInput = new FS_DialogInput(input.getKey(), control); + inputs.add(fsDialogInput); + } } List actions = new ArrayList<>();