UserFlags.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <template lang="html">
  2. <div id="user-flags">
  3. <h2
  4. class="mdi mdi-folder-outline"
  5. >My folders</h2>
  6. <ul>
  7. <li v-if="flags" v-for="flag in flags" :key="flag.id">
  8. <h5>{{ flag.name }}</h5>
  9. <div class="actions">
  10. <span
  11. class="mdi mdi-trash-can-outline"
  12. :flagid="flag.id"
  13. @click.prevent="onDeleteFlag"
  14. />
  15. </div>
  16. </li>
  17. <li ref="create-flag">
  18. <input
  19. placeholder="new folder"
  20. v-model="new_folder_name"
  21. />
  22. <span
  23. class="mdi mdi-plus-box"
  24. v-if="new_folder_name && !is_creating_folder"
  25. @click.prevent="onCreateFlag"
  26. />
  27. </li>
  28. </ul>
  29. </div>
  30. </template>
  31. <script>
  32. import { mapState, mapActions } from 'vuex'
  33. export default {
  34. name: "userFlags",
  35. data: () => ({
  36. new_folder_name: "",
  37. is_creating_folder: false
  38. }),
  39. computed: {
  40. ...mapState({
  41. flags: state => state.User.flags
  42. })
  43. },
  44. methods: {
  45. ...mapActions({
  46. createFlag: 'User/createFlag',
  47. deleteFlag: 'User/deleteFlag'
  48. }),
  49. onCreateFlag () {
  50. console.log("UserFlags onCreateFlag", this.new_folder_name)
  51. this.createFlag(this.new_folder_name)
  52. .then(data => {
  53. console.log("onCreateFlag then", data);
  54. this.new_folder_name = "";
  55. })
  56. },
  57. onDeleteFlag (e) {
  58. let flagid = e.target.getAttribute('flagid');
  59. console.log("UserFlags onDeleteFlag", flagid);
  60. this.deleteFlag(flagid)
  61. .then(data => {
  62. console.log("onDeleteFlag then", data);
  63. this.new_folder_name = "";
  64. })
  65. }
  66. }
  67. }
  68. </script>
  69. <style lang="scss" scoped>
  70. </style>