Order 调整排序布局
宫格类排序组件,类似于微信朋友圈上传图片,支持删除功能。
vue
<template>
<!-- <ta-group title="基础用法">
<div class="exp-order-box">
<ta-order v-model:items="items">
<template #default="{ id }">
<div class="exp-order-item" :class="[maps.get(id)]"></div>
</template>
</ta-order>
</div>
</ta-group> -->
<ta-group title="设置列数">
<div class="exp-order-box">
<ta-order v-model:items="items2" :columnNumber="4">
<template #default="{ id }">
<div class="exp-order-item" :class="[maps.get(id as number)]"></div>
</template>
</ta-order>
</div>
</ta-group>
<ta-group title="允许删除">
<div class="exp-order-box">
<ta-order v-model:items="items3" :deletable="true">
<template #default="{ id }">
<div class="exp-order-item" :class="[maps.get(id as number)]">
{{ maps.get(id as number) }}
</div>
</template>
</ta-order>
</div>
</ta-group>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue'
const items = [
{ id: 1, type: 'primary' },
{ id: 2, type: 'success' },
{ id: 3, type: 'warning' },
{ id: 4, type: 'danger' }
]
const maps = new Map(
items.map(item => {
return [item.id, item.type]
})
)
export default defineComponent({
name: 'ExpOrder',
setup() {
return {
items: ref(
items.map(item => {
return { id: item.id }
})
),
items2: ref(
items.map(item => {
return { id: item.id }
})
),
items3: ref(
items.map(item => {
return { id: item.id }
})
),
maps
}
}
})
</script>
Import
js
import { TaOrder } from 'tantalum-ui-mobile'
具体的引入方式可以参考引入组件。
Import Type
组件导出的类型定义:
ts
import type { OrderOnDelete } from 'tantalum-ui-mobile'
Props
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
v-model:items | Item[] | 是 | 列表数组 | |
column-number | number | 3 | 否 | 渲染列数 |
aspect-ratio | number | 1 | 否 | 渲染宽高比 |
deletable | boolean | false | 否 | 支持删除 |
注: 由于该组件是宫格类排序,所以需要预设列数和每项固定宽高。
items 的结构
ts
interface Item {
id: string | number
draggable?: boolean
}
注:要求一定要有 id
作为唯一键。
Events
事件 | 描述 | 回调函数参数 | TypeScript 函数 |
---|---|---|---|
delete | 单项被删除时触发 | payload: { item: { id: string | number }, index: number } | OrderOnDelete |
Slots
列表项(#default)
vue
<ta-order>
<template #default="{ id, index }">
{{ index }} : {{ id }}
</template>
</ta-order>