兩種樣子,同一套狀態(做完 ✓、還不能做灰色+原因、要重新執行 ✓ 拿掉):
Usage
kit_step_tabs_ui(id, ..., groups = NULL, selected = NULL, aside = NULL)
kit_step_tabs_server(id, states = NULL, tips = NULL)Arguments
- id
模組的 id。
- ...
shiny::tabPanel()(value要寫)。- groups
分組(
kit_navgroup()的 list);NULL是有順序的流程。- selected
一開始的分頁(value)。
- aside
流程分頁裡不是流程一步的分頁(value)。
- states
reactive(或函式):每個分頁的狀態,具名字串向量或 list。值是
kit_status()的狀態("success"、"warning"打 ✓;"stale"拿掉 ✓), 或直接寫"done"、"locked"、"ready"。沒有列出的分頁不改。NULL時不送狀態。- tips
還不能做時滑過的說明:具名字串向量(或傳回它的 reactive),或一句話給全部。
Value
kit_step_tabs_ui():分頁列與分頁。
kit_step_tabs_server():list,
selected:reactive,現在的分頁(value);select(value):換到某個分頁;states:reactive,送到瀏覽器的狀態(kit_tab_states()的結果)。
Details
有順序的流程(kitsUI):不給
groups,...的tabPanel()名稱用圈數字;aside的分頁(例如「使用手冊」)虛線、放最右邊。分組、不編號(kitJoin):給
groups(kit_navgroup()的 list);分頁列是kit_navgroups(),真的分頁是藏起來的tabsetPanel()。
分頁的 input 是 input[["<id>-tabs"]];server 回傳的 selected() 是同一個值。
Examples
if (interactive()) {
ui <- kit_page("KIT 示範", NULL,
kit_step_tabs_ui("nav",
shiny::tabPanel("① 資料", value = "data", "…"),
shiny::tabPanel("② 題目校準", value = "items", "…")
)
)
server <- function(input, output, session) {
kit_step_tabs_server("nav",
states = shiny::reactive(c(data = "success", items = "locked")),
tips = c(items = "先在「① 資料」選好資料")
)
}
shiny::shinyApp(ui, server)
}