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