V3 Bento

A simple bento layout component for Vue3.



Installation

pnpm install v3-bento


Usage

Wrap the child component to be dragged with the Bento and BentoItem components.

<!-- Usage.vue -->
<Bento
  :bentoCells="bentoCells"
  class="!h-[610px] overflow-y-auto overflow-x-hidden p-[10px] box-content"
  :size="140"
  :disabled="false"
  :gap="10"
  :maximum-cells="4"
  @drag-end="(e: any) => console.log(e)"
  @drag-start="(e: any) => console.log(e)"
>
  <BentoItem 
    v-for="item in bentoCells" 
    :key="item.id" 
    :id="item.id" 
    :x="item.x" 
    :y="item.y" 
    :width="item.width" 
    :height="item.height"
  >
    <Cell :url="'./' + item.id + '.svg'" :bg="'#fff'" />
  </BentoItem>
</Bento>

Demo



Properties


<Bento />

Prop TypeDefaultRequire Default
bentoCellsBentoItemProps[]true每个格子
maximumCellsnumbertrue每一行最大格子数量
sizenumbertrue格子的大小
gapnumber10false格子的间距
disabledbooleanfalsefalse是否禁用拖拽
commonClassstring`bento-item`false格子的类名

<BentoItem />

Prop TypeDefaultRequire Default
idstringtrue格子的 ID
xnumber0true格子的 x 轴坐标
ynumber0true格子的 y 轴坐标
widthnumber1false每个单元格在 X 方向上占多大的格子
heightnumber1false每个单元格在 Y 方向上占多大的格子


Events


<Bento />

Name Return Description
dragStartcell拖拽开始,返回选中拖拽的那个格子对象
dragEndbentoCells拖拽结束,返回排序后的 bentoCells 数组


Slot

<Bento />

Name Required Description
bento-item-placeholderfalse拖拽的时候的占位要素
emptyfalse数组对象要是为空显示的 DOM