SubMenuComponent

open class SubMenuComponent(    val styling: Style<BoxParams>,     val value: Store<Boolean>? = null,     val baseClass: StyleClass,     val id: String?,     val prefix: String) : MenuContext, MenuChild, EventProperties<HTMLButtonElement> , FormProperties

This class combines the configuration and the core rendering of a submenu inside a menu.

A submenu consists of different types of children that are aligned vertically. By default the following types can be added to the menu:

It is also possible to add any other fritz2 component via the custom context. All menu items are created directly within the SubMenuComponent's build context.

Example usage:

menu {
entry {
icon { add }
text("Item")
}
divider()
submenu {
entry {
icon { add }
text("Item")
}
}
divider()
header("A subsection starts here")
custom {
// custom content
spinner { }
}
}

The menu-entry-DSL can be extended via standard Kotlin extension methods. Custom entries must implement the Component<Unit> interface and are added to the Menu via the MenuComponent.addChild method which is accessible from within the extension method.

The following example adds an instance of MyMenuEntry to the Menu. Notice that addChild is invoked in the end; the entry wouldn't be added otherwise!

fun MenuComponent.example(build: MyMenuEntry.() -> Unit) = MyMenuEntry()
.apply(build)
.run(::addChild)

Constructors

Link copied to clipboard
fun SubMenuComponent(    styling: Style<BoxParams>,     value: Store<Boolean>? = null,     baseClass: StyleClass,     id: String?,     prefix: String)

Types

Link copied to clipboard
object Companion

Functions

Link copied to clipboard
fun addChild(child: MenuChild): Boolean
Link copied to clipboard
fun custom(build: RenderContext.() -> Unit)
fun custom(styling: Style<BoxParams>, build: RenderContext.() -> Unit)

Adds a custom fritz2-component to the menu.

Link copied to clipboard
fun divider(styling: Style<BoxParams> = {})

Adds a MenuDivider to the menu.

Link copied to clipboard
open override fun enabled(value: Boolean)
open override fun enabled(value: Flow<Boolean>)
Link copied to clipboard
fun entry(build: MenuEntry.() -> Unit)
fun entry(styling: Style<BoxParams>, build: MenuEntry.() -> Unit)

Configures and adds a MenuEntry to the menu.

Link copied to clipboard
fun header(text: String)
fun header(styling: Style<BoxParams>, text: String)

Configures and adds a MenuHeader to the menu.

Link copied to clipboard
fun icon(def: Icons.() -> IconDefinition)
fun icon(def: Flow<IconDefinition>)
Link copied to clipboard
fun link(build: MenuLink.() -> Unit)
fun link(styling: Style<BoxParams>, build: MenuLink.() -> Unit)

Configures and adds a MenuLink to the menu.

Link copied to clipboard
open override fun render(context: RenderContext, styles: MenuStyles)
Link copied to clipboard
fun submenu(    styling: BoxParams.() -> Unit = {},     value: Store<Boolean>? = null,     baseClass: StyleClass = StyleClass.None,     id: String? = null,     prefix: String = "submenu",     build: SubMenuComponent.() -> Unit): Boolean

Creates a submenu.

Properties

Link copied to clipboard
val baseClass: StyleClass
Link copied to clipboard
open override val disabled: DynamicComponentProperty<Boolean>
Link copied to clipboard
open override val events: ComponentProperty<EventContext<HTMLButtonElement>.() -> Unit>

This property enables the client to access all events offered by the underlying HTML element.

Link copied to clipboard
var icon: Flow<IconDefinition>? = null
Link copied to clipboard
val id: String?
Link copied to clipboard
val prefix: String
Link copied to clipboard
val styling: Style<BoxParams>
Link copied to clipboard
val text: ComponentProperty<String?>
Link copied to clipboard
val value: Store<Boolean>? = null