Skip to content
Snippets Groups Projects
Dropdown.vue 1.07 KiB
Newer Older
      'ui fluid search selection dropdown',
      { 'active visible': isOpen },
      { disabled },
    ]"
    @click="isOpen = !isOpen"
    <div class="default text">{{ selected }}</div>
    <i class="dropdown icon"></i>
    <div :class="['menu', { 'visible transition': isOpen }]">
        v-for="(option, index) in processedOptions || ['No results found.']"
        @click="select(index)"
        :key="option + index"
        :class="[
          options ? 'item' : 'message',
          { 'active selected': option === selected },
        ]"
      >
        {{ option }}
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: "Dropdown",

  props: ["options", "selected", "disabled"],
  computed: {
    processedOptions: function () {
      return this.options.map((el) =>
        el.constructor == Object ? el.name : el
      );
    },
  },
  data() {
    return {
      isOpen: false,
    };
  },
  methods: {
    select(index) {
      this.$emit("update:selection", this.options[index]);