When constructing a FormField, an IDE would previously tell you the `$title` needs to be string (or null). Let's make it more clear that a ViewableData instance (such as `HTMLValue::create($title)`) is also accepted. This should help people more quickly find a solution to put html in labels.
In this case the confirmed password field is not reflected. It’s
unclear how often this situation would arise outside of test scenarios,
but may come up if $form->loadDataFrom() is called more than once.
Fixes#2496 (it’s a minor issue but I think this is why Dan flagged it
as a regression). Originally introduced as part of Dan’s initial fix
at 2a6f1f1949.
FormField marks the Title constructor argument as optional, and DatalessField does not override the __construct method. HeaderField on the other hand goes against the grain of FormFields as a whole and requires the Title field, seemingly for no good reason (at least, not that the commit message for a68ba38478 indicates) - this seems like an accidental ommision. This commit looks to reinstate the optionality of this constructor argument for consistency's sake.
Plus it broke a module I was investigating.
I noticed this squiggly red line while perusing the code.
The PHP doc says
`implode ( string $glue , array $pieces ) : string`
> implode() can, for historical reasons, accept its parameters in either order. For consistency with explode(), however, it may be less confusing to use the documented order of arguments.
* FIX Add accessibility labels and titles to previous, next, and add new buttons in GridFields
* API Replace FormActions with anchors to enable panel-based loading in GridField navigation buttons
* FIX Previous and Next links are now correctly disabled when end of lists are reached
* Add English translations
* MINOR: Change “Choose Page” to “Search or choose Page”
Based on discussions with James Ford, it wasn’t clear that you could
search.
* Use new translation key
* API Update FieldList::replaceField API to match removeByName
This specifically adds the parameter that `removeByName` has but `replaceField` does not. This parameter is set to `true` by default rather than inheriting the same default as `removeByField`. This is because the existing funtionality of `replaceField` was the same as if this parameter was set to `true`. This should be updated in SS5 to match the `removeByField` API.
* Add dataFieldOnly to CompositeField