enso/lib/rust
Paweł Grabarz 4042b5b237
Grid-view based dropdown component (#3985)
Implements https://www.pivotaltracker.com/n/projects/2539304/stories/184023380

Dropdown component. Planned to be used in nodes as a single and multiple selection widget, both for static and dynamically loaded values. Initial support is focused on static data, with limited support for dynamic sources. Notably, loading states are not supported yet. Full support for that is planned to be added later with widget lazy-loading.

- Supports single and multiple selections.
- Dedicated API for providing a static list of all entries.
- Range-based query API for dynamically loading data as it is scrolled (only basic support - will need more work for proper async lazy-loading).
- Internal entry cache and query batching to avoid querying data one by one (the batching for now is very basic, will have to be improved for proper lazy-loading).
- Automatic dropdown width adjustment based on the entry label lengths, up to a set max allowed value.
- Open and close animation.
- Keyboard support for focusing and selecting entries.

![image](https://user-images.githubusercontent.com/919491/207866293-de2e3fef-c93b-48cc-8253-11c186d223fd.png)

# Important Notes
Implementing the dropdown on top of grid-view have uncovered some assumptions around grid-view layers. It was assumed to always be a part of the component browser. Removing that assumption required a mechanism for propagating camera update information through layer tree. This is now implemented using a `camera_parent` layer field. Ideally each layer should simply have at most a single parent, and camera inheritance would follow that. That refactor turned out to be quite involved, so right now the simpler temporary solution is introduced in order to not delay this PR further.
2022-12-22 18:19:40 +00:00
..
automata Build script merge (#3743) 2022-10-10 23:38:48 +02:00
callback Bump rustc nightly-2022-11-22 (#3911) 2022-11-30 03:16:25 +01:00
code-builder Build script merge (#3743) 2022-10-10 23:38:48 +02:00
config-reader Fox warnings about colliding filenames. (#3908) 2022-11-24 18:54:45 +01:00
data-structures Wip/wdanilo/text shape system single scene 183406745 (#3776) 2022-11-03 08:35:06 +01:00
debug-api Bump wasm-bindgen (#3971) 2022-12-13 22:20:25 +01:00
ensogl Grid-view based dropdown component (#3985) 2022-12-22 18:19:40 +00:00
frp Grid-view based dropdown component (#3985) 2022-12-22 18:19:40 +00:00
fuzzly Build script merge (#3743) 2022-10-10 23:38:48 +02:00
generics Rust compile time optimizations (#3873) 2022-11-15 14:09:39 +01:00
json-rpc removing optional dependencies from prelude (#3922) 2022-11-28 12:42:31 +01:00
launcher-shims Add docs explaining the purpose and mechanisms of launcher-shims project (#3834) 2022-11-04 07:04:57 +00:00
logger Bump wasm-bindgen (#3971) 2022-12-13 22:20:25 +01:00
macro-utils Fox warnings about colliding filenames. (#3908) 2022-11-24 18:54:45 +01:00
metamodel Bump rustc nightly-2022-11-22 (#3911) 2022-11-30 03:16:25 +01:00
parser Implement SKIP/FREEZE in parser/TreeToIr (#3942) 2022-12-20 17:32:59 +00:00
prelude Auto Layouts (#3937) 2022-12-19 02:16:54 +01:00
profiler Bump wasm-bindgen (#3971) 2022-12-13 22:20:25 +01:00
reflect Bump rustc nightly-2022-11-22 (#3911) 2022-11-30 03:16:25 +01:00
shapely Auto Layouts (#3937) 2022-12-19 02:16:54 +01:00
shortcuts Bump wasm-bindgen (#3971) 2022-12-13 22:20:25 +01:00
text Editing via esc does not correctly update node view (#3799) 2022-10-25 15:37:49 +00:00
types Grid-view based dropdown component (#3985) 2022-12-22 18:19:40 +00:00
web Bump wasm-bindgen (#3971) 2022-12-13 22:20:25 +01:00