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 visibleBooleanfalse
triggerTrigger modestringhover / click / focusclick
appendToBodyAppend the overlay to bodyBooleanfalse
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 popperBooleanfalse
transitionCustom transition animation. After setting a custom animation, GPU acceleration must be disabled, otherwise it will not applystringfade-in-linear
gpu-accelerationGPU acceleration for the default animationBooleantrue
stop-popper-mouse-eventWhether to stop popper mouse eventsBooleantrue
show-arrowWhether to show arrowBooleantrue
manual-modeWhether to use manual control. When enabled, :visible must be set explicitlyBooleantrue
themeThemestringdark or lightdark
show-afterDelay before showing, in millisecondsnumber0
close-delayDelay before hiding, in millisecondsnumber0
offsetPosition offset amountNumber12
arrow-offsetArrow offsetNumber5
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-incrementsNumber0
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.