09-dynamic-add-remove.html 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>Vue Grid Layout Example 9 - Dynamic Add/Remove</title>
  6. <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
  7. <link rel="stylesheet" href="app.css" />
  8. </head>
  9. <style>
  10. .remove {
  11. position: absolute;
  12. right: 2px;
  13. top: 0;
  14. cursor: pointer;
  15. }
  16. </style>
  17. <body>
  18. <!--<a href="https://github.com/jbaysolutions/vue-grid-layout">View project on Github</a>
  19. <br />
  20. <a href="08-responsive-predefined-layouts.html">Previous example: Responsive - predefined layouts</a>
  21. <br />
  22. <a href="10-drag-from-outside.html">Next example: Drag from outside</a>-->
  23. <div id="app" style="width: 100%;">
  24. <!--<pre>{{ $data | json }}</pre>-->
  25. <div>
  26. <div class="layoutJSON">
  27. Displayed as <code>[x, y, w, h]</code>:
  28. <div class="columns">
  29. <div class="layoutItem" v-for="item in layout">
  30. <b>{{item.i}}</b>: [{{item.x}}, {{item.y}}, {{item.w}},
  31. {{item.h}}]
  32. </div>
  33. </div>
  34. </div>
  35. </div>
  36. <div id="content">
  37. <button @click="addItem">Add an item dynamically</button>
  38. <input type="checkbox" v-model="draggable" /> Draggable
  39. <input type="checkbox" v-model="resizable" /> Resizable
  40. <br />
  41. <grid-layout :layout="layout"
  42. :col-num="colNum"
  43. :row-height="30"
  44. :is-draggable="draggable"
  45. :is-resizable="resizable"
  46. :vertical-compact="true"
  47. :use-css-transforms="true"
  48. >
  49. <grid-item v-for="item in layout"
  50. :static="item.static"
  51. :x="item.x"
  52. :y="item.y"
  53. :w="item.w"
  54. :h="item.h"
  55. :i="item.i"
  56. >
  57. <span class="text">{{item.i}}</span>
  58. <span class="remove" @click="removeItem(item.i)">x</span>
  59. </grid-item>
  60. </grid-layout>
  61. </div>
  62. </div>
  63. <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.min.js"></script>
  64. <script src="https://cdn.jsdelivr.net/npm/vue-grid-layout@2.3.11/dist/vue-grid-layout.umd.min.js"></script>
  65. <script src="09-dynamic-add-remove.js"></script>
  66. </body>
  67. </html>