22
33namespace Aerni \LivewireForms \Livewire ;
44
5+ use Livewire \Component ;
6+ use Livewire \Attributes \Computed ;
7+ use Illuminate \Contracts \View \View ;
8+ use Aerni \LivewireForms \Fields \Assets ;
9+ use Aerni \LivewireForms \Fields \Captcha ;
510use Aerni \LivewireForms \Facades \ViewManager ;
6- use Aerni \LivewireForms \Livewire \Concerns \SubmitsForm ;
7- use Aerni \LivewireForms \Livewire \Concerns \WithFields ;
811use Aerni \LivewireForms \Livewire \Concerns \WithForm ;
12+ use Aerni \LivewireForms \Livewire \Concerns \WithType ;
13+ use Aerni \LivewireForms \Livewire \Concerns \WithView ;
14+ use Aerni \LivewireForms \Livewire \Concerns \WithSteps ;
15+ use Aerni \LivewireForms \Livewire \Concerns \WithTheme ;
16+ use Aerni \LivewireForms \Livewire \Concerns \WithFields ;
917use Aerni \LivewireForms \Livewire \Concerns \WithHandle ;
18+ use Aerni \LivewireForms \Livewire \Concerns \SubmitsForm ;
1019use Aerni \LivewireForms \Livewire \Concerns \WithMessages ;
1120use Aerni \LivewireForms \Livewire \Concerns \WithRedirect ;
1221use Aerni \LivewireForms \Livewire \Concerns \WithSections ;
13- use Aerni \LivewireForms \Livewire \Concerns \WithSteps ;
14- use Aerni \LivewireForms \Livewire \Concerns \WithTheme ;
15- use Aerni \LivewireForms \Livewire \Concerns \WithType ;
16- use Aerni \LivewireForms \Livewire \Concerns \WithView ;
17- use Illuminate \Contracts \View \View ;
18- use Livewire \Component ;
1922
2023class BaseForm extends Component
2124{
@@ -37,4 +40,25 @@ public function render(): View
3740 'step ' => $ this ->currentStep (),
3841 ]);
3942 }
43+
44+ #[Computed]
45+ public function assets (): string
46+ {
47+ $ styles = collect ();
48+ $ scripts = collect (['/vendor/livewire-forms/js/form.js ' ]);
49+
50+ if ($ this ->fields ->contains (fn ($ field ) => $ field instanceof Assets)) {
51+ $ styles ->push ('/vendor/livewire-forms/css/filepond.css ' );
52+ $ scripts ->push ('/vendor/livewire-forms/js/filepond.js ' );
53+ }
54+
55+ if ($ this ->fields ->contains (fn ($ field ) => $ field instanceof Captcha)) {
56+ $ scripts ->push ('/vendor/livewire-forms/js/grecaptcha.js ' );
57+ }
58+
59+ $ styles = $ styles ->map (fn ($ style ) => "<link href=' {$ style }' rel='stylesheet'/> " );
60+ $ scripts = $ scripts ->map (fn ($ script ) => "<script src=' {$ script }' type='module'></script> " );
61+
62+ return $ styles ->merge ($ scripts )->implode ("\n" );
63+ }
4064}
0 commit comments