UserFlags.vue 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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="flagcolls" v-for="coll in flagcolls" :key="coll.id">
  8. <h5>{{ coll.name }} ({{ coll.items.length }})</h5>
  9. <div class="actions">
  10. <span
  11. class="delete-btn mdi"
  12. :class="flagDeletingClassObj"
  13. :flagcollid="coll.id"
  14. @click.prevent="onDeleteFlagColl"
  15. />
  16. </div>
  17. </li>
  18. <li class="create-flag">
  19. <input
  20. placeholder="new folder"
  21. v-model="new_folder_name"
  22. />
  23. <span
  24. class="add-btn mdi"
  25. :class="addFlagBtnClassObj"
  26. @click.prevent="onCreateFlagColl"
  27. />
  28. </li>
  29. </ul>
  30. </div>
  31. </template>
  32. <script>
  33. import { mapState, mapActions } from 'vuex'
  34. export default {
  35. name: "userFlags",
  36. data: () => ({
  37. new_folder_name: "",
  38. is_creating_folder: false,
  39. is_deleting_folder: false
  40. }),
  41. computed: {
  42. ...mapState({
  43. flagcolls: state => state.User.flagcolls
  44. }),
  45. addFlagBtnClassObj() {
  46. return {
  47. 'mdi-plus-circle-outline': !this.is_creating_folder,
  48. 'mdi-loading': this.is_creating_folder,
  49. active: this.new_folder_name.length > 4 && !this.is_creating_folder,
  50. loading: this.is_creating_folder
  51. }
  52. },
  53. flagDeletingClassObj() {
  54. return {
  55. 'mdi-trash-can-outline': !this.is_deleting_folder,
  56. 'mdi-loading': this.is_deleting_folder,
  57. 'loading': this.is_deleting_folder
  58. }
  59. }
  60. },
  61. methods: {
  62. ...mapActions({
  63. createFlagColl: 'User/createFlagColl',
  64. deleteFlagColl: 'User/deleteFlagColl'
  65. }),
  66. onCreateFlagColl () {
  67. console.log("UserFlags onCreateFlagColl", this.new_folder_name)
  68. this.is_creating_folder = true;
  69. this.createFlagColl(this.new_folder_name)
  70. .then(data => {
  71. console.log("onCreateFlagColl then", data);
  72. this.new_folder_name = "";
  73. this.is_creating_folder = false;
  74. })
  75. },
  76. onDeleteFlagColl (e) {
  77. let flagcollid = e.target.getAttribute('flagcollid');
  78. console.log("UserFlags onDeleteFlagColl", flagcollid);
  79. this.is_deleting_folder = flagcollid;
  80. this.deleteFlagColl(flagcollid)
  81. .then(() => {
  82. // console.log("onDeleteFlagColl then", data);
  83. this.is_deleting_folder = false;
  84. })
  85. }
  86. }
  87. }
  88. </script>
  89. <style lang="scss" scoped>
  90. </style>