diff --git a/app/imports/ui/components/tree/TreeSearchInput.vue b/app/imports/ui/components/tree/TreeSearchInput.vue
new file mode 100644
index 00000000..9c843b9a
--- /dev/null
+++ b/app/imports/ui/components/tree/TreeSearchInput.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
diff --git a/app/imports/ui/creature/character/characterSheetTabs/TreeTab.vue b/app/imports/ui/creature/character/characterSheetTabs/TreeTab.vue
index c20b1051..ae2988fc 100644
--- a/app/imports/ui/creature/character/characterSheetTabs/TreeTab.vue
+++ b/app/imports/ui/creature/character/characterSheetTabs/TreeTab.vue
@@ -23,19 +23,11 @@
:disabled="organizeDisabled"
style="flex-grow: 0; height: 32px;"
/>
-
{
- if (filter.value){
- typeFilters.push(filter.value);
- } else {
- // escape string
- let term = filter.replace( /[-/\\^$*+?.()|[\]{}]/g, '\\$&' );
- var reg = new RegExp( '.*' + term + '.*', 'i' );
- nameFilters.push(reg)
- }
- });
- return {$or: [
- {type: {$in: typeFilters}},
- {name: {$in: nameFilters}},
- ]};
- },
- },
watch: {
filter(filter){
if (filter) {
diff --git a/app/imports/ui/creature/creatureProperties/CreaturePropertiesTree.vue b/app/imports/ui/creature/creatureProperties/CreaturePropertiesTree.vue
index c3c48d81..79bce174 100644
--- a/app/imports/ui/creature/creatureProperties/CreaturePropertiesTree.vue
+++ b/app/imports/ui/creature/creatureProperties/CreaturePropertiesTree.vue
@@ -28,7 +28,10 @@
type: Object,
default: undefined,
},
- filter: Object,
+ filter: {
+ type: Object,
+ default: undefined,
+ },
group: {
type: String,
default: 'creatureProperties'
diff --git a/app/imports/ui/library/LibraryAndNode.vue b/app/imports/ui/library/LibraryAndNode.vue
index c2ad217c..aa6601db 100644
--- a/app/imports/ui/library/LibraryAndNode.vue
+++ b/app/imports/ui/library/LibraryAndNode.vue
@@ -25,9 +25,16 @@
class="mx-3"
style="flex-grow: 0; height: 32px;"
/>
+
@@ -52,6 +60,7 @@
:organize-mode="organize"
:selected-node="selectedNode"
style="overflow-y: auto; padding: 12px;"
+ :filter="filter"
@selected="clickNode"
/>
@@ -82,6 +91,7 @@ import { getPropertyName } from '/imports/constants/PROPERTIES.js';
import isDarkColor from '/imports/ui/utility/isDarkColor.js';
import { assertEditPermission } from '/imports/api/sharing/sharingPermissions.js';
import getThemeColor from '/imports/ui/utility/getThemeColor.js';
+import TreeSearchInput from '/imports/ui/components/tree/TreeSearchInput.vue';
export default {
components: {
@@ -90,6 +100,7 @@ export default {
LibraryNodeDialog,
LibraryContentsContainer,
InsertLibraryNodeButton,
+ TreeSearchInput,
},
props: {
selection: Boolean,
@@ -101,6 +112,7 @@ export default {
data(){ return {
organize: false,
selectedNodeId: undefined,
+ filter: undefined,
};},
computed: {
isToolbarDark(){
diff --git a/app/imports/ui/library/LibraryBrowser.vue b/app/imports/ui/library/LibraryBrowser.vue
index 154ae265..8d7cd84f 100644
--- a/app/imports/ui/library/LibraryBrowser.vue
+++ b/app/imports/ui/library/LibraryBrowser.vue
@@ -47,6 +47,7 @@
:organize-mode="organizeMode && editPermission(library)"
:edit-mode="editMode"
:selected-node="selectedNode"
+ :filter="filter"
should-subscribe
@selected="e => $emit('selected', e)"
/>
@@ -87,6 +88,10 @@ export default {
type: Object,
default: undefined,
},
+ filter: {
+ type: Object,
+ default: undefined,
+ },
},
data(){ return {
expandedLibrary: [],
diff --git a/app/imports/ui/library/LibraryContentsContainer.vue b/app/imports/ui/library/LibraryContentsContainer.vue
index efbdf49e..f30e30fb 100644
--- a/app/imports/ui/library/LibraryContentsContainer.vue
+++ b/app/imports/ui/library/LibraryContentsContainer.vue
@@ -38,13 +38,20 @@
TreeNodeList,
},
props: {
- libraryId: String,
+ libraryId: {
+ type: String,
+ default: undefined,
+ },
organizeMode: Boolean,
selectedNode: {
type: Object,
default: undefined,
},
shouldSubscribe: Boolean,
+ filter: {
+ type: Object,
+ default: undefined,
+ },
},
data(){return {
slowShouldSubscribe: this.shouldSubscribe,
@@ -79,7 +86,13 @@
},
libraryChildren(){
if (!this.library) return;
- return nodesToTree({collection: LibraryNodes, ancestorId: this.library._id});
+ return nodesToTree({
+ collection: LibraryNodes,
+ ancestorId: this.library._id,
+ filter: this.filter,
+ includeFilteredDocAncestors: true,
+ includeFilteredDocDescendants: true,
+ });
},
},
methods: {