feat: #3620058 Re-export the Canvas component configs for the Canvas Icon Picker

Issue: https://www.drupal.org/project/educare/issues/3620058

Re-exports five Canvas component configs against the converted theme, and rewrites the icon prop to the picker shape on every stored version, not only the active one:

component new active version
icon 9bc1e1a79ad3aca5
icon-toggle c46ff94ac9f4ece2
badge 60738022e738eef8
button 423695058e28f2f8
card-icon 62345acf6ed14ba8

Rewriting the non-active stored versions is what does the work. The shipped content still pins button@a3bdd446d7020573 (19 references across 11 files) and the header region pins icon-toggle@f94416574e5a0133. Keeping those hashes as stored versions, with the icon prop rewritten inside them, brings the picker to that content with no content re-pinning and no update hook, which matters because a theme cannot implement hook_update_N.

Each config gains canvas_icon_picker in its dependencies; options stays, because the other props on these components are still list_string.

This recipe does not install the module and does not set the packs: Varbase Admin Base does, in https://www.drupal.org/project/varbase_admin_base/issues/3620064. Land with the theme change, https://www.drupal.org/project/vartheme_bs5_educare/issues/3620057.

What does not work, so nobody repeats it: deleting these configs so Canvas derives them fresh. The shipped default content pins those exact component_version hashes and the install then fails at content import with 'icon' is not a supported key.

Verified on two fresh Varbase 11 installs applying this recipe during install, one from a codebase built from scratch: install green; every stored version on canvas_icon_picker/string; allowed_icon_ids matching the manifests (51/50/43/51/43); the Home page Button, still pinned to the old version, gets the picker rather than the 52-option select; picking people stores the bare id and renders bi bi-people anonymously; clearing stores an empty string with no validation error; every Canvas page 200 anonymously; picker endpoints 403; zero log entries at Error or worse.

The files are re-encoded with Drupal's own Yaml::encode, so the diff is the real change: 1,316 added, 28 removed, and the removals are only the old active_version lines and a few relocated default_value entries.

AI-Generated: Yes

Checkpoints:

  • File an issue
  • Addition/Change/Update/Fix
  • Testing to ensure no regression
  • Automated unit testing coverage
  • Automated functional testing coverage
  • UX/UI designer responsibilities
  • Readability
  • Accessibility
  • Performance
  • Security
  • Developer Documentation
  • User Guide Documentation
  • Reviewed by human
  • Code review by maintainers
  • Full testing and approval
  • Credit contributors
  • Review with the product owner
  • Release notes snippet
  • Release
Edited by Rajab Natshah

Merge request reports

Loading
Loading