Skip to Content
DocsPortalTab — form tabs

PortalTab — form tabs

PortalTab is an interface that must be implemented by an enum class. Each enum constant represents one form tab. Tabs are registered via the tabs parameter of @PortalEntity.

interface PortalTab { val label: String val labelKey: String get() = "" // i18n key for the tab label val icon: String get() = "" val order: Int get() = 0 }

How to define tabs

enum class CustomerTab( override val label: String, override val icon: String, override val order: Int ) : PortalTab { BASIC("Basic Info", "user", 0), CONTACT("Contact", "phone", 1), FINANCIAL("Financial","dollar-sign", 2), SYSTEM("System", "settings", 3) }

How to assign fields to tabs

In @PortalField, set the tab parameter to the enum constant name (uppercase):

@PortalField(label = "Full Name", tab = "BASIC", order = 1, required = true) var name: String = "" @PortalField(label = "Email", tab = "CONTACT", order = 1, renderer = RendererType.EMAIL) var email: String = ""

Entity without tabs

The default value tabs = NoTabs::class means a flat, single-page form. Fields without a tab parameter are rendered directly.

Full example with entity

enum class OrderTab( override val label: String, override val icon: String, override val order: Int ) : PortalTab { BASIC("Basic", "file-text", 0), ITEMS("Items", "list", 1), SYSTEM("System","settings", 2) } @Entity @Table(name = "order") @PortalEntity( label = "Order", module = "CRM", icon = "shopping-cart", tabs = OrderTab::class ) class Order { @PortalField(label = "Order Number", tab = "BASIC", order = 1) var orderNumber: String = "" @PortalField(label = "Items", tab = "ITEMS", order = 1, renderer = RendererType.RELATION_LIST, showInTable = false) var items: List<OrderItem>? = null }
Last updated on