- <?php
- namespace EasyCorp\Bundle\EasyAdminBundle\Dto;
- use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
- use EasyCorp\Bundle\EasyAdminBundle\Config\KeyValueStore;
- use EasyCorp\Bundle\EasyAdminBundle\Config\Option\TextAlign;
- use function Symfony\Component\String\u;
- use Symfony\Component\Uid\Ulid;
- /**
-  * @author Javier Eguiluz <javier.eguiluz@gmail.com>
-  */
- final class FieldDto
- {
-     private $fieldFqcn;
-     private $propertyName;
-     private $value;
-     private $formattedValue;
-     private $formatValueCallable;
-     private $label;
-     private $formType;
-     private $formTypeOptions;
-     private $sortable;
-     private $virtual;
-     private $permission;
-     private $textAlign;
-     private $help;
-     private $cssClass;
-     // how many columns the field takes when rendering
-     // (defined as Bootstrap 5 grid classes; e.g. 'col-md-6 col-xxl-3')
-     private $columns;
-     // same as $columns but used when the user doesn't define columns explicitly
-     private $defaultColumns;
-     private $translationParameters;
-     private $templateName;
-     private $templatePath;
-     /** @var AssetsDto */
-     private $assets;
-     private $customOptions;
-     private $doctrineMetadata;
-     /** @internal */
-     private $uniqueId;
-     private $displayedOn;
-     public function __construct()
-     {
-         $this->uniqueId = new Ulid();
-         $this->textAlign = TextAlign::LEFT;
-         $this->cssClass = '';
-         $this->columns = null;
-         $this->defaultColumns = '';
-         $this->templateName = 'crud/field/text';
-         $this->assets = new AssetsDto();
-         $this->translationParameters = [];
-         $this->formTypeOptions = KeyValueStore::new();
-         $this->customOptions = KeyValueStore::new();
-         $this->doctrineMetadata = KeyValueStore::new();
-         $this->displayedOn = KeyValueStore::new([
-             Crud::PAGE_INDEX => Crud::PAGE_INDEX,
-             Crud::PAGE_DETAIL => Crud::PAGE_DETAIL,
-             Crud::PAGE_EDIT => Crud::PAGE_EDIT,
-             Crud::PAGE_NEW => Crud::PAGE_NEW,
-         ]);
-     }
-     public function __clone()
-     {
-         $this->uniqueId = new Ulid();
-         $this->assets = clone $this->assets;
-         $this->formTypeOptions = clone $this->formTypeOptions;
-         $this->customOptions = clone $this->customOptions;
-         $this->doctrineMetadata = clone $this->doctrineMetadata;
-         $this->displayedOn = clone $this->displayedOn;
-     }
-     public function getUniqueId(): string
-     {
-         return $this->uniqueId;
-     }
-     public function setUniqueId(string $uniqueId): void
-     {
-         $this->uniqueId = $uniqueId;
-     }
-     public function isFormDecorationField(): bool
-     {
-         return null !== u($this->getCssClass())->containsAny(['field-form_panel', 'field-form_tab']);
-     }
-     public function getFieldFqcn(): ?string
-     {
-         return $this->fieldFqcn;
-     }
-     /**
-      * @internal Don't use this method yourself. EasyAdmin uses it internally
-      *           to set the field FQCN. It's OK to use getFieldFqcn() to get this value.
-      */
-     public function setFieldFqcn(string $fieldFqcn): void
-     {
-         $this->fieldFqcn = $fieldFqcn;
-     }
-     public function getProperty(): string
-     {
-         return $this->propertyName;
-     }
-     public function setProperty(string $propertyName): void
-     {
-         $this->propertyName = $propertyName;
-     }
-     /**
-      * Returns the original unmodified value stored in the entity field.
-      */
-     public function getValue()
-     {
-         return $this->value;
-     }
-     public function setValue($value): void
-     {
-         $this->value = $value;
-     }
-     /**
-      * Returns the value to be displayed for the field (it could be the
-      * same as the value stored in the field or not).
-      */
-     public function getFormattedValue()
-     {
-         return $this->formattedValue;
-     }
-     public function setFormattedValue($formattedValue): void
-     {
-         $this->formattedValue = $formattedValue;
-     }
-     public function getFormatValueCallable(): ?callable
-     {
-         return $this->formatValueCallable;
-     }
-     public function setFormatValueCallable(?callable $callable): void
-     {
-         $this->formatValueCallable = $callable;
-     }
-     /**
-      * @return string|false|null
-      */
-     public function getLabel()
-     {
-         return $this->label;
-     }
-     /**
-      * @param string|false|null $label
-      */
-     public function setLabel($label): void
-     {
-         $this->label = $label;
-     }
-     public function getFormType(): ?string
-     {
-         return $this->formType;
-     }
-     public function setFormType(string $formTypeFqcn): void
-     {
-         $this->formType = $formTypeFqcn;
-     }
-     public function getFormTypeOptions(): array
-     {
-         return $this->formTypeOptions->all();
-     }
-     public function getFormTypeOption(string $optionName)
-     {
-         return $this->formTypeOptions->get($optionName);
-     }
-     public function setFormTypeOptions(array $formTypeOptions): void
-     {
-         foreach ($formTypeOptions as $optionName => $optionValue) {
-             $this->setFormTypeOption($optionName, $optionValue);
-         }
-     }
-     /**
-      * @param string $optionName You can use "dot" notation to set nested options (e.g. 'attr.class')
-      */
-     public function setFormTypeOption(string $optionName, $optionValue): void
-     {
-         $this->formTypeOptions->set($optionName, $optionValue);
-     }
-     /**
-      * @param string $optionName You can use "dot" notation to set nested options (e.g. 'attr.class')
-      */
-     public function setFormTypeOptionIfNotSet(string $optionName, $optionValue): void
-     {
-         $this->formTypeOptions->setIfNotSet($optionName, $optionValue);
-     }
-     public function isSortable(): ?bool
-     {
-         return $this->sortable;
-     }
-     public function setSortable(bool $isSortable): void
-     {
-         $this->sortable = $isSortable;
-     }
-     public function isVirtual(): ?bool
-     {
-         return $this->virtual;
-     }
-     public function setVirtual(bool $isVirtual): void
-     {
-         $this->virtual = $isVirtual;
-     }
-     public function getTextAlign(): string
-     {
-         return $this->textAlign;
-     }
-     public function setTextAlign(string $textAlign): void
-     {
-         $this->textAlign = $textAlign;
-     }
-     public function getPermission(): ?string
-     {
-         return $this->permission;
-     }
-     public function setPermission(string $permission): void
-     {
-         $this->permission = $permission;
-     }
-     public function getHelp(): ?string
-     {
-         return $this->help;
-     }
-     public function setHelp(string $help): void
-     {
-         $this->help = $help;
-     }
-     public function getCssClass(): string
-     {
-         return $this->cssClass;
-     }
-     public function setCssClass(string $cssClass): void
-     {
-         $this->cssClass = trim($cssClass);
-     }
-     public function getColumns(): ?string
-     {
-         return $this->columns;
-     }
-     public function setColumns(?string $columnCssClasses): void
-     {
-         $this->columns = $columnCssClasses;
-     }
-     public function getDefaultColumns(): string
-     {
-         return $this->defaultColumns;
-     }
-     public function setDefaultColumns(string $columnCssClasses): void
-     {
-         $this->defaultColumns = $columnCssClasses;
-     }
-     public function getTranslationParameters(): array
-     {
-         return $this->translationParameters;
-     }
-     public function setTranslationParameters(array $translationParameters): void
-     {
-         $this->translationParameters = $translationParameters;
-     }
-     public function getTemplateName(): ?string
-     {
-         return $this->templateName;
-     }
-     public function setTemplateName(?string $templateName): void
-     {
-         $this->templateName = $templateName;
-     }
-     public function getTemplatePath(): ?string
-     {
-         return $this->templatePath;
-     }
-     public function setTemplatePath(?string $templatePath): void
-     {
-         $this->templatePath = $templatePath;
-     }
-     public function getAssets(): AssetsDto
-     {
-         return $this->assets;
-     }
-     public function setAssets(AssetsDto $assets): void
-     {
-         $this->assets = $assets;
-     }
-     public function addWebpackEncoreAsset(AssetDto $assetDto): void
-     {
-         $this->assets->addWebpackEncoreAsset($assetDto);
-     }
-     public function addCssAsset(AssetDto $assetDto): void
-     {
-         $this->assets->addCssAsset($assetDto);
-     }
-     public function addJsAsset(AssetDto $assetDto): void
-     {
-         $this->assets->addJsAsset($assetDto);
-     }
-     public function addHtmlContentToHead(string $htmlContent): void
-     {
-         $this->assets->addHtmlContentToHead($htmlContent);
-     }
-     public function addHtmlContentToBody(string $htmlContent): void
-     {
-         $this->assets->addHtmlContentToBody($htmlContent);
-     }
-     public function getCustomOptions(): KeyValueStore
-     {
-         return $this->customOptions;
-     }
-     public function getCustomOption(string $optionName)
-     {
-         return $this->customOptions->get($optionName);
-     }
-     public function setCustomOptions(array $customOptions): void
-     {
-         $this->customOptions = KeyValueStore::new($customOptions);
-     }
-     public function setCustomOption(string $optionName, $optionValue): void
-     {
-         $this->customOptions->set($optionName, $optionValue);
-     }
-     public function getDoctrineMetadata(): KeyValueStore
-     {
-         return $this->doctrineMetadata;
-     }
-     public function setDoctrineMetadata(array $metadata): void
-     {
-         $this->doctrineMetadata = KeyValueStore::new($metadata);
-     }
-     public function getDisplayedOn(): KeyValueStore
-     {
-         return $this->displayedOn;
-     }
-     public function setDisplayedOn(KeyValueStore $displayedOn): void
-     {
-         $this->displayedOn = $displayedOn;
-     }
-     public function isDisplayedOn(string $pageName): bool
-     {
-         return $this->displayedOn->has($pageName);
-     }
- }
-