Skip to content

Commit

Permalink
Merge pull request #68 from InkApplications/builders
Browse files Browse the repository at this point in the history
Add builders to link nav and breadcrumb elements
  • Loading branch information
ReneeVandervelde authored Oct 19, 2024
2 parents 30d1776 + c910e2e commit 665ee79
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 16 deletions.
16 changes: 16 additions & 0 deletions render-web-common/api/render-web-common.api
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ public final class ink/ui/render/web/elements/LinkButtonElement : ink/ui/structu
public final class ink/ui/render/web/elements/LinkNavigation : ink/ui/structures/elements/UiElement$Static {
public static final field $stable I
public fun <init> (Ljava/util/List;)V
public fun <init> (Lkotlin/jvm/functions/Function1;)V
public fun <init> ([Link/ui/render/web/elements/LinkNavigation$NavigationItem;)V
public final fun component1 ()Ljava/util/List;
public final fun copy (Ljava/util/List;)Link/ui/render/web/elements/LinkNavigation;
Expand All @@ -74,6 +75,21 @@ public final class ink/ui/render/web/elements/LinkNavigation : ink/ui/structures
public fun toString ()Ljava/lang/String;
}

public final class ink/ui/render/web/elements/LinkNavigation$Builder {
public static final field $stable I
public fun <init> ()V
public fun <init> (Ljava/util/List;)V
public synthetic fun <init> (Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/util/List;
public final fun copy (Ljava/util/List;)Link/ui/render/web/elements/LinkNavigation$Builder;
public static synthetic fun copy$default (Link/ui/render/web/elements/LinkNavigation$Builder;Ljava/util/List;ILjava/lang/Object;)Link/ui/render/web/elements/LinkNavigation$Builder;
public fun equals (Ljava/lang/Object;)Z
public final fun getItems ()Ljava/util/List;
public fun hashCode ()I
public final fun link (Ljava/lang/String;Ljava/lang/String;)V
public fun toString ()Ljava/lang/String;
}

public final class ink/ui/render/web/elements/LinkNavigation$NavigationItem {
public static final field $stable I
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,18 @@ data class LinkNavigation(
val items: List<NavigationItem>,
): UiElement.Static {
constructor(vararg items: NavigationItem): this(items.toList())
constructor(builder: Builder.() -> Unit): this(Builder().apply(builder).items)

data class NavigationItem(
val text: String,
val url: String,
)

data class Builder(
val items: MutableList<NavigationItem> = mutableListOf(),
) {
fun link(text: String, url: String) {
items.add(NavigationItem(text = text, url = url))
}
}
}
16 changes: 4 additions & 12 deletions sample-web/src/staticMain/Sample.inkui.kts
Original file line number Diff line number Diff line change
Expand Up @@ -93,18 +93,10 @@ addBody(
}
""".trimIndent()
),
LinkNavigation(
items = listOf(
NavigationItem(
text = "Link 1",
url = "#",
),
NavigationItem(
text = "Link 2",
url = "#",
),
)
)
LinkNavigation {
link(text = "Link 1", url = "#")
link(text = "Link 2", url = "#")
},
)
)
)
Expand Down
8 changes: 4 additions & 4 deletions sample-web/src/staticMain/header.inkui.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
addPageHeader(TextElement("Page Header", TextStyle.H1))
addPageHeader(TextElement("Subtitle"))
addPageHeader(
BreadcrumbElement(listOf(
BreadcrumbElement.Breadcrumb("Home", "#"),
BreadcrumbElement.Breadcrumb("Guide", "#guide"),
))
BreadcrumbElement {
link("Home", "#")
text("Guide")
}
)
16 changes: 16 additions & 0 deletions structures/api/structures.api
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ public final class ink/ui/structures/TextStyle : java/lang/Enum {

public final class ink/ui/structures/elements/BreadcrumbElement : ink/ui/structures/elements/UiElement$Static {
public fun <init> (Ljava/util/List;)V
public fun <init> (Lkotlin/jvm/functions/Function1;)V
public final fun component1 ()Ljava/util/List;
public final fun copy (Ljava/util/List;)Link/ui/structures/elements/BreadcrumbElement;
public static synthetic fun copy$default (Link/ui/structures/elements/BreadcrumbElement;Ljava/util/List;ILjava/lang/Object;)Link/ui/structures/elements/BreadcrumbElement;
Expand All @@ -114,6 +115,21 @@ public final class ink/ui/structures/elements/BreadcrumbElement$Breadcrumb {
public fun toString ()Ljava/lang/String;
}

public final class ink/ui/structures/elements/BreadcrumbElement$Builder {
public fun <init> ()V
public fun <init> (Ljava/util/List;)V
public synthetic fun <init> (Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/util/List;
public final fun copy (Ljava/util/List;)Link/ui/structures/elements/BreadcrumbElement$Builder;
public static synthetic fun copy$default (Link/ui/structures/elements/BreadcrumbElement$Builder;Ljava/util/List;ILjava/lang/Object;)Link/ui/structures/elements/BreadcrumbElement$Builder;
public fun equals (Ljava/lang/Object;)Z
public final fun getBreadcrumbs ()Ljava/util/List;
public fun hashCode ()I
public final fun link (Ljava/lang/String;Ljava/lang/String;)V
public final fun text (Ljava/lang/String;)V
public fun toString ()Ljava/lang/String;
}

public final class ink/ui/structures/elements/ButtonElement : ink/ui/structures/elements/UiElement$Interactive {
public synthetic fun <init> (Ljava/lang/String;Lkotlin/jvm/functions/Function0;Link/ui/structures/Sentiment;ZZLjava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (Ljava/lang/String;Lkotlin/jvm/functions/Function0;Link/ui/structures/Sentiment;ZZLjava/lang/String;Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,26 @@ package ink.ui.structures.elements
data class BreadcrumbElement(
val items: List<Breadcrumb>,
): UiElement.Static {
constructor(
builder: Builder.() -> Unit,
): this(
items = Builder().apply(builder).breadcrumbs,
)

data class Breadcrumb(
val text: String,
val url: String? = null,
)

data class Builder(
val breadcrumbs: MutableList<Breadcrumb> = mutableListOf(),
) {
fun text(text: String) {
breadcrumbs.add(Breadcrumb(text = text))
}

fun link(text: String, url: String) {
breadcrumbs.add(Breadcrumb(text = text, url = url))
}
}
}

0 comments on commit 665ee79

Please sign in to comment.