Improve bulk assignment
This MR improves current implementation of Label dropdown when used for bulk assignment on issuable pages (/:namespace/:project/issues, /:namespace/:project/merge_requests)
Previously this dropdown relied on `<input>` tags to get its active items and also to calculate items with indeterminate state.
Relying on `<input>` tags is not enough when we want to set/get multiple states on a dropdown.
For this case we want to get/set:
- Marked items
- Unmarked items that were initially marked
- Unmarked items that were initially indeterminate
- Items with indeterminate state.
This MR makes the Label dropdown to save its own state as `data` so it will be easy to get and set whatever state we want no matter if the dropdown is filtering which is the issue that I initially wanted to solve as you can see in the following gif.
**Before**
![2016-12-07_11.44.48](/uploads/cb697161b8b39cdee72fdbb95a531100/2016-12-07_11.44.48.gif)
**After**
![2016-12-07_11.32.43](/uploads/338255a302de0dd1367474f33232d2a3/2016-12-07_11.32.43.gif)
As you can see in the first gif the `bug` label is removed from the selected issues but the `enhancement` label should set but the `critical` should be kept. This is fixed on the next gif.
Fixes#24877
See merge request !7765
This fixes the case when the user wants to add a label. The user has to use the dropdown’s filter input to look for a label and click it in order to see the bug.
Step to reproduce
- Select at least two issues, one label should be present in all issues, other label should be present in at least one.
- On the label dropdown: Deselect label that is present in all issues, look for another issue using the filter input and click it.
- Click on `Update issues`
Before: Unmarked label were kept on selected issues.
Now: Unmarked label is removed from selected issues