Files
vxe-table/examples/views/table/interceptor/API.vue
2021-12-28 21:14:54 +08:00

223 lines
6.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<h1>{{ $t('app.aside.nav.interceptor') }}</h1>
<p class="tip">通过内置事件拦截器可以很容易的处理表格事件行为与第三方组件的兼容性比如这些插件 <a class="link" href="https://www.npmjs.com/package/vxe-table-plugin-element" target="_blank">vxe-table-plugin-element</a></p>
<vxe-table
resizable
highlight-current-row
highlight-hover-row
highlight-current-column
class="api-table"
:data="tableData">
<vxe-column field="name" title="app.api.title.prop" min-width="280" tree-node></vxe-column>
<vxe-column field="desc" title="app.api.title.desc" min-width="200"></vxe-column>
<vxe-column field="type" title="app.api.title.type" min-width="140"></vxe-column>
<vxe-column field="enum" title="app.api.title.enum" min-width="150"></vxe-column>
<vxe-column field="defVal" title="app.api.title.defVal" min-width="160"></vxe-column>
<vxe-column field="version" :title="$t('app.api.title.version')" width="120">
<template #default="{ row }">
<span v-show="row.version" class="compatibility">v{{ row.version }}</span>
</template>
</vxe-column>
</vxe-table>
<h2>可选值</h2>
<vxe-table
resizable
highlight-hover-row
class="api-table"
:data="typeList">
<vxe-column field="name" title="app.api.title.prop" min-width="280" tree-node></vxe-column>
<vxe-column field="desc" title="app.api.title.desc" min-width="200"></vxe-column>
<vxe-column field="type" title="app.api.title.type" min-width="140"></vxe-column>
<vxe-column field="enum" title="app.api.title.enum" min-width="150"></vxe-column>
<vxe-column field="defVal" title="app.api.title.defVal" min-width="160"></vxe-column>
<vxe-column field="version" :title="$t('app.api.title.version')" width="120">
<template #default="{ row }">
<span v-show="row.version" class="compatibility">v{{ row.version }}</span>
</template>
</vxe-column>
</vxe-table>
<h2>示例</h2>
<p class="tip">
例子比如自定义渲染某个组件后由于弹出层面板不在单元格之内按键事件的交互行为存在冲突<br>
当然还有最简单的用法只需给弹出面板加上 class=vxe-table--ignore-clear 即可
</p>
<pre>
<pre-code class="typescript">{{ demoCodes[0] }}</pre-code>
</pre>
</div>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue'
export default defineComponent({
setup () {
const tableData = ref([
{
name: 'add(type, callback)',
desc: '添加一个',
version: '',
type: '',
enum: '',
defVal: 'type: string, callback: (params, event) => any',
list: []
},
{
name: 'mixin(options)',
desc: '添加多个',
version: '',
type: '',
enum: '',
defVal: 'options?: { [type: string]: (params, event) => any }',
list: []
},
{
name: 'delete(type)',
desc: '删除',
version: '',
type: '',
enum: '',
defVal: 'type: string',
list: []
}
])
const typeList = ref([
// {
// name: 'created',
// desc: '表格初始化时触发',
// version: '',
// type: '',
// enum: '',
// defVal: '',
// list: []
// },
// {
// name: 'mounted',
// desc: '表格挂载时触发',
// version: '',
// type: '',
// enum: '',
// defVal: '',
// list: []
// },
// {
// name: 'activated',
// desc: '表格激活时触发',
// version: '',
// type: '',
// enum: '',
// defVal: '',
// list: []
// },
// {
// name: 'deactivated',
// desc: '表格停用时触发',
// version: '',
// type: '',
// enum: '',
// defVal: '',
// list: []
// },
// {
// name: 'beforeDestroy',
// desc: '表格销毁之前触发',
// version: '',
// type: '',
// enum: '',
// defVal: '',
// list: []
// },
// {
// name: 'destroyed',
// desc: '表格销毁时触发',
// version: '',
// type: '',
// enum: '',
// defVal: '',
// list: []
// },
{
name: 'event.clearActived',
desc: '清除激活单元格之前触发,允许返回 false 阻止默认行为',
version: '',
type: 'Boolean',
enum: '',
defVal: '',
list: []
},
{
name: 'event.clearFilter',
desc: '清除筛选面板之前触发,允许返回 false 阻止默认行为',
version: '',
type: 'Boolean',
enum: '',
defVal: '',
list: []
},
{
name: 'event.clearAreas',
desc: '如果功能被支持,清除单元格区域之前触发,允许返回 false 阻止默认行为',
version: '',
type: 'Boolean',
enum: '',
defVal: '',
list: []
},
{
name: 'event.keydown',
desc: '键盘按下之前触发,允许返回 false 阻止默认行为',
version: '',
type: 'Boolean',
enum: '',
defVal: '',
list: []
},
{
name: 'event.showMenu',
desc: '显示右键菜单之前触发,允许返回 false 阻止默认行为',
version: '',
type: 'Boolean',
enum: '',
defVal: '',
list: []
},
{
name: 'event.import',
desc: '工具栏中导入之前触发,允许返回 false 阻止默认行为',
version: '',
type: 'Boolean',
enum: '',
defVal: '',
list: []
},
{
name: 'event.export',
desc: '工具栏中导出之前触发,允许返回 false 阻止默认行为',
version: '',
type: 'Boolean',
enum: '',
defVal: '',
list: []
}
])
return {
tableData,
typeList,
demoCodes: [
`
import VXETable from 'vxe-table'
VXETable.interceptor.add('event.clearActived', (params, event) => {
// 比如点击了某个组件的弹出层面板之后,此时被激活单元格不应该被自动关闭,通过返回 false 可以阻止默认的行为。
if (event.target.className.indexOf('other-popper') > -1) {
return false
}
})
`
]
}
}
})
</script>