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

Stack/Flex Convergence #16791

Closed
10 tasks done
andrefcdias opened this issue Feb 3, 2021 · 13 comments · Fixed by #17034 or #18236
Closed
10 tasks done

Stack/Flex Convergence #16791

andrefcdias opened this issue Feb 3, 2021 · 13 comments · Fixed by #17034 or #18236

Comments

@andrefcdias
Copy link
Contributor

andrefcdias commented Feb 3, 2021

Preparation:

Conclusion

@andrefcdias
Copy link
Contributor Author

February Project cycle

Goals:

  • Open UI research and submission of proposal
  • Spec creation and approval
  • Flex implementation
  • Unit tests

Stretch goals:

  • Storybook stories
  • Conformance and VR tests

@JustSlone
Copy link
Collaborator

Update:

  • Making progress on research for Open UI
    • Difficult to reconcile layout components via Open UI research

@paulgildea
Copy link
Member

Here's some links that I just quickly grabbed that are in Flex/Stack layout domain:

My hypothesis is that folks would like the feature set of CSS Flexbox in a React based package - specifically for just 1D horizontal/vertical children layout.

Hope this helps!

@chrisdholt
Copy link
Member

chrisdholt commented Feb 12, 2021

Update:

  • Making progress on research for Open UI

    • Difficult to reconcile layout components via Open UI research

@JustSlone I've added some feedback on the Open UI PR and can understand the difficulty you noted. This may be one that you find is specific and helpful to React.

From a convergence standpoint, I don't see us adding an abstraction like this in the form of a component for the web components. Previously, in our FAST React packages we had a composable react-based layout package built off CSS Grid to explicitly offer what @paulgildea called out above. When we shifted to focus on web components, we had some asks if there would be a web component version, but in the case of custom elements it seems like an unnecessary abstraction of the platform which only adds complexity.

All that said, here's a link to our (now deprecated/archived) package which may be beneficial for your research :): https://github.com/microsoft/fast-react/tree/master/packages/react/fast-layouts-react#fast-layouts-react

I'm happy to walk you through what we did and our reasoning for it if you like.

@andrefcdias
Copy link
Contributor Author

Thanks for the feedback and CR, @chrisdholt, I've gone ahead and answered your points on the research PR.
I'd also love to hear about the reasoning behind it if you have the time!

@andrefcdias
Copy link
Contributor Author

Update:

  • Submitted Open UI PR
  • Got PR review and applied revisions

@JustSlone
Copy link
Collaborator

Update:

  • Gathered github issues
  • inprogress: Comparison between v0 and v8

Goal for Feb:

  • Finish spec

@andrefcdias andrefcdias linked a pull request Mar 1, 2021 that will close this issue
@JustSlone
Copy link
Collaborator

JustSlone commented Mar 1, 2021

Update - 3/1

  • Submitted PR with the finished spec, looking good

Goals for March:

  • Finish implementation @andrefcdias elaborate on goals for March

@andrefcdias
Copy link
Contributor Author

Goals for March:

  • Deliver spec and close Preparation phase
  • Finish Flex implementation with unit tests

Stretch goal:

  • Add storybook stories

@JustSlone
Copy link
Collaborator

Update:

  • Created PR for scaffolding

In progress:

  • Implementation starting tomorrow

@JustSlone
Copy link
Collaborator

Update:

  • PR for scaffolding merged
  • No work otherwise

@paulgildea paulgildea added this to To do in Release react-components via automation Mar 26, 2021
@paulgildea paulgildea moved this from To do to Components in Release react-components Mar 26, 2021
@paulgildea paulgildea moved this from Components to In progress in Release react-components Mar 26, 2021
@paulgildea paulgildea moved this from In progress to Components in Release react-components Mar 26, 2021
@gouttierre gouttierre added this to In progress in CXE Convergence - All Teams Apr 1, 2021
@gouttierre gouttierre moved this from In progress to Preparation in CXE Convergence - All Teams Apr 6, 2021
@gouttierre gouttierre moved this from Implementation to Validation in CXE Convergence - All Teams Apr 9, 2021
@gouttierre gouttierre moved this from Validation to Documentation in CXE Convergence - All Teams Apr 9, 2021
@gouttierre gouttierre moved this from Documentation to Validation in CXE Convergence - All Teams Apr 9, 2021
@gouttierre gouttierre moved this from Validation to Implementation in CXE Convergence - All Teams Apr 9, 2021
@gouttierre gouttierre moved this from Implementation to Validation in CXE Convergence - All Teams Apr 9, 2021
@gouttierre gouttierre moved this from Validation to Implementation in CXE Convergence - All Teams Apr 9, 2021
@gouttierre gouttierre added Phase: 1 Convergence Iterations phase 1 Stage: Alpha HVC: TitleBar HVC TitleBar Component HVC: AppBar HVC AppBar Component HVC: MeControl HVC MeControl Component labels Apr 13, 2021
@Hotell Hotell moved this from Planned to In progress in CXE Prague - @microsoft/cxe-prg Apr 20, 2021
@Hotell Hotell moved this from In progress to Planned in CXE Prague - @microsoft/cxe-prg Apr 20, 2021
@andrefcdias
Copy link
Contributor Author

Linking #17923 as the implementation relies on CSS vars and without guaranteeing their uniqueness Flex cannot be used inside of another Flex and user variables might colide with Flex.

@andrefcdias andrefcdias linked a pull request Apr 26, 2021 that will close this issue
@andrefcdias
Copy link
Contributor Author

Over the past days there were discussions about Flex and the concerns of performance/bundle size vs the benefits we get from a component like it.
The conclusion we came to is:

  • Any implementation we come up with will always be an extra layer with regards to performance and bundle size, compared to just using makeStyles directly.
  • There's little benefit to usability given that the user needs to learn how to use the component API regardless. If they already have CSS knowledge, then no learning is required.
  • Users are limited to the functionality/prop support we end up implementing, forcing them to override in edge cases.

Next steps will be to come up with a migration guide and removing the existing implementation.

@andrefcdias andrefcdias linked a pull request May 18, 2021 that will close this issue
Release react-components automation moved this from Components to Done May 27, 2021
CXE Prague - @microsoft/cxe-prg automation moved this from Planned to Done May 27, 2021
CXE Convergence - All Teams automation moved this from Implementation to Done May 27, 2021
@Hotell Hotell moved this from Done to Archive in CXE Prague - @microsoft/cxe-prg Jun 8, 2021
@microsoft microsoft locked as resolved and limited conversation to collaborators Jul 5, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Component: Stack Effort III: Weeks Fluent UI react-components (v9) HVC: AppBar HVC AppBar Component HVC: MeControl HVC MeControl Component HVC: TitleBar HVC TitleBar Component Phase: 1 Convergence Iterations phase 1 Type: Epic
Development

Successfully merging a pull request may close this issue.

6 participants