Невозможно установить активный класс для выбранной кнопки в Vuetify v-btn-toggle - PullRequest
1 голос
/ 02 февраля 2020

Я использую Vuetify v-button-toggle для переключения между тремя кнопками, как показано ниже. И у каждой кнопки свой активный класс. Но нажатие на кнопку не устанавливает активный соответствующий активный класс. Что мне не хватает?

<v-btn-toggle
  v-model="justify"
  borderless
  dense
  group
  class="d-flex flex-column "
>
  <v-btn active-class="dnrSelected" exact>
    <v-icon right class="mr-2">mdi-close</v-icon>
    <span>Do Not Recommend</span>
  </v-btn>
  <v-btn active-class="rSelected">
    <v-icon right class="mr-1">mdi-check</v-icon>
    <span>Recommend</span>
  </v-btn>
  <v-btn active-class="srSelected">
    <v-icon right class="mr-1">mdi-check-all</v-icon>
    <span>Strongly Recommend</span>
  </v-btn>
</v-btn-toggle>

CSS классы

<style scoped>
  .dnrSelected {
    background-color: #e57373;
  }
  .rSelected {
    background-color: #c5e1a5;
  }
  .srSelected {
    background-color: #81c784;
  }
</style>

Обновление: Как и ожидалось, класс добавляется к кнопке при нажатии

<button type="button" class="v-btn srSelected v-btn--active v-btn--contained theme--light v-size--default"><span class="v-btn__content"><i aria-hidden="true" class="v-icon notranslate mr-1 v-icon--right mdi mdi-check-all theme--light"></i> <span>Strongly Recommend</span></span></button>

Обновление: Класс Vuetify по умолчанию ниже переопределяет пользовательский стиль

.v-btn-toggle--group > .v-btn.v-btn {
  background-color: transparent !important;
  border-color: transparent;
  margin: 4px;
  min-width: auto;
}

Как переопределить этот класс стиля по умолчанию?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020

Один из найденных мной обходных путей - нацеливание на элементы конкретно в пользовательском CSS путем присвоения содержащемуся элементу идентификатора, подобного приведенному ниже

<v-btn-toggle
 id="btnGroup"
 borderless
 dense
 group
 class="d-flex flex-column"
>

, а затем с помощью этого id можно указать целевые элементы, как показано ниже.

#btnGroup .dnrSelected {
  background-color: #ef9a9a !important;
}
0 голосов
/ 02 февраля 2020

Я только что попробовал на codepen, и он отлично работает. https://codepen.io/v08i/pen/rNaXyxe

Вот частичный код. Полный код на codepen.

<div id="app">
  <v-app id="inspire">
    <v-card
      flat
      class="py-12"
    >
      <v-card-text>
        <v-row
          align="center"
          justify="center"
        >
          <v-col cols="12">
            <p class="text-center">Multiple</p>
          </v-col>
          <v-btn-toggle
            v-model="toggle_exclusive"

          >
            <v-btn active-class="aa">
              <v-icon>mdi-format-align-left</v-icon>
            </v-btn>
            <v-btn active-class="bb">
              <v-icon>mdi-format-align-center</v-icon>
            </v-btn>
            <v-btn active-class="cc">
              <v-icon>mdi-format-align-right</v-icon>
            </v-btn>
            <v-btn active-class="dd">
              <v-icon>mdi-format-align-justify</v-icon>
            </v-btn>
          </v-btn-toggle>

          <v-col
            cols="12"
            class="text-center"
          >
            Model: {{ toggle_exclusive }}
          </v-col>
        </v-row>
      </v-card-text>
    </v-card>
  </v-app>
</div>

Одно предложение, хотя. Я думаю, что scoped CSS может испортить, потому что это собственные компоненты vuetify. Вы можете удалить scoped из стиля и проверить?

...