What is currently regarded as best practice in UI design for displaying actions that are not available in the current context.
For example, A page displays customers who can have many associated contracts. I do not wish to allow the user to delete a customer if there are active contracts. From a usability and UI perspective what is considered the best for the user experience.
- Always show the delete option but warn the user when he selects it that the option is unavailable because there are active contracts.
- Show the delete option but grey it out.
- Do not show the delete option at all
Always showing the option has the benefit of consistency and the relevant actions are consistently in the same place etc, but conversely what is the point of showing them something they can't do.
Greying the option out still has consistency but does not allow them to select the action that they can not perform.
Not showing the option at all lacks consistency but will perhaps not be so confusing.
Before yesterday I would not have even asked the question and would have gone straight for option 2 (Greying out) however having watched a user try to click on the greyed out image many times and eventually asking me why they couldn't click on the button I am no longer sure what the best option is.
What do people with usability and UI testing experience feel is the best option?