186 lines
7.3 KiB
Plaintext
186 lines
7.3 KiB
Plaintext
|
// window.HTMLElement.prototype.getBoundingClientRect = function () {};
|
||
|
|
||
|
it('should filtercallback work', async () => {
|
||
|
wrapper = mount({
|
||
|
components: {
|
||
|
DataTable,
|
||
|
Column,
|
||
|
Button,
|
||
|
InputText
|
||
|
},
|
||
|
template: `
|
||
|
<DataTable :value="value" v-model:filters="filters" :globalFilterFields="['code', 'name']" filterDisplay="row">
|
||
|
<template #header>
|
||
|
<div class="flex justify-content-end">
|
||
|
<span class="p-input-icon-left ">
|
||
|
<i class="pi pi-search" />
|
||
|
<InputText v-model="filters['global'].value" placeholder="Keyword Search" />
|
||
|
</span>
|
||
|
</div>
|
||
|
</template>
|
||
|
<Column field="code" header="Code">
|
||
|
<template #body="{data}">
|
||
|
{{data.code}}
|
||
|
</template>
|
||
|
<template #filter="{filterModel,filterCallback}">
|
||
|
<InputText type="text" v-model="filterModel.value" @input="filterCallback()" class="p-column-filter" :placeholder="\`Search by name - \${filterModel.matchMode}\`"/>
|
||
|
</template>
|
||
|
</Column>
|
||
|
<Column field="name" header="Name">
|
||
|
<template #body="{data}">
|
||
|
{{data.name}}
|
||
|
</template>
|
||
|
<template #filter="{filterModel,filterCallback}">
|
||
|
<InputText type="text" v-model="filterModel.value" @keydown.enter="filterCallback()" class="p-column-filter" :placeholder="\`Search by name - \${filterModel.matchMode}\`"/>
|
||
|
</template>
|
||
|
</Column>
|
||
|
</DataTable>
|
||
|
`,
|
||
|
data() {
|
||
|
return {
|
||
|
value: smallData,
|
||
|
filters: null
|
||
|
}
|
||
|
},
|
||
|
created() {
|
||
|
this.initFilters1();
|
||
|
},
|
||
|
methods: {
|
||
|
clearFilter1() {
|
||
|
this.initFilters1();
|
||
|
},
|
||
|
initFilters1() {
|
||
|
this.filters = {
|
||
|
'global': {value: null, matchMode: FilterMatchMode.CONTAINS},
|
||
|
'code': {operator: FilterOperator.AND, constraints: [{value: null, matchMode: FilterMatchMode.STARTS_WITH}]},
|
||
|
'name': {operator: FilterOperator.AND, constraints: [{value: null, matchMode: FilterMatchMode.STARTS_WITH}]},
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
|
||
|
const inputs = wrapper.findAll('input.p-column-filter');
|
||
|
// const onFilterApply = jest.spyOn(wrapper.vm, 'onFilterApply');
|
||
|
console.log(inputs[0].html())
|
||
|
// inputs[0].element.value = 'z';
|
||
|
// await inputs[0].setValue('z');
|
||
|
// await inputs[0].trigger('keydown.enter');
|
||
|
await inputs[0].trigger('input', { key: 'z' });
|
||
|
|
||
|
await wrapper.vm.$nextTick();
|
||
|
|
||
|
// expect(onFilterApply).toHaveBeenCalled();
|
||
|
console.log(wrapper.vm.filters.code)
|
||
|
});
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
it('should start drag over the column', async () => {
|
||
|
const firstTH = wrapper.findAll('th')[0];
|
||
|
const headerContent = wrapper.findAll('.p-column-header-content')[0];
|
||
|
console.log(firstTH)
|
||
|
|
||
|
await wrapper.setProps({ reorderableColumns: true });
|
||
|
|
||
|
await wrapper.vm.onColumnHeaderDragStart({ target: {firstTH, parentElement: headerContent, nodeName: 'TH'}, dataTransfer: { setData: () => {}} });
|
||
|
|
||
|
await wrapper.vm.onColumnHeaderDragOver({ target: {firstTH, parentElement: headerContent, nodeName: 'TH'}, preventDefault: () => {}});
|
||
|
|
||
|
await wrapper.vm.onColumnHeaderDragLeave({ target: {firstTH, parentElement: headerContent, nodeName: 'TH'}, preventDefault: () => {}});
|
||
|
|
||
|
await wrapper.vm.onColumnHeaderDrop({ target: {firstTH, parentElement: headerContent, nodeName: 'TH'}, preventDefault: () => {}});
|
||
|
|
||
|
|
||
|
|
||
|
console.log(wrapper.componentVM.draggedColumn)
|
||
|
|
||
|
});
|
||
|
|
||
|
it('should have row styling', async () => {
|
||
|
await wrapper.setProps({ rowClass: (data) => {console.log(data)}});
|
||
|
|
||
|
console.log()
|
||
|
});
|
||
|
|
||
|
|
||
|
// describe('DataTable and ContextMenu', () => {
|
||
|
// it('should exist', async () => {
|
||
|
// const wrapper = mount({
|
||
|
// global: {
|
||
|
// mocks: {
|
||
|
// $primevue: {
|
||
|
// config: {
|
||
|
// 'ripple': true,
|
||
|
// 'inputStyle': 'outlined'
|
||
|
// }
|
||
|
// }
|
||
|
// },
|
||
|
// stubs: ['router-link'],
|
||
|
// },
|
||
|
// components: {
|
||
|
// DataTable,
|
||
|
// Column,
|
||
|
// ContextMenu
|
||
|
// },
|
||
|
// template: `
|
||
|
// <DataTable :value="smallData" contextMenu v-model:contextMenuSelection="selectedProduct" @rowContextmenu="onRowContextMenu" responsiveLayout="scroll">
|
||
|
// <Column field="code" header="Code"></Column>
|
||
|
// <Column field="name" header="Name"></Column>
|
||
|
// </DataTable>
|
||
|
|
||
|
// <ContextMenu :model="menuModel" ref="cm" />
|
||
|
// `,
|
||
|
// data() {
|
||
|
// return {
|
||
|
// smallData: [
|
||
|
// {
|
||
|
// "id": "1000",
|
||
|
// "code": "vbb124btr",
|
||
|
// "name": "Game Controller"
|
||
|
// },
|
||
|
// {
|
||
|
// "id": "1001",
|
||
|
// "code": "nvklal433",
|
||
|
// "name": "Black Watch"
|
||
|
// },
|
||
|
// {
|
||
|
// "id": "1002",
|
||
|
// "code": "zz21cz3c1",
|
||
|
// "name": "Blue Band"
|
||
|
// }
|
||
|
// ],
|
||
|
// selectedProduct: null,
|
||
|
// menuModel: [
|
||
|
// {label: 'View', icon: 'pi pi-fw pi-search', command: () => this.viewProduct(this.selectedProduct)},
|
||
|
// {label: 'Delete', icon: 'pi pi-fw pi-times', command: () => this.deleteProduct(this.selectedProduct)}
|
||
|
// ]
|
||
|
// }
|
||
|
// },
|
||
|
// methods: {
|
||
|
// onRowContextMenu(event) {
|
||
|
// this.$refs.cm.show(event.originalEvent);
|
||
|
// },
|
||
|
// viewProduct(product) {
|
||
|
// console.log(product);
|
||
|
// },
|
||
|
// deleteProduct(product) {
|
||
|
// this.products = this.products.filter((p) => p.id !== product.id);
|
||
|
// this.selectedProduct = null;
|
||
|
// },
|
||
|
// }
|
||
|
// });
|
||
|
|
||
|
// const firstTD = wrapper.findAll('td')[0];
|
||
|
|
||
|
// const event = { pageX: 100, pageY: 120, preventDefault: () => {}, stopPropagation: () => {}};
|
||
|
|
||
|
// wrapper.componentVM.onRowContextMenu({ originalEvent: { pageX: 100, pageY: 120, preventDefault: () => {}, stopPropagation: () => {}} });
|
||
|
|
||
|
// // console.log(wrapper.html())
|
||
|
|
||
|
// });
|
||
|
// });
|