Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve work with themes in Field and PureField #279

Merged
merged 5 commits into from
Nov 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/static.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ jobs:
os: >-
['ubuntu-latest']
php: >-
['8.0', '8.1']
['8.1', '8.2']
229 changes: 160 additions & 69 deletions src/Field.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,14 @@

class Field
{
final public static function button(?string $content = null, array $config = []): Button
/**
* @var string|null
*/
protected const DEFAULT_THEME = null;

final public static function button(?string $content = null, array $config = [], ?string $theme = null): Button
{
$field = Button::widget($config);
$field = Button::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME);

if ($content !== null) {
$field = $field->content($content);
Expand All @@ -46,107 +51,156 @@ final public static function button(?string $content = null, array $config = [])
return $field;
}

final public static function buttonGroup(array $config = []): ButtonGroup
final public static function buttonGroup(array $config = [], ?string $theme = null): ButtonGroup
{
return ButtonGroup::widget(config: $config);
return ButtonGroup::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME);
}

final public static function checkbox(
FormModelInterface $formModel,
string $attribute,
array $config = []
array $config = [],
?string $theme = null,
): Checkbox {
return Checkbox::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
return Checkbox::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function checkboxList(
FormModelInterface $formModel,
string $attribute,
array $config = []
array $config = [],
?string $theme = null,
): CheckboxList {
return CheckboxList::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
return CheckboxList::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function date(FormModelInterface $formModel, string $attribute, array $config = []): Date
{
return Date::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
final public static function date(
FormModelInterface $formModel,
string $attribute,
array $config = [],
?string $theme = null,
): Date {
return Date::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function dateTime(
FormModelInterface $formModel,
string $attribute,
array $config = []
array $config = [],
?string $theme = null,
): DateTime {
return DateTime::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
return DateTime::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function dateTimeLocal(
FormModelInterface $formModel,
string $attribute,
array $config = []
array $config = [],
?string $theme = null,
): DateTimeLocal {
return DateTimeLocal::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
return DateTimeLocal::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function email(FormModelInterface $formModel, string $attribute, array $config = []): Email
{
return Email::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
final public static function email(
FormModelInterface $formModel,
string $attribute,
array $config = [],
?string $theme = null,
): Email {
return Email::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function errorSummary(FormModelInterface $formModel, array $config = []): ErrorSummary
{
return ErrorSummary::widget(config: $config)->validationResult($formModel->getValidationResult());
final public static function errorSummary(
FormModelInterface $formModel,
array $config = [],
?string $theme = null,
): ErrorSummary {
return ErrorSummary::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->validationResult($formModel->getValidationResult());
}

final public static function fieldset(array $config = []): Fieldset
final public static function fieldset(array $config = [], ?string $theme = null): Fieldset
{
return Fieldset::widget(config: $config);
return Fieldset::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME);
}

final public static function file(FormModelInterface $formModel, string $attribute, array $config = []): File
{
return File::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
final public static function file(
FormModelInterface $formModel,
string $attribute,
array $config = [],
?string $theme = null,
): File {
return File::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function hidden(FormModelInterface $formModel, string $attribute, array $config = []): Hidden
{
return Hidden::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
final public static function hidden(
FormModelInterface $formModel,
string $attribute,
array $config = [],
?string $theme = null,
): Hidden {
return Hidden::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function image(array $config = []): Image
final public static function image(array $config = [], ?string $theme = null): Image
{
return Image::widget(config: $config);
return Image::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME);
}

final public static function number(FormModelInterface $formModel, string $attribute, array $config = []): Number
{
return Number::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
final public static function number(
FormModelInterface $formModel,
string $attribute,
array $config = [],
?string $theme = null,
): Number {
return Number::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function password(
FormModelInterface $formModel,
string $attribute,
array $config = []
array $config = [],
?string $theme = null,
): Password {
return Password::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
return Password::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function radioList(
FormModelInterface $formModel,
string $attribute,
array $config = []
array $config = [],
?string $theme = null,
): RadioList {
return RadioList::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
return RadioList::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function range(FormModelInterface $formModel, string $attribute, array $config = []): Range
{
return Range::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
final public static function range(
FormModelInterface $formModel,
string $attribute,
array $config = [],
?string $theme = null,
): Range {
return Range::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function resetButton(?string $content = null, array $config = []): ResetButton
{
$field = ResetButton::widget(config: $config);
final public static function resetButton(
?string $content = null,
array $config = [],
?string $theme = null,
): ResetButton {
$field = ResetButton::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME);

if ($content !== null) {
$field = $field->content($content);
Expand All @@ -155,14 +209,22 @@ final public static function resetButton(?string $content = null, array $config
return $field;
}

final public static function select(FormModelInterface $formModel, string $attribute, array $config = []): Select
{
return Select::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
final public static function select(
FormModelInterface $formModel,
string $attribute,
array $config = [],
?string $theme = null,
): Select {
return Select::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function submitButton(?string $content = null, array $config = []): SubmitButton
{
$field = SubmitButton::widget(config: $config);
final public static function submitButton(
?string $content = null,
array $config = [],
?string $theme = null,
): SubmitButton {
$field = SubmitButton::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME);

if ($content !== null) {
$field = $field->content($content);
Expand All @@ -174,41 +236,70 @@ final public static function submitButton(?string $content = null, array $config
final public static function telephone(
FormModelInterface $formModel,
string $attribute,
array $config = []
array $config = [],
?string $theme = null,
): Telephone {
return Telephone::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
return Telephone::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function text(FormModelInterface $formModel, string $attribute, array $config = []): Text
{
return Text::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
final public static function text(
FormModelInterface $formModel,
string $attribute,
array $config = [],
?string $theme = null,
): Text {
return Text::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function textarea(
FormModelInterface $formModel,
string $attribute,
array $config = []
array $config = [],
?string $theme = null,
): Textarea {
return Textarea::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
return Textarea::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function url(FormModelInterface $formModel, string $attribute, array $config = []): Url
{
return Url::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
final public static function url(
FormModelInterface $formModel,
string $attribute,
array $config = [],
?string $theme = null,
): Url {
return Url::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function label(FormModelInterface $formModel, string $attribute, array $config = []): Label
{
return Label::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
final public static function label(
FormModelInterface $formModel,
string $attribute,
array $config = [],
?string $theme = null,
): Label {
return Label::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function hint(FormModelInterface $formModel, string $attribute, array $config = []): Hint
{
return Hint::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
final public static function hint(
FormModelInterface $formModel,
string $attribute,
array $config = [],
?string $theme = null,
): Hint {
return Hint::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}

final public static function error(FormModelInterface $formModel, string $attribute, array $config = []): Error
{
return Error::widget(config: $config)->inputData(new FormModelInputData($formModel, $attribute));
final public static function error(
FormModelInterface $formModel,
string $attribute,
array $config = [],
?string $theme = null,
): Error {
return Error::widget(config: $config, theme: $theme ?? static::DEFAULT_THEME)
->inputData(new FormModelInputData($formModel, $attribute));
}
}
Loading