linebender / linebender/xilem

Implement `VerticalList` widget

Open
#607 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

help wanted masonry
Dominant language
Rust
Stars
5.5k
Forks
240
Avg merge
4d 21h
Merged PRs (30d)
4

Description

Currently, people who want to create a new container widget look at the Flex widget for inspiration. That implementation is fairly complex, and not a great introduction for newcomers.

We should implement a container widget with a little code as possible. This widget would display its children vertically with a fixed amount of free space between them. It would have no customization parameters aside from that spacing constant. Its implementation would serve as a guide for people implementing custom widgets.

There should be non-doc comments in other widget files pointing newcomers to the VerticalList implementation.

To make sure the implementation doesn't bit-rot, we should:

  • Include unit tests and screenshot tests.
  • Use VerticalList in at least one example (probably to_do_list).
  • Have a vertical list element is Xilem as well.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the existing Flex widget and nearby widget implementations to understand the minimal container structure. Then inspect existing unit tests, screenshot tests, and the to_do_list example for patterns to follow. Done means VerticalList renders children vertically with fixed spacing, has Xilem support, is used in an example, includes both test types, and has newcomer pointers in other widget files.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop-dev, frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.