Advertisement
Guest User

Untitled

a guest
Oct 13th, 2019
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. <template>
  2. <div class="autosuggest-container relative z-50 ">
  3. <vue-autosuggest
  4. ref="autosuggest"
  5. @click="clickHandler"
  6. @keydown.tab.prevent="tabHandler"
  7. @selected="selectHandler"
  8. :suggestions="filteredSuggestions"
  9. :inputProps="inputProps"
  10. :getSuggestionValue="getSuggestionValue"
  11. >
  12. <template slot-scope="{ suggestion }">
  13. <div>
  14. <b>{{suggestion.item.title}}</b>
  15. </div>
  16. </template>
  17. </vue-autosuggest>
  18. </div>
  19. </template>
  20.  
  21. <page-query>
  22. query Posts {
  23. places: allPlace {
  24. edges {
  25. node {
  26. id
  27. path
  28. title
  29. }
  30. }
  31. }
  32. }
  33. </page-query>
  34.  
  35. <script>
  36. import { VueAutosuggest } from "vue-autosuggest";
  37.  
  38. export default {
  39. components: {
  40. VueAutosuggest
  41. },
  42. data () {
  43. return {
  44. suggestions: this.places,
  45. filteredSuggestions: [],
  46. inputProps: {
  47. id:'autosuggest__input',
  48. onInputChange: this.fetchResults,
  49. }
  50. }
  51. },
  52. methods: {
  53. fetchResults(text) {
  54. this.filteredSuggestions = [{data:this.suggestions.filter(item => {
  55. return item.title.toLowerCase().indexOf(text.toLowerCase()) > -1;
  56. })
  57. }];
  58. },
  59. selectHandler(item){
  60. if (item){
  61. this.selected = item.item;
  62. }
  63. },
  64. tabHandler(){
  65. const { listeners, setCurrentIndex, setChangeItem, getItemByIndex } = this.$refs.autosuggest
  66. setCurrentIndex(0)
  67. setChangeItem(getItemByIndex(this.$refs.autosuggest.currentIndex), true)
  68. this.$refs.autosuggest.loading = true
  69. listeners.selected(true)
  70. },
  71. clickHandler(item){
  72. this.loading=false
  73. this.fetchResults(item ? item.item.title : "");
  74. },
  75. getSuggestionValue(suggestion) {
  76. const result = suggestion.item;
  77. return result.title;
  78. }
  79. }
  80. }
  81. </script>
  82.  
  83. <style>
  84. .autosuggest-container {
  85. display: flex;
  86. justify-content: center;
  87. }
  88. .autosuggest-container ul {
  89. width: 100%;
  90. color: rgba(30, 39, 46,1.0);
  91. list-style: none;
  92. margin: 0;
  93. padding: 0.5rem 0 .5rem 0;
  94. }
  95. .autosuggest-container li {
  96. margin: 0 0 0 0;
  97. border-radius: 5px;
  98. padding: 0.75rem 0 0.75rem 0.75rem;
  99. display: flex;
  100. align-items: center;
  101. }
  102. .autosuggest-container li:hover {
  103. cursor: pointer;
  104. }
  105. #autosuggest { width: 100%; display: block;}
  106. .autosuggest__results-item--highlighted {
  107. background-color: rgba(51, 217, 178,0.2);
  108. }
  109. </style>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement