Задать вопрос
@tryvols
Front-End разработчик

Почему vue игнорирует этот компонент и не выводит его?

<template>
  <div class="tooltip">
    <slot name="activator"></slot>
    <span :class="getPosition()">
      <span class="tooltip__text__header">
        <slot name="header"></slot>
      </span>
      <span class="tooltip__text__content">
        <slot name="content"></slot>
      </span>
    </span>
  </div>
</template>

<script>
export default {
  name: 'tooltip',
  props: {
    position: {
      type: String,
      required: true,
      validator (val) {
        let allowable = ['top', 'bottom']
        return allowable.indexOf(val) !== -1
      }
    }
  },
  computed: {
    getPosition () {
      return [
        'tooltip__text',
        'tooltip__text--' + this.position
      ]
    }
  }
}
</script>

<style lang="scss">

$tooltip-width: 120px;
$tooltip-font-size: 12px;
$tooltip-padding: 15px;
$blue: #0055cc;
$dark: #2d3440;

@mixin arrow {
  content: " ";
  position: absolute;
  left: 50%;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
}

.tooltip {
  &__text {
    visibility: hidden;
    width: $tooltip-width;
    background: $dark;
    color: #fff;
    text-align: center;
    border-radius: 4px;
    padding: $tooltip-padding;
    position: absolute;
    z-index: 1;

    &__header {
      font-size: $tooltip-font-size;
      padding-bottom: $tooltip-padding;
      font-weight: bold;
    }

    &__content {
      font-size: $tooltip-font-size;
    }

    &--top {
      bottom: 100%;
      left: 50%;
      margin-left: -($tooltip-width/2);
    }

    &--bottom {
      top: 100%;
      left: 50%;
      margin-left: -($tooltip-width/2);
    }

    &--top::after {
      @include arrow;
      top: 100%;
      border-color: $dark transparent transparent transparent;
    }

    &--bottom::after {
      @include arrow;
      bottom: 100%;
      border-color: transparent transparent $dark transparent;
    }    
  }

  &:hover &__text {
    visibility: visible;
  }
}
</style>


Usage:

<tooltip position="bottom">
        <div slot="activator" @click="toggle">
          <img src="../assets/edit-icon.svg" v-if="!isActive">
          <img src="../assets/location-icon.svg" v-else>
        </div>
        <span slot="header">
          Только локальные способы оплаты
        </span>
        <span slot="content">
          Включите эту опцию, что бы отобразить все доступные способы, независимо от вашего местоположения
        </span>
      </tooltip>
  • Вопрос задан
  • 200 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Специализация Frontend-разработчик
    9 месяцев
    Далее
  • Академия Eduson
    Frontend-разработчик
    9 месяцев
    Далее
  • Stepik
    Игра на Vue.js
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 1
@tryvols Автор вопроса
Front-End разработчик
Все, понял, я просто случайно вызвал вычисляемое свойство вместо того что бы передать его. Странно только что ошибки не было.
Кстати говоря, почему vue или webpack не выдал ошибку?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы