Improve usability for various classes

Open
#36 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
typescript
Domain
frontend

Research direction

Start by locating the RelativePosition class and reviewing its constructor and callers to understand the existing defaults and usage patterns. Survey other classes with similarly long argument lists before deciding the scope; done means a consistent, agreed usability approach is applied without changing existing behavior.

Written by the indexing model from the issue text.

Description

enhancement priority:3

I came across a minor annoyance when working with the RelativePosition class. It has a fairly long list of arguments, and while they are all defaulted there's no way to declare just e.g. the last variable without also defining all of them so, if you want to specify a minHeight (the final parameter in the list) you have to do something like this:

new RelativePosition("100%", "100%", "0px", "0px", "0px", "0px", "0px")

An alternative design pattern is to use an object for the inputs. The object can be defined with defaults, and would then allow calling the function like this:

new RelativePosition({minHeight: "0px"})

And all other variables become defaulted.

I imagine this pattern may be useful in many places across the codebase.

Dominant language
TypeScript
Stars
5
Forks
4
Avg merge
3d 59m
Merged PRs (30d)
3

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.

More from DiamondLightSource/cs-web-lib

All issues in DiamondLightSource/cs-web-lib

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.