Hello!
Great question! This behavior is by design.
When a q2-input is in an error state and active, it will display an error message for the user. When it is in an error state, but not the active element, the error message disappears, and the red border and error icon remain to indicate an error.
For q2-calendar and q2-select, due to them both opening a popover when active, we did not include the error message because of the UI collisions it could cause. Instead, they only show the red border and error icon when in an error state.
If you want to implement error messages for those elements, a possible workaround would be to put a q2-message component on the page with the error messages from those components in it. You'll have to write some code that will manually extract the error messages from those components and put them into the q2-message component.
I hope this help!
If you need more assistance, please don't hesitate to fill out a support ticket.

