Skip to content

Commit

Permalink
Merge pull request #4874 from mroettgen/features/mroettgen/tree-add-s…
Browse files Browse the repository at this point in the history
…earch-event

Add 'filter'-event to Tree.vue
  • Loading branch information
tugcekucukoglu committed Dec 1, 2023
2 parents 43708d4 + 2603b7a commit 31cb589
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 4 deletions.
22 changes: 21 additions & 1 deletion components/lib/tree/Tree.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,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}
Expand Down Expand Up @@ -370,7 +385,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.
Expand All @@ -391,6 +406,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;
}

/**
Expand Down
16 changes: 14 additions & 2 deletions components/lib/tree/Tree.spec.js
Original file line number Diff line number Diff line change
@@ -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', () => {
Expand Down Expand Up @@ -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();
})
});
4 changes: 3 additions & 1 deletion components/lib/tree/Tree.vue
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,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 || {},
Expand Down Expand Up @@ -167,6 +167,8 @@ export default {
if (event.code === 'Enter') {
event.preventDefault();
}
this.$emit('filter', { originalEvent: event, value: event.target.value });
},
findFilteredNodes(node, paramsWithoutNode) {
if (node) {
Expand Down

0 comments on commit 31cb589

Please sign in to comment.