Vore audio!
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

86 wiersze
1.5 KiB

  1. <template>
  2. <div>
  3. <div
  4. v-if="!dummy"
  5. :class="source.active ? '' : 'inactive'"
  6. class="source-node"
  7. >
  8. <button class="delete-button" v-on:click="$emit('delete')">X</button>
  9. <toggle class="active-toggle" v-model="source.active" />
  10. <div class="node-name">{{ source.name }}</div>
  11. <node-props :node="source"></node-props>
  12. </div>
  13. <div v-if="dummy" class="source-node dummy">Drop sounds here!</div>
  14. </div>
  15. </template>
  16. <script lang="ts">
  17. import { Source } from "@/sources/Source";
  18. import { Options, Vue } from "vue-class-component";
  19. import NodeProps from "@/components/NodeProps.vue";
  20. import Toggle from "@vueform/toggle";
  21. @Options({
  22. props: {
  23. source: Source,
  24. dummy: false,
  25. },
  26. components: {
  27. NodeProps,
  28. Toggle,
  29. },
  30. emits: ["delete"],
  31. })
  32. export default class SourceNode extends Vue {
  33. source!: Source;
  34. dummy = false;
  35. }
  36. </script>
  37. <style scoped>
  38. .source-node {
  39. width: 100%;
  40. height: 100%;
  41. background: #555;
  42. display: flex;
  43. flex-direction: column;
  44. position: relative;
  45. transition: 0.2s background;
  46. }
  47. .source-node.inactive {
  48. background: #888;
  49. }
  50. .node-name {
  51. font-size: 24pt;
  52. margin: 4pt;
  53. color: #fcf;
  54. margin-top: 30pt;
  55. }
  56. .node-properties {
  57. display: flex;
  58. flex-direction: column;
  59. }
  60. .active-toggle {
  61. position: absolute;
  62. top: 10px;
  63. left: 10px;
  64. }
  65. .dummy {
  66. min-height: 200px;
  67. }
  68. .delete-button {
  69. position: absolute;
  70. top: 5px;
  71. right: 5px;
  72. width: 25px;
  73. height: 25px;
  74. font-size: 24px;
  75. }
  76. </style>