Add 'filter'-event to Tree.vue
parent
1100647eee
commit
2603b7a140
|
@ -120,6 +120,21 @@ export interface TreeSelectionKeys {
|
|||
[key: string]: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom filter event.
|
||||
* @see {@link TreeEmits.filter}
|
||||
*/
|
||||
export interface TreeFilterEvent {
|
||||
/**
|
||||
* Original event
|
||||
*/
|
||||
originalEvent: Event;
|
||||
/**
|
||||
* Filter value
|
||||
*/
|
||||
value: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom passthrough(pt) options.
|
||||
* @see {@link TreeProps.pt}
|
||||
|
@ -424,7 +439,7 @@ export interface TreeEmits {
|
|||
* Emitted when the selection keys change.
|
||||
* @param {TreeSelectionKeys} value - New selection keys.
|
||||
*/
|
||||
'update:selectionKeys'(event: TreeSelectionKeys): void;
|
||||
'update:selectionKeys'(value: TreeSelectionKeys): void;
|
||||
/**
|
||||
* Callback to invoke when a node is selected.
|
||||
* @param {TreeNode} node - Node instance.
|
||||
|
@ -445,6 +460,11 @@ export interface TreeEmits {
|
|||
* @param {TreeNode} node - Node instance.
|
||||
*/
|
||||
'node-collapse'(node: TreeNode): void;
|
||||
/**
|
||||
* Callback to invoke on filter input.
|
||||
* @param {TreeFilterEvent} event - Custom filter event.
|
||||
*/
|
||||
'filter'(event: TreeFilterEvent): void;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
import { mount } from '@vue/test-utils';
|
||||
import PrimeVue from 'primevue/config';
|
||||
import { nextTick } from 'vue';
|
||||
import Tree from './Tree.vue';
|
||||
|
||||
describe('Tree.vue', () => {
|
||||
|
@ -42,4 +40,18 @@ describe('Tree.vue', () => {
|
|||
|
||||
expect(wrapper.emitted('keydown')).toBeFalsy();
|
||||
});
|
||||
|
||||
it('emits update:filterValue on filter input', async () => {
|
||||
wrapper = mount(Tree, {
|
||||
props: {
|
||||
filter: true,
|
||||
},
|
||||
});
|
||||
|
||||
let searchField = wrapper.find('input.p-tree-filter');
|
||||
|
||||
await searchField.trigger('keydown.space');
|
||||
|
||||
expect(wrapper.emitted('filter')).toBeTruthy();
|
||||
})
|
||||
});
|
||||
|
|
|
@ -47,7 +47,7 @@ import TreeNode from './TreeNode.vue';
|
|||
export default {
|
||||
name: 'Tree',
|
||||
extends: BaseTree,
|
||||
emits: ['node-expand', 'node-collapse', 'update:expandedKeys', 'update:selectionKeys', 'node-select', 'node-unselect'],
|
||||
emits: ['node-expand', 'node-collapse', 'update:expandedKeys', 'update:selectionKeys', 'node-select', 'node-unselect', 'filter'],
|
||||
data() {
|
||||
return {
|
||||
d_expandedKeys: this.expandedKeys || {},
|
||||
|
@ -166,6 +166,8 @@ export default {
|
|||
if (event.code === 'Enter') {
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
this.$emit('filter', { originalEvent: event, value: event.target.value });
|
||||
},
|
||||
findFilteredNodes(node, paramsWithoutNode) {
|
||||
if (node) {
|
||||
|
|
Loading…
Reference in New Issue