The styling of open/closed folders in the sidebar is performed with ng-class instead of ng-show.

When the folder is open, an "open-folder" CSS class is added; otherwise a "closed-folder" class is added. While angularjs is deciding which class to apply, the folder contents are hidden (display: none).

The reason is that this makes animations simpler. Using ng-show or ng-hide made animations more complex, because in firefox the sudden change from display: none to display: block sometimes made the folder contents appear suddenly, instead of a smooth animation. Chrome did not exhibit this behavior.

I've decided to use separate classes to indicate if a folder is open or closed, and to animate the transitions between them.

Also the small move upwards of the folder arrow when it's opened (to compensate the fact that the icon has bigger width than height) is also animated with a transition instead of sudden. It's just 1px so it's probably not noticeable.