XB week 8: design locomotive gathering steam
Last week was very quiet, July 1–7’s #experience-builder
Drupal Slack meeting was even more tumbleweed-y…
… but while that was very quiet, the Acquia UX team’s design locomotive was getting started in the background, with two designs ready-to-be-implemented posted by Lauri “lauriii” Timmanee — he’s working with that team to get his Experience Builder (XB) product vision visualized:
- #3458503: Improve the page hierarchy display — with Gaurav “Gauravvvv” enthusiastically jumping on it!
- #3458863: Add initial implementation of top bar
On top of that, a set of placeholder issues was posted — choices to be made that need user research before an informed design can be crafted:
- #3459088: Define built-in components and categorization for components
- #3459229: Allow saving component compositions as sections
- #3459234: Allow directly creating/editing entity title and meta fields
- #3459098: Define strategy for keyboard shortcuts
- #3459236: Redirect users directly to Experience Builder when creating new content or editing content
More to come on the design front! :)
Speaking of design, Hemant “guptahemant” Gupta and Kristen “kristenpol” Pol are volunteering on behalf of their respective employers to implement the initial design system prior to DrupalCon Barcelona.
Front end
- Jesse “jessebaker” Baker landed an important refactor (#3456946: Refactor Preview.tsx React component to prevent duplicate backend calls), with reviews from Ben “bnjmnm” Mullins and Lee “larowlan” Rowlands
- Jesse also landed a small foundational piece of the UI: #3458723: Implement context menu for hovered component, which also is a crucial stepping stone for future accessibility work
- Harumi “hooroomoo” Jang got #3456084: Add initial implementation of primary menu landed and filed the follow-up #3458617: Close menu on drag in primary menu — which subsequently spawned an interesting discussion about the design between Jesse and Lauri
- Jesse got #3459235: Implement front-end (React) routing library going, with enthusiastic participation from Bálint “balintbrews” Kléri and Ronald “roaguicr” Aguilar
- Having observed environment setup issues for some, Ben opened #3458369: DDEV support for Cypress tests after witnessing how painful it was for Jesse to get Cypress talking to Drupal inside DDEV
Front-end starting points for contributing to XB
Jesse reported two bugs that would be excellent starting points for contributing to XB:
- #3459333: Undo/redo - user can undo the loading of the initial state (regression)
- #3458535: Middle click + drag doesn’t work correctly if middle click is inside preview iframe
And Lauri added a feature request that builds on top of the aforementioned foundational UI piece Jesse & Ben landed (#3459249: Allow opening the contextual menu by right clicking a component) — that too is a great entry point.
Back end
And, finally, on the back-end side:
- Ted “tedbow” Bowman pushed forward #3456008: Add support for matching SDC prop shape: {type: string, enum: …} but got stuck. He opened #3458580 as a blocker … and upon my return that Friday, I discovered that actually … that was working correctly, but the implementation was very confusing — not surprising, considering this code dated back to a PoC branch from the chaotic origins. So, instead, the logic was made a lot clearer, with better comments. If you’re interested in the deepest parts of how Drupal handles structured data, you’ll probably find it an intriguing commit. 1
- I’d missed it the previous week, but Lee actually did a huge push forward on #3454519: [META] Support component types other than SDC, by turning a high-level concept into a concrete proposal in the form a massive draft MR, with lots of interesting concepts, all rooted in his real-world experience with Layout Builder. An interesting discussion between Alex “effulgentsia” Bronstein and Lee ensued :)
Thanks to Lauri for reviewing this!
Week 8 was July 1–7, 2024.
-
Sadly, it’s an inevitability that this is still complex: Drupal 8 introduced Typed Data API into the pre-existing Field API, and then later the Symfony validation constraint API was integrated into both. Getting a full picture of what constraints apply to an entire entity field data tree is not something Drupal core provides, so that picture must be manually crafted, which is what that code does. ↩︎