Goal is more user friendly when there are “a lot of” values with the ability to search. This is not meant to deal with performances issues (like dealing with 10k entries). However, if one day we want to support very large lists, it will be easier to build on to of this change.
The select box is always rendered the same, that is to say, the search “field” is always there, even when there are only a few values. This seems less disturbing for end users to always have it rather than having to explain why there is a threshold, what value, etc.
All fields of type “Select Box” (SB) or “Multi Select Box” (MSB) are converted to “SelectX” regardless of binding type or size of the content.
The replacement is done on
-
artifact view
-
modal v1 (lightwindow wrapped of artifact view)
-
angularjs modal (Planning, TTM, etc)
The replacement is not done on:
-
cardwall modal
-
agile dashboard modal
Decorators (color bullet on the left hand side of the values) are displayed when possible (ie. if browser supports it). Old color palette is also rendered when possible.
Open List fields are excluded from the discussion. No changes here.
Technical constraints
General warning: Be careful with field dependencies.
This story introduces ListPicker, a new component inspired by select2 but tailored and simplified for usage inside Tuleap with all constraints. That is to say it must work in the following contexts: VueJS, Typescript, AngularJs, VanillaJS, Prototype & JQuery. Plus it must support both FlamingParrot and BurningParrot themes as well as IE11.
This lib should be done, as much as possible without external dependencies. The lib might be done in Typescript.
Split strategy:
-
SB & MSB, static binding, without dependencies
-
Init the new component + finalize IE11 support
-
Include it in TLP documentation
-
Use it in artifact view (+ modal v1)
-
Use it in angularjs modal
-
Managed dependencies between arbitrary number of SB & MSB, static binding
-
SB & MSB, static binding, with decorators
-
SB & MSB, user binding, with dependencies
-
SB & MSB, user binding, with decorator (avatars)
-
SB & MSB, user group binding, with dependencies