posit-dev / py-shinyswatch

Bootswatch themes for py-shiny

Home Page:https://posit-dev.github.io/py-shinyswatch/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Input Selectize render issues on superhero theme

adampinky85 opened this issue · comments

Hi team,

We are using the Superhero theme which is really great!

Following upgrading from shiny 0.7.1 to 0.8.1 the input selectize ui element no longer renders correctly:

  • Previously it renders with a white background and selected elements with a nice grey boarder in the selection field.
  • Currently it renders with the theme background colour, the selected elements have the same colour, there is a white line between selected fields, and the selected fields are not easily visible.

Versions:
shiny: 0.8.1
shinyswatch: 0.5.1

Minimal Example:

import shiny
import shinyswatch


def server(_, __, ___):
    """Shiny main server"""


UI = shiny.ui.page_navbar(
    shinyswatch.theme.superhero(),
    shiny.ui.nav_panel(
        "dashboard",
        shiny.ui.input_selectize(
            "id",
            "labels",
            [1, 2, 3, 4],
            multiple=True,
        ),
    )
)

app = shiny.App(UI, server)

Thanks for the report @adampinky85!

Internal notes: the problem is that we use --bs-tertiary-bg in the selectize styles,

.selectize-dropdown .active:not(.selected) {
    background: var(--bs-tertiary-bg);
    color: var(--bs-body-color)
}

but from what I can tell Bootswatch hasn't yet (or hasn't in the release we bundle) customized the tertiary colors for its themes.

In the Bootstrap docs, the tertiary colors are described as

Tertiary — Use the color option for even lighter text. Use the bg option to style backgrounds for hover states, accents, and wells.

So while our use of --bs-tertiary-bg is technically correct, it doesn't work across all Bootswatch themes. We could report this upstream, patch in bslib or here in shinyswatch, or adjust the selectize styles in shiny.

Hi team, is there any update on fixing this issue? We would really appreciate being able to upgrade to the new versions. Many thanks!

Hi @gadenbuie, appreciate the team is very busy, is there anyone that could take at look at this issue? We've upgraded to the latest versions but it does not appear to be resolved. Thanks!

Versions:
shiny: 0.10.2
shinyswatch: 0.6.1

@adampinky85 we may not get a fix out for a while, but in the meantime, you can workaround it by adding CSS like this to your app:

import shinyswatch

import shiny


def server(_, __, ___):
    """Shiny main server"""


UI = shiny.ui.page_navbar(
    shinyswatch.theme.superhero(),
    shiny.ui.nav_panel(
        "dashboard",
        shiny.ui.input_selectize(
            "id",
            "labels",
            [1, 2, 3, 4],
            multiple=True,
        ),
    ),
    header=shiny.ui.tags.style(
        """
    .selectize-input {
      --bs-emphasis-color: white;
      --bs-emphasis-color-rgb: 255, 255, 255;
    }
    .selectize-dropdown .active:not(.selected) {
        background-color: #DF6919;
        color: white
    }
            """
    ),
)

app = shiny.App(UI, server)

Great thanks @cpsievert, much appreciated!