You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
1.3KB

  1. <template>
  2. <v-edit-dialog
  3. :return-value.sync="wert"
  4. large
  5. persistent
  6. :save-text="savebutton"
  7. cancel-text="Abbrechen"
  8. @open="open"
  9. @save="save"
  10. @close="close"
  11. >
  12. <div>{{ text }}</div>
  13. <template #input>
  14. <v-select
  15. v-model="wert"
  16. :label="label"
  17. :items="myitems"
  18. autofocus
  19. clearable
  20. />
  21. </template>
  22. </v-edit-dialog>
  23. </template>
  24. <script>
  25. export default {
  26. name: 'EditDialogSelect',
  27. props: {
  28. value: {
  29. type: String,
  30. required: false,
  31. default: undefined
  32. },
  33. label: {
  34. type: String,
  35. required: false,
  36. default: ''
  37. },
  38. savebutton: {
  39. type: String,
  40. required: false,
  41. default: 'Übernehmen'
  42. },
  43. items: {
  44. type: undefined,
  45. required: true
  46. }
  47. },
  48. data: () => ({
  49. wert: null
  50. }),
  51. computed: {
  52. text () {
  53. return this.myitems?.find(e => e.value === this.value)?.text
  54. },
  55. myitems () {
  56. if (Array.isArray(this.items)) return this.items
  57. return []
  58. }
  59. },
  60. methods: {
  61. open () {
  62. this.wert = this.value
  63. },
  64. close () {
  65. this.wert = null
  66. },
  67. save () {
  68. this.$emit('input', this.wert)
  69. this.wert = null
  70. }
  71. }
  72. }
  73. </script>
  74. <style scoped>
  75. </style>