Skip to main content

getWidgetMenu loses default icons

  • May 17, 2021
  • 4 replies
  • 91 views

Hello,

 

I am trying to add a custom icon to the menu for a given widget, this is the code for doing so:

function jiraCard() {

  miro.board.ui.openModal('modal.html',{ width: 400, height: 600 }).then(() => {

    miro.showNotification("modal closed");

  });

}

miro.onReady(() => {

  miro.initialize({

    extensionPoints:{

      getWidgetMenuItems: (widgets) => {

        return{

          tooltip: 'Estimate',

          svgIcon: '<circle cx="12" cy="12" r="9" fill="none" fill-rule="evenodd" stroke="currentColor"       stroke-width="2"/>',

          onClick: async (widgets) => {

            jiraCard()

          }

        }

     }

   }

 })

})

The problem is that this code makes all the default widgets disappear, so that the only button the menu is the custom widget that I am defining. Is there anyway to prevent this problem?

4 replies

Anthony Roux
Mironeer
Forum|alt.badge.img+1
  • Mironeer
  • 215 replies
  • May 18, 2021

Hi @Manav Bhatia,

 

Thanks for reaching out!

You are almost there! As getWidgetMenuItems returns a Promise you need to add the await keyword before calling the jiraCard() function:

miro.onReady(() => {
miro.initialize({
extensionPoints: {
getWidgetMenuItems: (widgets) => {
return {
tooltip: 'Estimate',
svgIcon: '<circle cx="12" cy="12" r="9" fill="none" fill-rule="evenodd" stroke="currentColor" stroke-width="2"/>',
onClick: async (widgets) => {
await jiraCard()
}
}
}
}
})
})

 

That should solve your issue,

Anthony


  • Author
  • New Here
  • 1 reply
  • May 18, 2021

Hi @Anthony Roux,

 

Thanks for your response. Unfortunately, even when I use the code that you suggest, I still have the same issue. It seems like the widgets parameter is not being used much. Is there any way I should be using it to get the remaining menu icons?


Anthony Roux
Mironeer
Forum|alt.badge.img+1
  • Mironeer
  • 215 replies
  • May 19, 2021

If your issue persists after adding the await it might be linked to what you have in modal.html. Could you please share what you are building in that modal view? I tried on my side to build a simple modal with images and it works fine.

 


Falk Kühnel
Forum|alt.badge.img+2
  • Active Contributor
  • 33 replies
  • May 20, 2021

Can it be, that you have to return an array?

miro.onReady(() => {
miro.initialize({
extensionPoints: {
getWidgetMenuItems: (widgets) => {
return [{ // <--
tooltip: 'Estimate',
svgIcon: '<circle cx="12" cy="12" r="9" fill="none" fill-rule="evenodd" stroke="currentColor" stroke-width="2"/>',
onClick: async (widgets) => {
await jiraCard()
}
}] // <--
}
}
})
})

Oh, and be aware, that getWidgetMenuItems is deprecated and will eventually disappear.