Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[doc] Add shape to improve form property section layout #4085

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

lfasani
Copy link
Contributor

@lfasani lfasani commented Oct 10, 2024

Pull request template

General purpose

What is the main goal of this pull request?

  • Bug fixes
  • New features
  • Documentation
  • Cleanup
  • Tests
  • Build / releng

Project management

  • Has the pull request been added to the relevant project and milestone? (Only if you know that your work is part of a specific iteration such as the current one)
  • Have the priority: and pr: labels been added to the pull request? (In case of doubt, start with the labels priority: low and pr: to review later)
  • Have the relevant issues been added to the pull request?
  • Have the relevant labels been added to the issues? (area:, difficulty:, type:)
  • Have the relevant issues been added to the same project and milestone as the pull request?
  • Has the CHANGELOG.adoc been updated to reference the relevant issues?
  • Have the relevant API breaks been described in the CHANGELOG.adoc? (Including changes in the GraphQL API)
  • In case of a change with a visual impact, are there any screenshots in the CHANGELOG.adoc? For example in doc/screenshots/2022.5.0-my-new-feature.png

Architectural decision records (ADR)

  • Does the title of the commit contributing the ADR start with [doc]?
  • Are the ADRs mentioned in the relevant section of the CHANGELOG.adoc?

Dependencies

  • Are the new / upgraded dependencies mentioned in the relevant section of the CHANGELOG.adoc?
  • Are the new dependencies justified in the CHANGELOG.adoc?

Frontend

This section is not relevant if your contribution does not come with changes to the frontend.

General purpose

  • Is the code properly tested? (Plain old JavaScript tests for business code and tests based on React Testing Library for the components)

Typing

We need to improve the typing of our code, as such, we require every contribution to come with proper TypeScript typing for both changes contributing new files and those modifying existing files.
Please ensure that the following statements are true for each file created or modified (this may require you to improve code outside of your contribution).

  • Variables have a proper type
  • Functions’ arguments have a proper type
  • Functions’ return type are specified
  • Hooks are properly typed:
    • useMutation<DATA_TYPE, VARIABLE_TYPE>(…)
    • useQuery<DATA_TYPE, VARIABLE_TYPE>(…)
    • useSubscription<DATA_TYPE, VARIABLE_TYPE>(…)
    • useMachine<CONTEXT_TYPE, EVENTS_TYPE>(…)
    • useState<STATE_TYPE>(…)
  • All components have a proper typing for their props
  • No useless optional chaining with ?. (if the GraphQL API specifies that a field cannot be null, do not treat it has potentially null for example)
  • Nullable values have a proper type (for example let diagram: Diagram | null = null;)

Backend

This section is not relevant if your contribution does not come with changes to the backend.

General purpose

  • Are all the event handlers tested?
  • Are the event processor tested?
  • Is the business code (services) tested?
  • Are diagram layout changes tested?

Architecture

  • Are data structure classes properly separated from behavioral classes?
  • Are all the relevant fields final?
  • Is any data structure mutable? If so, please write a comment indicating why
  • Are behavioral classes either stateless or side effect free?

Review

How to test this PR?

Please describe here the various use cases to test this pull request

  • Has the Kiwi TCMS test suite been updated with tests for this contribution?

Comment on lines 17 to 18
If `row` and `row-reverse` the "label" div will take `1fr` and the edition div `2fr`.
That will allow to align the "label" div of all the property sections.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we uses flexbox, we won't use the fr unit which comes from grid. It's either flexbox or grid.

If `row` and `row-reverse` the "label" div will take `1fr` and the edition div `2fr`.
That will allow to align the "label" div of all the property sections.

The form editor should display the proprty sectiuon accordingly to the chosen `flexDirection`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

section


== Problem

A property section in a form is made of a label, a help icon and a edition area.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not necessarily an edition area, for exemple LabelWidgetPropertySection


== Solution

A new attribute `flexDirection` is added on form widget styles. The value is among `[row, rowReverse, column, columnReverse]`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One line per sentence

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the existing exemple CheckboxPropertySection, we didn't use the same naming
labelPlacement: 'end' | 'start' | 'top' | 'bottom';


A new attribute `flexDirection` is added on form widget styles. The value is among `[row, rowReverse, column, columnReverse]`.

The label and the help icon are in the same "label" div. The `flexDirection` attribute aims to layout the "label" div and the edition div.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one line per sentence

A new attribute `flexDirection` is added on form widget styles. The value is among `[row, rowReverse, column, columnReverse]`.

The label and the help icon are in the same "label" div. The `flexDirection` attribute aims to layout the "label" div and the edition div.
If `row` and `row-reverse` the "label" div will take `1fr` and the edition div `2fr`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Look for CheckboxPropertySection and usage of FormControlLabel

@lfasani
Copy link
Contributor Author

lfasani commented Oct 11, 2024

Eventually, grid is not suited because it does not provide the equivalent of row-reverse and column-reverse of Flexbox.
So, instead I will use FlexBox using

  • labelFlex: the property flex apply to the label item of the property section
  • labelValue: the property flex apply to the value item of the property section
    Note that flex property is a short-hand for flex-grow , flex-shrink and flex-basis

sbegaudeau
sbegaudeau previously approved these changes Oct 11, 2024
@sbegaudeau sbegaudeau dismissed their stale review October 11, 2024 18:36

The shape may need to be updated to consider Flexbox instead

@sbegaudeau
Copy link
Member

sbegaudeau commented Oct 11, 2024

Eventually, grid is not suited because it does not provide the equivalent of row-reverse and column-reverse of Flexbox. So, instead I will use FlexBox using

  • labelFlex: the property flex apply to the label item of the property section
  • labelValue: the property flex apply to the value item of the property section
    Note that flex property is a short-hand for flex-grow , flex-shrink and flex-basis

If you are considering css options for the label, you can assign the label to a specific grid row/column with grid-row and grid-column. If you think you have what you need with flexbox, I just want to see flexbox used from the view DSL to the frontend. Don't try to convert flexbox expressions in the view DSL to grid expressions on the frontend.

And if you want to align all the labels of the widgets on one side and then all the widgets, I don't see how you could even do something like that without CSS sub grid. I've removed my positive review and I'll wait for you to complete this shape once you have completely thought this through

@lfasani lfasani force-pushed the lfa/doc/propertySectionLayout branch from 7ae3b29 to 7f79190 Compare October 14, 2024 08:11
@lfasani
Copy link
Contributor Author

lfasani commented Oct 14, 2024

Eventually, I opted for flexbox layout.
it is well suited for row-reverse and column-reverse and the usage of Flexbox is homogeneous with Flexboxcontainer

I did not opt for subGrid because I think it is more complicated for a user that will be the specifier who is not an expert of CSS layout. Moreove, the scope of this ticket does not cover the full property section. If using subgrid, I think it would be defined at a layer global to property sections.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants