addJs('assets/vendor/adrema-form/dist/main.js'); $this->addJs('http://localhost:5174/src/main.js', ['type' => 'module']); } protected function loadSettings(): void { $this->settings = [ 'primary_color' => Settings::get('primary_color'), ...$this->resolvePageUrls(), ]; } protected function loadSingleEvent(): void { $eventSlug = $this->property('eventSlug'); if (!$eventSlug) { return; } $this->event = app(FetchSingleEvent::class)->run($eventSlug); $this->page->title = $this->event['name']; $this->currentUrl = url()->current(); } public function defineProperties() { return [ 'indexPage' => [ 'title' => __('properties.index_page_title'), 'type' => 'dropdown', 'default' => null, ], 'singlePage' => [ 'title' => __('properties.single_page_title'), 'type' => 'dropdown', 'default' => null, ], 'registerPage' => [ 'title' => __('properties.register_page_title'), 'type' => 'dropdown', 'default' => null, ], 'eventSlug' => [ 'title' => __('properties.event_slug_title'), 'type' => 'text', 'default' => null, ], ]; } public function getIndexPageOptions(): array { return $this->pageOptions(); } public function getSinglePageOptions(): array { return $this->pageOptions(); } public function getRegisterPageOptions(): array { return $this->pageOptions(); } private function pageOptions(): array { return Page::get() ->mapWithKeys(fn ($page) => [$page->fileName => $page->title]) ->toArray(); } private function getPageFromProperty(string $property): Page { throw_if(!$this->property('indexPage') || !$this->property('singlePage') || !$this->property('registerPage'), ComponentException::class, 'not_all_pages_set'); $page = Page::find($this->property($property)); throw_if($page === null, ComponentException::class, 'page_not_found'); return $page; } /** * @return array */ private function resolvePageUrls(): array { $indexPage = $this->getPageFromProperty('indexPage'); $singlePage = $this->getPageFromProperty('singlePage'); $registerPage = $this->getPageFromProperty('registerPage'); throw_if(!str($singlePage->url)->contains(':slug'), ComponentException::class, 'slug_not_found'); throw_if(!str($registerPage->url)->contains(':slug'), ComponentException::class, 'slug_not_found'); return [ 'indexUrl' => $indexPage->url, 'singleUrl' => $singlePage->url, 'registerUrl' => $registerPage->url, ]; } }