If CSS transitions are too limited (they often are :( ), Gage Peterson is right about having to put that "state" in your model, there really isn't any alternative in Elm (apart from delegating to some JS code to do it instead but that lowers the maintenance fun)
Just wanted to correct one thing: Component local state is not considered a bad practice in React, at all. Lifting state such as "whether a select dropdown is opened", "the component has focus", "which grid row is currently highlighted" or in general any state that should reset should a component be unmounted/remounted to the global state atom is a bad move. That leaves the responsibility of determining by experience whether a piece of data is state or props, and people make so many mistakes doing that.
Thankfully, The Elm language make the single atom approach much less painful than in JS thanks to pattern matching and terse Record updates.