Sha256: 009cc646d5b4d454d8c1743d806584516a5fe3fd077aad2adc7cd058fce5ce26

Contents?: true

Size: 1.22 KB

Versions: 12

Compression:

Stored size: 1.22 KB

Contents

<template>
  <v-popoper
    trigger="manual"
    :autoHide="true"
    :open="open"
    :placement="placement"
    class="flex"
  >
    <div
      class="z-10 relative flex items-center focus:outline-none select-none cursor-pointer w-full"
      @click.stop.prevent="toggle"
    >
      <slot name="button"></slot>
    </div>

    <template slot="popover">
      <slot name="content"></slot>
    </template>
  </v-popoper>
</template>

<script>
import { ModalBus } from '@/plugins/event-bus'

export default {
  name: 'Dropdown',
  props: {
    placement: {
      type: String,
      default: 'bottom',
      validator: (value) =>
        ['top', 'bottom', 'right', 'left'].indexOf(value) !== -1,
    },
  },
  data() {
    return {
      open: false,
    }
  },
  mounted() {
    ModalBus.$on('open', () => this.close())
    document.addEventListener('keydown', this.onEscape)
    this.$once('hook:beforeDestroy', () => {
      document.removeEventListener('keydown', this.onEscape)
    })
  },
  methods: {
    onEscape(e) {
      if (e.key === 'Esc' || e.key === 'Escape') this.close()
    },
    toggle() {
      this.open = !this.open
      this.$emit('on-dropdown-toggle', this)
    },
    close() {
      this.open = false
    },
  },
}
</script>

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
maglevcms-1.1.7 app/frontend/editor/components/kit/dropdown.vue
maglevcms-1.1.6 app/frontend/editor/components/kit/dropdown.vue
maglevcms-1.1.5 app/frontend/editor/components/kit/dropdown.vue
maglevcms-1.1.4 app/frontend/editor/components/kit/dropdown.vue
maglevcms-1.1.3 app/frontend/editor/components/kit/dropdown.vue
maglevcms-1.1.2 app/frontend/editor/components/kit/dropdown.vue
maglevcms-1.1.1 app/frontend/editor/components/kit/dropdown.vue
maglevcms-1.1.0 app/frontend/editor/components/kit/dropdown.vue
maglevcms-1.0.0 app/javascript/editor/components/kit/dropdown.vue
maglevcms-1.0.0.rc3 app/javascript/editor/components/kit/dropdown.vue
maglevcms-1.0.0.rc2 app/javascript/editor/components/kit/dropdown.vue
maglevcms-1.0.0.rc1 app/javascript/editor/components/kit/dropdown.vue