You can find examples here : Buttons in Phaser 3 - these buttons are simply interactive objects.
I think the event you listen to, 'gameobjectdown', is not valid.
From the linked page :
Great, we know our “button” is firing off input events that we can listen for and respond to. The other events that we care about are:
pointerout - this is the opposite of pointerover . It fires when the cursor leaves the area of the game object.
pointerdown - this fires at the start of a click or a touch on the game object, literally when the mouse button is pushed down or when a finger touches down.
pointerup - this is the opposite of pointerdown . It fires when the mouse button is released or a finger is lifted up from the game object.
Thanks @rich. I ended up using a graphics object and applying its texture to another object, which works fine. But shapes definitely look simpler. So much to learn.