beat.vue 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <div class="beat-wrapper">
  3. <input v-model="divisioni" type="number" min="1" oninput="validity.valid||(value='');">
  4. <!--- trovare modo per prevenire scrittura di input-->
  5. <div class="division-wrapper">
  6. <div class="suddivisione-wrapper" v-for="j in nDivisioni" :key='j' :id="'suddivisione'+j" >
  7. <div class="suddivisione-content" :style="{'background-color': colore }"></div>
  8. </div>
  9. </div>
  10. </div>
  11. </template>
  12. <script>
  13. export default {
  14. props: [ 'id', 'line' ],
  15. data() {
  16. return {
  17. nome:'',
  18. colore: 'red',
  19. divisioni: 1,
  20. timing: 0
  21. }
  22. },
  23. computed: {
  24. nDivisioni() {
  25. var n = parseInt(this.divisioni);
  26. return isNaN(n) ? 0 : n;
  27. }
  28. },
  29. methods: {
  30. titolo(progressivo){
  31. this.nome = "nomeBeat" + progressivo;
  32. }
  33. }
  34. }
  35. </script>
  36. <style>
  37. .suddivisione-wrapper{
  38. flex: 1 1 auto;
  39. width: 100%;
  40. height:1em;
  41. display:flex;
  42. }
  43. .active{
  44. background-color:black;
  45. }
  46. input {
  47. background:transparent;
  48. width:2em;
  49. }
  50. .division-wrapper {
  51. flex:1 1 auto;
  52. display: flex;
  53. }
  54. .suddivisione-content{
  55. flex:1 1 auto;
  56. }
  57. input[type=number]::-webkit-inner-spin-button,
  58. input[type=number]::-webkit-outer-spin-button {
  59. -webkit-appearance: none;
  60. -moz-appearance: none;
  61. appearance: none;
  62. margin: 0;
  63. }
  64. input[type=number] {
  65. -moz-appearance:textfield;
  66. padding-left:0.2em;
  67. color:lightgray;
  68. border:none;
  69. }
  70. </style>