Regarding the questions:
1) Currently, there is no straightforward approach to do this as if we search in the data we have no information if this data is visible or not. Also, even if we find the item and locate that is not visible, it could be nested in N-levels and we may need to go up recursively to check to which level the nodes are expanded and which levels have to be expanded.
2) These customizations are possible when using the AngularJS(not Angular 2+) version of the widgets as the Directives are wrappers over the jQuery widgets and the rendering and the functionalities are the same.
If you need further assistance with the searching functionality, I can recommend our Professional Services team which will be able to provide a solution that will be custom made for the real application covering the specific scenarios and requirements:
Let me know if you need additional details on this matter.