vendor/easycorp/easyadmin-bundle/src/Config/Dashboard.php line 79

  1. <?php
  2. namespace EasyCorp\Bundle\EasyAdminBundle\Config;
  3. use EasyCorp\Bundle\EasyAdminBundle\Config\Option\TextDirection;
  4. use EasyCorp\Bundle\EasyAdminBundle\Dto\DashboardDto;
  5. /**
  6.  * @author Javier Eguiluz <javier.eguiluz@gmail.com>
  7.  */
  8. final class Dashboard
  9. {
  10.     private DashboardDto $dto;
  11.     private function __construct(DashboardDto $dashboardDto)
  12.     {
  13.         $this->dto $dashboardDto;
  14.     }
  15.     public static function new(): self
  16.     {
  17.         $dto = new DashboardDto();
  18.         return new self($dto);
  19.     }
  20.     public function setFaviconPath(string $path): self
  21.     {
  22.         $this->dto->setFaviconPath($path);
  23.         return $this;
  24.     }
  25.     public function setTitle(string $title): self
  26.     {
  27.         $this->dto->setTitle($title);
  28.         return $this;
  29.     }
  30.     public function setTranslationDomain(string $translationDomain): self
  31.     {
  32.         $this->dto->setTranslationDomain($translationDomain);
  33.         return $this;
  34.     }
  35.     public function setTextDirection(string $direction): self
  36.     {
  37.         if (!\in_array($direction, [TextDirection::LTRTextDirection::RTL], true)) {
  38.             throw new \InvalidArgumentException(sprintf('The "%s" value given to the textDirection option is not valid. It can only be "%s" or "%s"'$directionTextDirection::LTRTextDirection::RTL));
  39.         }
  40.         $this->dto->setTextDirection($direction);
  41.         return $this;
  42.     }
  43.     public function renderContentMaximized(bool $maximized true): self
  44.     {
  45.         $this->dto->setContentWidth($maximized Crud::LAYOUT_CONTENT_FULL Crud::LAYOUT_CONTENT_DEFAULT);
  46.         return $this;
  47.     }
  48.     public function renderSidebarMinimized(bool $minimized true): self
  49.     {
  50.         $this->dto->setSidebarWidth($minimized Crud::LAYOUT_SIDEBAR_COMPACT Crud::LAYOUT_SIDEBAR_DEFAULT);
  51.         return $this;
  52.     }
  53.     public function disableUrlSignatures(bool $disableSignatures true): self
  54.     {
  55.         trigger_deprecation(
  56.             'easycorp/easyadmin-bundle',
  57.             '4.1.0',
  58.             'EasyAdmin URLs no longer include signatures because they don\'t provide any additional security. You can stop calling the "%s" method to disable them. This method will be removed in future EasyAdmin versions.',
  59.             __METHOD__,
  60.         );
  61.         $this->dto->setSignedUrls(!$disableSignatures);
  62.         return $this;
  63.     }
  64.     public function generateRelativeUrls(bool $relativeUrls true): self
  65.     {
  66.         $this->dto->setAbsoluteUrls(!$relativeUrls);
  67.         return $this;
  68.     }
  69.     public function disableDarkMode(bool $disableDarkMode true): self
  70.     {
  71.         $this->dto->setEnableDarkMode(!$disableDarkMode);
  72.         return $this;
  73.     }
  74.     public function setLocales(array $locales): self
  75.     {
  76.         $localeDtos = [];
  77.         foreach ($locales as $key => $value) {
  78.             $locale = match (true) {
  79.                 $value instanceof Locale => $value,
  80.                 \is_string($key) => Locale::new($key, (string) $value),
  81.                 default => Locale::new((string) $value),
  82.             };
  83.             $localeDtos[] = $locale->getAsDto();
  84.         }
  85.         $this->dto->setLocales($localeDtos);
  86.         return $this;
  87.     }
  88.     public function getAsDto(): DashboardDto
  89.     {
  90.         return $this->dto;
  91.     }
  92. }