All notable changes to this project will be documented in this file.
The format is based on Conventional Commits, and this project adheres to Semantic Versioning.
- feat: initial
ui-awesome/html-fieldpackage structure. - feat: add configuration for the widget to
FormModelInterface::class. - refactor: update namespace imports in test files.
- chore: migrate to the stable UI Awesome architecture and modern PHP
8.3tooling. - feat: add immutable semantic
ControlFactoryintegrated with application-scopedConfig. - feat: connect
Fieldto semantic control creation and scoped recipes for every field slot. - feat: bind select values through
Select::value()and reuse typed choice controls fromui-awesome/html. - fix: preserve class-level defaults when
ControlFactorycreatesBaseTagcontrols. - fix: keep field selections separate from checkbox and radio option values.
- feat: add
Messageenum centralizing exception message templates. - chore: require the
ui-awesome/html-core ^0.7andui-awesome/html ^0.5development lines. - test: normalize the test suite with full-HTML assertions, failure messages, and external data providers.
- test: assert exception messages in the remaining
InvalidControlandTypeErrorexpectation tests. - chore: remove the empty
tests/Control/directory. - refactor: replace
method_exists()capability checks inAbstractFieldwithui-awesome/html-contractsinterfaces. - chore: require the
ui-awesome/html-contracts ^0.2development line. - test: replace the
InputWidgetstub with realui-awesome/htmlcontrols across the suite. - chore: rename the
testcomposer script totestsand migrate the Infection configuration toinfection.json5for ecosystem consistency. - feat!: apply field configurations through the core Config applier in strict mode; unknown methods now throw
ConfigException. - feat!: apply field configurations to the form control only; entries naming field-level methods must move to the field or a theme recipe.
- feat: reject field config entries indexed by non-string or empty keys and entries passing named arguments with
InvalidFieldConfig. - refactor: remove
applyDefinitionsToWidget()and the lastmethod_exists()capability check fromAbstractField. - docs: add
UPGRADE.mdand document the supported field config shapes and strict-mode failures. - fix: apply the field configuration once per render against the resolved control, removing fluent-order sensitivity where a replacement-control entry threw against the default control.
- refactor: guard the form model binding with an
instanceofcheck instead of@varnarrowing, keeping the intrinsic binding type-safe under style fixers. - feat!: apply field configuration after model binding so explicit entries override derived
value,id,name,checked, andplaceholderstate. - fix: derive the label
forattribute from the control's finalid, keeping it linked when a field configuration overrides the identifier. - feat: resolve control-specific input-container and label layout slots for semantic controls.
- feat: allow re-enabling a theme-suppressed label with
notLabel(false).