add nova
This commit is contained in:
79
nova/resources/js/mixins/PerformsSearches.js
Normal file
79
nova/resources/js/mixins/PerformsSearches.js
Normal file
@@ -0,0 +1,79 @@
|
||||
import debounce from 'lodash/debounce'
|
||||
|
||||
export default {
|
||||
data: () => ({
|
||||
search: '',
|
||||
selectedResource: null,
|
||||
selectedResourceId: null,
|
||||
availableResources: [],
|
||||
}),
|
||||
|
||||
methods: {
|
||||
/**
|
||||
* Set the currently selected resource
|
||||
*/
|
||||
selectResource(resource) {
|
||||
this.selectedResource = resource
|
||||
this.selectedResourceId = resource.value
|
||||
|
||||
if (this.field) {
|
||||
if (typeof this['emitFieldValueChange'] == 'function') {
|
||||
this.emitFieldValueChange(
|
||||
this.fieldAttribute,
|
||||
this.selectedResourceId
|
||||
)
|
||||
} else {
|
||||
Nova.$emit(this.fieldAttribute + '-change', this.selectedResourceId)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Handle the search box being cleared.
|
||||
*/
|
||||
handleSearchCleared() {
|
||||
this.availableResources = []
|
||||
},
|
||||
|
||||
/**
|
||||
* Clear the selected resource and availableResources
|
||||
*/
|
||||
clearSelection() {
|
||||
this.selectedResource = null
|
||||
this.selectedResourceId = null
|
||||
this.availableResources = []
|
||||
|
||||
if (this.field) {
|
||||
if (typeof this['emitFieldValueChange'] == 'function') {
|
||||
this.emitFieldValueChange(this.fieldAttribute, null)
|
||||
} else {
|
||||
Nova.$emit(this.fieldAttribute + '-change', null)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Perform a search to get the relatable resources.
|
||||
*/
|
||||
performSearch(search) {
|
||||
this.search = search
|
||||
|
||||
const trimmedSearch = search.trim()
|
||||
// If the user performs an empty search, it will load all the results
|
||||
// so let's just set the availableResources to an empty array to avoid
|
||||
// loading a huge result set
|
||||
if (trimmedSearch == '') {
|
||||
return
|
||||
}
|
||||
|
||||
this.searchDebouncer(() => {
|
||||
this.getAvailableResources(trimmedSearch)
|
||||
}, 500)
|
||||
},
|
||||
|
||||
/**
|
||||
* Debounce function for the search handler
|
||||
*/
|
||||
searchDebouncer: debounce(callback => callback(), 500),
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user