Skip to content

Commit 033b4cc

Browse files
Merge pull request #2 from loadsys/add-search-bar
add a search bar
2 parents 7c55811 + f4b2497 commit 033b4cc

File tree

4 files changed

+44
-8
lines changed

4 files changed

+44
-8
lines changed

src/components/manager/Manager.vue

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
<template>
22
<div class="fm-content d-flex flex-column">
3-
<disk-list v-bind:manager="manager"/>
4-
<breadcrumb v-bind:manager="manager"/>
3+
<div class="fm-search-wrapper">
4+
<div class="row align-items-center m-1">
5+
<label class="col-3" for="fm-search">Search:</label>
6+
<div class="col-9">
7+
<input class="form-control fm-search" v-model="query" @input="debounceSearch" />
8+
</div>
9+
</div>
10+
</div>
11+
<disk-list v-bind:manager="manager" />
12+
<breadcrumb v-bind:manager="manager" />
513
<div class="fm-content-body">
614
<table-view v-if="viewType === 'table'" v-bind:manager="manager"/>
715
<grid-view v-else v-bind:manager="manager"/>
@@ -15,9 +23,11 @@ import DiskList from './DiskList.vue';
1523
import Breadcrumb from './Breadcrumb.vue';
1624
import TableView from './TableView.vue';
1725
import GridView from './GridView.vue';
26+
import managerHelper from './mixins/manager';
1827
1928
export default {
2029
name: 'Manager',
30+
mixins: [managerHelper],
2131
components: {
2232
DiskList,
2333
Breadcrumb,
@@ -36,6 +46,25 @@ export default {
3646
return this.$store.state.fm[this.manager].viewType;
3747
},
3848
},
49+
watch: {
50+
selectedDirectory() {
51+
this.query = null;
52+
},
53+
},
54+
data() {
55+
return {
56+
query: null,
57+
debounce: null,
58+
};
59+
},
60+
methods: {
61+
debounceSearch() {
62+
clearTimeout(this.debounce);
63+
this.debounce = setTimeout(() => {
64+
this.selectDirectory(this.selectedDirectory, this.query);
65+
}, 600);
66+
},
67+
},
3968
};
4069
</script>
4170

@@ -48,4 +77,8 @@ export default {
4877
overflow: auto;
4978
}
5079
}
80+
81+
.fm-search-wrapper {
82+
margin-left: auto;
83+
}
5184
</style>

src/components/manager/mixins/manager.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,10 @@ export default {
6262
/**
6363
* Load selected directory and show files
6464
* @param path
65+
* @param query
6566
*/
66-
selectDirectory(path) {
67-
this.$store.dispatch(`fm/${this.manager}/selectDirectory`, { path, history: true });
67+
selectDirectory(path, query) {
68+
this.$store.dispatch(`fm/${this.manager}/selectDirectory`, { path, query, history: true });
6869
},
6970

7071
/**

src/http/get.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,11 @@ export default {
3232
* Get content (files and folders)
3333
* @param disk
3434
* @param path
35+
* @param query
3536
* @returns {*}
3637
*/
37-
content(disk, path) {
38-
return HTTP.get('content', { params: { disk, path } });
38+
content(disk, path, query) {
39+
return HTTP.get('content', { params: { disk, path, query } });
3940
},
4041

4142
/**

src/store/manager/actions.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,16 @@ export default {
99
* @param dispatch
1010
* @param rootState
1111
* @param path
12+
* @param query
1213
* @param history
1314
* @returns {Promise}
1415
*/
15-
selectDirectory({ state, commit, dispatch, rootState }, { path, history }) {
16+
selectDirectory({ state, commit, dispatch, rootState }, { path, query, history }) {
1617
// reset content
1718
commit('setDirectoryContent', { directories: [], files: [] });
1819

1920
// get content for the selected directory
20-
return GET.content(state.selectedDisk, path).then((response) => {
21+
return GET.content(state.selectedDisk, path, query).then((response) => {
2122
if (response.data.result.status === 'success') {
2223
commit('resetSelected');
2324
commit('resetSortSettings');

0 commit comments

Comments
 (0)