Skip to content

Popper ​

Popper is built on the third-party library popper.js. Refer to its documentation for configuration. All overlay components in the library are built on this base component. You can also create your own extensions.

Basic Usage ​

<template>
  <div style="width: 200px">
    <b-popper trigger="click" theme="light" :z-index="1000">
      <template #default>This is some contentThis is some contentThis is some content</template>
      <template #trigger>
        <b-button>Triggerpopper</b-button>
      </template>
    </b-popper>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'
const visible = ref(false)
</script>

Column Select ​

[
  {
    "name": "Name",
    "checked": false
  },
  {
    "name": "Age",
    "checked": false
  },
  {
    "name": "Phone",
    "checked": false
  },
  {
    "name": "Gender",
    "checked": false
  },
  {
    "name": "Address",
    "checked": false
  },
  {
    "name": "Remarks",
    "checked": false
  }
]
<template>
  <div>
    <div style="width: 200px">
      <b-popper
        trigger="click"
        theme="light"
        :show-arrow="false"
        :offset="4"
        placement="bottom-start"
        transition="zoom-in-top"
        popper-class="bin-select__popper"
        :gpu-acceleration="false"
      >
        <template #default>
          <div style="width: 120px">
            <div style="padding: 8px 10px 10px; border-bottom: 1px solid #eee">Select columns</div>
            <div v-for="(item, index) in list" :key="index" style="padding: 4px 8px">
              <b-checkbox v-model="item.checked">{{ item.name }}</b-checkbox>
            </div>
          </div>
        </template>
        <template #trigger>
          <b-button>Select columns</b-button>
        </template>
      </b-popper>
    </div>

    <pre>{{ list }}</pre>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'
const list = ref([
  { name: 'Name', checked: false },
  { name: 'Age', checked: false },
  { name: 'Phone', checked: false },
  { name: 'Gender', checked: false },
  { name: 'Address', checked: false },
  { name: 'Remarks', checked: false }
])
</script>

Props ​

ParameterDescriptionTypeOptionsDefault
v-model:visibleWhether the popper is visibleBoolean—false
triggerTrigger modestringhover / click / focusclick
appendToBodyAppend the overlay to bodyBoolean—false
placementPosition of the popperstringtop/top-start/top-end/bottom/bottom-start/bottom-end/left/left-start/left-end/right/right-start/right-end—
disabledDisable the popperBoolean—false
transitionCustom transition animation. After setting a custom animation, GPU acceleration must be disabled, otherwise it will not applystring—fade-in-linear
gpu-accelerationGPU acceleration for the default animationBoolean—true
stop-popper-mouse-eventWhether to stop popper mouse eventsBoolean—true
show-arrowWhether to show arrowBoolean—true
manual-modeWhether to use manual control. When enabled, :visible must be set explicitlyBoolean—true
themeThemestringdark or lightdark
show-afterDelay before showing, in millisecondsnumber—0
close-delayDelay before hiding, in millisecondsnumber—0
offsetPosition offset amountNumber—12
arrow-offsetArrow offsetNumber—5
classTrigger element classstring——
popper-classAdditional class for the popper elementstring——
popper-optionsAdditional popper options. See popper.js docs. Usually not neededObject——
z-indexZ-index level. Default is 2000. The dialog auto-increments. If set, it appends and then auto-incrementsNumber—0
styleStyle for the popper elementObject——

Slot ​

NameDescription
defaultPopper content slot. Required. Can be extended for various business use cases
triggerTrigger slot. Required. Must contain a single DOM element or component for attaching event listeners.