My door to the garage is big and heavy, and is the only door used. Any door catch cannot stand the repetitive impact due to carelessness of the kids. Also the door must be easily kept open to unload the grocery. My wife came up with the idea of magnetic catch. I went on to make one but it was rather poor until now.
You need powerful magnets such as those greater than 1 inch long, about 1/2 inch wide and 1/8 thick, available in many hardware stores, rather cheap. You need a few to stack up for power and more importantly, to adjust to suit the space between the door and the wall.
You need two different metal plates, such as those used for building decks from hardware stores. The right ones need a great force to be removed from powerful magnets above.
The larger or bigger steel plate is to be mounted to the wall, the smaller thinner one on the door. Just put the magnets on the steel plates and they can hold the door open. When you close the door, the magnets will stay with the thicker plate on the wall. That's the law of physics.
That's it. There's no need to mount anything except for screwing the plates into the wall and door. Both the door and the wall are protected by armored plates. The catch area is as big as the plates.
The fancy stuff.
You can decrease the magnet and plate size or increase the force and catch distance by mounting the wall plate at an angle. The angle is to ensure that when the door is fully open, the magnets are the door are in parallel, when the magnetic force are greatest. This can be simply done by putting something under the wall plate on one side, or a soft wooden wedge for clamping and spacing filling.
You can also put some pad materials to soften the impact and reduce noise.
Of course you can mount and fix the magnets, and use angled plates.
No pictures because the first excellent version is ugly.