angular-ui/ng-grid — pull request #1676 by PaulL1 (2014-10-02 10:33:45+00:00)
Title: Draft for review: grid menu

This is a draft for review and comment. I have some specific point issues that I'd appreciate assistance on, and then also interested in thoughts and suggestions on general look and feel.

As discussed in #1671, this is a grid menu that floats over the top right of the grid, and allows:

1. Custom items to be added by users
2. Items to be added by features (through an api so that they can register their menu items)
3. Hiding and showing of columns, other than those that are marked as `disableHiding`

I have a few issues:

1. It's ugly. I knew that would happen :-). Key elements of ugly are

* the way it looks,
* the css I used to position it (I made it fixed, as that's the only way I could make it show properly),
* the lack of animations (these appear to live in columnMenu, not gridMenu, I didn't want to duplicate all that code, I think we need to refactor)
* the size and shape of the menu button, it probably needs to resize to fit the header. But when filter columns are there that'll look kinda funny
* I haven't done the code to "squish" the column menus that it covers up

2. I didn't get the icon to work. I imported from fontello, having selected my menu icon. It exists in the json and in the css, but the css is pointing to the same icon content as "OK". I am not sure how to fix that, and would appreciate assistance

3. Some tips on the best way to go about squishing the column headers underneath, given render containers and all that other magic

4. It maintains a state of `shown` so that when someone clicks on the button again it hides. But I have no way to get at the action when someone clicks on a menu item - so it still thinks the menu is shown. I may be better to just not support toggling on the button, as the lesser of the two evils.

5. For some reason my menu items are shaded. No idea what's going on there.

So, some way still to go, but I'd definitely appreciate some advice/thoughts on ways to clean up the visual aspects of it.