From dfc79dc1093c0e1357a30e45e99ba8c217843d1e Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 29 Jun 2022 11:27:53 +0000
Subject: [PATCH] add buttons to StudipActionMenu Vue component, fixes #1219

Closes #1219

Merge request studip/studip!727
---
 resources/vue/components/StudipActionMenu.vue | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/resources/vue/components/StudipActionMenu.vue b/resources/vue/components/StudipActionMenu.vue
index 86963924723..99fced89fa9 100644
--- a/resources/vue/components/StudipActionMenu.vue
+++ b/resources/vue/components/StudipActionMenu.vue
@@ -17,6 +17,16 @@
 
                         {{ item.label }}
                     </a>
+                    <label v-else-if="item.icon" class="undecorated" v-bind="linkAttributes(item)" v-on="linkEvents(item)">
+                        <studip-icon :shape="item.icon.shape" :role="item.icon.role" :name="item.name" :title="item.label" v-bind="item.attributes ?? {}"></studip-icon>
+                        {{ item.label }}
+                    </label>
+                    <template v-else>
+                        <span class="action-menu-no-icon"></span>
+                        <button :name="item.name" v-bind="Object.assign(item.attributes ?? {}, linkAttributes(item))" v-on="linkEvents(item)">
+                            {{ item.label }}
+                        </button>
+                    </template>
                 </li>
             </ul>
         </div>
@@ -79,7 +89,7 @@ export default {
     computed: {
         navigationItems () {
             return this.items.map((item) => {
-                let classes = item.classes || '';
+                let classes = item.classes ?? '';
                 if (item.disabled) {
                     classes += " action-menu-item-disabled";
                 }
@@ -93,6 +103,7 @@ export default {
                         role: item.disabled ? 'inactive' : 'clickable'
                     } : false,
                     type: item.type || 'link',
+                    name: item.name ?? null,
                     classes: classes.trim(),
                     attributes: item.attributes || {},
                     disabled: item.disabled,
-- 
GitLab