Achievement.vue 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <template>
  2. <div class="panel panel-default">
  3. <div class="panel-heading">
  4. <h3 class="panel-title">Select achievement</h3>
  5. </div>
  6. <div class="panel-body">
  7. <form role="form" id="achievement">
  8. <div class="form-group">
  9. <div class="btn-group btn-group-justified">
  10. <typeahead placeholder="Search achievement..."
  11. :async="apiEndpoint + '/search/'"
  12. :template="template"
  13. :on-hit="callback"
  14. v-model="selectText">
  15. </typeahead>
  16. </div>
  17. </div>
  18. <button @click="addAchievement" class="btn btn-block btn-primary">Add</button>
  19. </form>
  20. </div>
  21. </div>
  22. </template>
  23. <script>
  24. import { typeahead } from 'vue-strap'
  25. export default {
  26. name: 'achievement',
  27. data () {
  28. return {
  29. achievements: [],
  30. selected: {},
  31. selectText: '',
  32. asynchronous: '{{item.title}}',
  33. template: '<img :src=\'"http://media.blizzard.com/wow/icons/18/" + item.icon + ".jpg"\' /> <span>{{item.title}}</span>'
  34. }
  35. },
  36. methods: {
  37. callback: function (item) {
  38. this.selected = item
  39. return item.title
  40. },
  41. addAchievement: function () {
  42. this.$emit('add-achievement', this.selected)
  43. this.selected = {}
  44. this.selectText = ''
  45. }
  46. },
  47. components: {
  48. typeahead
  49. }
  50. }
  51. </script>
  52. <!-- Add "scoped" attribute to limit CSS to this component only -->
  53. <style scoped>
  54. </style>