Internals
⚠️ DRAFT: work in progress
UI Patterns 2 is doing 3 jobs.
Guessing the PropType plugin for every components' props.
Schema compatibility checker:
src/SchemaManager/
├── Canonicalizer.php
├── CompatibilityChecker.php
├── ReferencesResolver.php
├── ScalarCompatibilityTrait.php
└── StreamWrapper.php
For implicit prop type declaration. UI Patterns must work with every SDC component, even the ones not built with UI Patterns. So, if a component is not using a direct reference to a prop type plugin, we can guess the prop type.
Building a form for each component by loading Source plugins
Components
source_id: component
source:
component:
component_id: "ui_suite_bootstrap:accordion"
slots: {}
props: {}
Each slot can have one or many sources. Each prop can have only one source.
Widgets
The stored data is the same as the data send to prop or slots.
source_id: wysiwyg
source:
value:
value: "Lorem ipsum dolor sit amet"
format: basic_html
source_id: select
source:
value: container
source_id: selects
source:
value:
- "12"
- "12"
source_id: checkbox
source:
value: 1
"Normal" data sources
source_id: entity_link
source:
template: devel-load
absolute: 0
Sources of sources
source_id: block
source:
plugin_id: system_branding_block
system_branding_block:
id: system_branding_block
use_site_name: false
use_site_slogan: false
plugin_id: "system_menu_block:account"
"system_menu_block:account":
id: "system_menu_block:account"
label: "User account menu"
label_display: "1"
provider: system
level: 1
depth: 1
expand_all_items: false
Context switchers
Context switchers
source_id: entity_reference
source:
derivable_context: entity_reference:node:article:uid:user:user
entity_reference:node:article:uid:user:user:
value:
sources: []
source_id: entity_field
source:
derivable_context: field:user:user:user_picture
field:user:user:user_picture:
value:
sources: []
Some are derived:
source_id: entity:field_property:user:user_picture:target_id
source:
derivable_context: entity_reference:user:user:user_picture:file:file
entity_reference:user:user:user_picture:file:file:
value:
sources: []
They all inherit