@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>
  • Вопрос задан
  • 193 просмотра
Пригласить эксперта
Ответы на вопрос 1
@tryvols Автор вопроса
Front-End разработчик
Все, понял, я просто случайно вызвал вычисляемое свойство вместо того что бы передать его. Странно только что ошибки не было.
Кстати говоря, почему vue или webpack не выдал ошибку?
Ответ написан
Ваш ответ на вопрос

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

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