📣 Dash Labs 0.3.0: Template System API Updates

Thanks for working on introducing simpler ways of building nicely looking apps @jmmease ! I think this would be a really great addition to dash and make it more appealing for novices to quickly get up and running.

One things I found rather confusing is adding a multi selection dropdown to an app that uses a bootstrap template, such as DbcSideBar. I initially tried tpl.new_dropdown(..., multi=True), but it threw an error saying that tpl.new_dropdown has no multi parameter. I tried opts=(dict(multi=True)), but this throws and error saying that dbc.Select does not have a multi parameter. This is rather confusing as I would expect tpl.new_dropdown to use dcc.Dropdown, and this is also what is mentioned in the documentation.

Fortunately, I came across this previous forum post that explains that the template functions return different components depending on which template is used. I eventually wrote the dropdown from scratch, not understanding how I could use a bootstrap based template with a multi select dropdown in any other way. This initially gave me problems with the id parameter until I realized I needed to use {'uid': '...'} for the id rather than just a string as when not using templates.

My understanding of the templates was that they were primarily introduced to make it quicker to build and switch the appearance of apps. To me, it is unexpected that changing from one template to another would change the underlying components used and require me to rewrite code to keep the same functionality. I think it is important that a simple app that starts out using a template can be easily extended by adding more advanced functionality rather than having to rewrite much of the existing code. Would it be possible to change templates (or introduce an option) to use the dcc components for the widgets such as dropdowns, sliders, etc even with bootstrap based apps? Or am I doing something wrong here and this is in fact already possible?