UserFlags.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <template lang="html">
  2. <div id="user-flags">
  3. <h4
  4. class="mdi mdi-folder-outline"
  5. >My folders</h4>
  6. <ul>
  7. <li v-if="flags" v-for="flag in flags" :key="flag.id">
  8. <h5>{{ flag.name }}</h5>
  9. <span
  10. class="mdi mdi-trash-can-outline"
  11. :flagid="flag.id"
  12. @click.prevent="onDeleteFlag"
  13. />
  14. </li>
  15. <li ref="create-flag">
  16. <span class="mdi mdi-folder-plus-outline"/>
  17. <input
  18. placeholder="new folder"
  19. v-model="new_folder_name"
  20. />
  21. <span
  22. class="mdi mdi-plus-box"
  23. v-if="new_folder_name"
  24. @click.prevent="onCreateFlag"
  25. />
  26. </li>
  27. </ul>
  28. </div>
  29. </template>
  30. <script>
  31. import { mapState, mapActions } from 'vuex'
  32. export default {
  33. name: "userFlags",
  34. data: () => ({
  35. new_folder_name: ""
  36. }),
  37. computed: {
  38. ...mapState({
  39. flags: state => state.User.flags
  40. })
  41. },
  42. methods: {
  43. ...mapActions({
  44. createFlag: 'User/createFlag',
  45. deleteFlag: 'User/deleteFlag'
  46. }),
  47. onCreateFlag () {
  48. console.log("UserFlags onCreateFlag", this.new_folder_name)
  49. this.createFlag(this.new_folder_name)
  50. .then(data => {
  51. console.log("onCreateFlag then", data);
  52. this.new_folder_name = "";
  53. })
  54. },
  55. onDeleteFlag (e) {
  56. let flagid = e.target.getAttribute('flagid');
  57. console.log("UserFlags onDeleteFlag", flagid);
  58. this.deleteFlag(flagid)
  59. .then(data => {
  60. console.log("onDeleteFlag then", data);
  61. this.new_folder_name = "";
  62. })
  63. }
  64. }
  65. }
  66. </script>
  67. <style lang="scss" scoped>
  68. li{
  69. width:100%;
  70. // cursor: pointer;
  71. display: flex;
  72. flex-direction: row;
  73. align-items: baseline;
  74. flex-wrap: nowrap;
  75. h5{
  76. // flex-grow:10;
  77. width:100%;
  78. }
  79. input{
  80. border: none
  81. }
  82. span.mdi{
  83. flex-basis:1em;
  84. }
  85. span.mdi-plus-box,
  86. span.mdi-trash-can-outline{
  87. cursor: pointer;
  88. }
  89. }
  90. </style>