Встроенный значок в метке поля ввода на боковой панели в Shinydashboard - PullRequest
1 голос
/ 22 октября 2019

У меня есть дополнительный вопрос к моему предыдущему вопросу ( Как сделать так, чтобы при использовании Shiny и Shinydashboard размер значков был одинаковым? ).

Теперь я хочу добавить радиокнопку на боковой панели, а также добавить значок в конце метки. Этот значок будет ссылкой на всплывающее окно.

Я могу добавить значок и успешно изменить размер значка, как в моем предыдущем сообщении, за исключением того, что значок находится не в той же строке, что и метка переключателя. Можно ли сделать их в одной строке?

enter image description here

Код:

# Load the packages
library(shiny)
library(shinydashboard)
library(shinyalert)

# User Interface
ui <- dashboardPage(
  header = dashboardHeader(title = ""),
  sidebar = dashboardSidebar(
    sidebarMenu(
      menuItem(
        text = "Example",
        tabName = "tab1"
      ),
      radioButtons(inputId = "radio", choices = c("Yes", "No"),
                   label = HTML("A Radio Button", "<font size='3'>",
                   as.character(actionLink(inputId = "info4", 
                                           label = "", 
                                           icon = icon("info"))), "</font>"))
    )
  ),
  body = dashboardBody(
    # A call to use the shinyalert package
    useShinyalert(),

    tabItems(
      tabItem(
        tabName = "tab1",
        h2(HTML("This is a title", "<font size='3'>",
                as.character(actionLink(inputId = "info1", 
                                        label = "", 
                                        icon = icon("info"))), "</font>")),
        fluidRow(
          box(
            title = HTML("This is the title of the box", "<font size='3'>",
                         as.character(actionLink(inputId = "info2", 
                                                 label = "", 
                                                 icon = icon("info"))), "</font>"), 
            status = "primary", solidHeader = TRUE,
            selectInput(inputId = "Select", 
                        label = HTML("This is the title of the selectInput", "<font size='3'>", as.character(actionLink(inputId = "info3", 
                                                                                                                        label = "", 
                                                                                                                        icon = icon("info"))), "</font>"
                        ), 
                        choices = 1:3)
          )
        )
      )
    )
  )
)

server <- function(input, output, session){
  observeEvent(input$info1, {
    shinyalert(text = "Info 1", type = "info")
  })
  observeEvent(input$info2, {
    shinyalert(text = "Info 2", type = "info")
  })
  observeEvent(input$info3, {
    shinyalert(text = "Info 3", type = "info")
  })
  observeEvent(input$info4, {
    shinyalert(text = "Info 4", type = "info")
  })
}

# Run the app
shinyApp(ui, server)

1 Ответ

1 голос
/ 23 октября 2019

Вы можете сделать это, добавив стиль display: inline к идентификатору actionLink. Это переопределит display: block.

Поэтому сразу после sidebar = dashboardSidebar( и до sidebarMenu( добавьте эту строку:

tags$head(
  tags$style(
    HTML("#info4 {
         display: inline;
         margin: 0px;
         }")
  )
),

enter image description here

...