22
33namespace Moox \Media \Forms \Components ;
44
5- use Filament \ Forms \ Components \ SpatieMediaLibraryFileUpload ;
5+ use Closure ;
66use Moox \Media \Models \Media ;
77use Moox \Media \Models \MediaUsable ;
8+ use Illuminate \Contracts \Support \Arrayable ;
9+ use Filament \Forms \Components \SpatieMediaLibraryFileUpload ;
810
911class MediaPicker extends SpatieMediaLibraryFileUpload
1012{
1113 protected string $ view = 'media::forms.components.media-picker ' ;
1214
15+ protected array $ uploadConfig = [];
16+
1317 protected function setUp (): void
1418 {
1519 parent ::setUp ();
1620
1721 $ this ->saveRelationshipsUsing (function (self $ component , $ state ) {
1822 $ record = $ component ->getRecord ();
19- if (! $ record ) {
23+ if (!$ record ) {
2024 return ;
2125 }
2226
@@ -33,7 +37,7 @@ protected function setUp(): void
3337 foreach ($ mediaIds as $ mediaId ) {
3438 $ media = Media::find ($ mediaId );
3539
36- if (! $ media ) {
40+ if (!$ media ) {
3741 continue ;
3842 }
3943
@@ -67,5 +71,116 @@ protected function setUp(): void
6771
6872 $ record ->save ();
6973 });
74+
75+ }
76+
77+ public function multiple (Closure |bool $ condition = true ): static
78+ {
79+ $ this ->uploadConfig ['multiple ' ] = $ condition instanceof Closure ? $ condition () : $ condition ;
80+ return parent ::multiple ($ condition );
81+ }
82+
83+ public function acceptedFileTypes (Arrayable |Closure |array $ types ): static
84+ {
85+ $ this ->uploadConfig ['accepted_file_types ' ] = $ types instanceof Closure ? $ types () : $ types ;
86+ return parent ::acceptedFileTypes ($ types );
87+ }
88+
89+ public function maxFiles (Closure |int |null $ count ): static
90+ {
91+ $ this ->uploadConfig ['max_files ' ] = $ count instanceof Closure ? $ count () : $ count ;
92+ return parent ::maxFiles ($ count );
93+ }
94+
95+ public function minFiles (Closure |int |null $ count ): static
96+ {
97+ $ this ->uploadConfig ['min_files ' ] = $ count instanceof Closure ? $ count () : $ count ;
98+ return parent ::minFiles ($ count );
99+ }
100+
101+ public function maxSize (Closure |int |null $ size ): static
102+ {
103+ $ this ->uploadConfig ['max_size ' ] = $ size instanceof Closure ? $ size () : $ size ;
104+ return parent ::maxSize ($ size );
105+ }
106+
107+ public function minSize (Closure |int |null $ size ): static
108+ {
109+ $ this ->uploadConfig ['min_size ' ] = $ size instanceof Closure ? $ size () : $ size ;
110+ return parent ::minSize ($ size );
111+ }
112+
113+ public function imageEditor (Closure |bool $ condition = true ): static
114+ {
115+ $ this ->uploadConfig ['image_editor ' ] = $ condition instanceof Closure ? $ condition () : $ condition ;
116+ return parent ::imageEditor ($ condition );
117+ }
118+
119+ public function imageEditorMode (int $ mode ): static
120+ {
121+ $ this ->uploadConfig ['image_editor_mode ' ] = $ mode ;
122+ return parent ::imageEditorMode ($ mode );
123+ }
124+
125+ public function imageEditorViewportWidth (Closure |int |null $ width ): static
126+ {
127+ $ this ->uploadConfig ['image_editor_viewport_width ' ] = $ width instanceof Closure ? $ width () : $ width ;
128+ return parent ::imageEditorViewportWidth ($ width );
70129 }
130+
131+ public function imageEditorViewportHeight (Closure |int |null $ height ): static
132+ {
133+ $ this ->uploadConfig ['image_editor_viewport_height ' ] = $ height instanceof Closure ? $ height () : $ height ;
134+ return parent ::imageEditorViewportHeight ($ height );
135+ }
136+
137+ public function imageEditorAspectRatios (Closure |array $ ratios ): static
138+ {
139+ $ this ->uploadConfig ['image_editor_aspect_ratios ' ] = $ ratios instanceof Closure ? $ ratios () : $ ratios ;
140+ return parent ::imageEditorAspectRatios ($ ratios );
141+ }
142+
143+ public function placeholder (Closure |string |null $ placeholder ): static
144+ {
145+ $ this ->uploadConfig ['placeholder ' ] = $ placeholder instanceof Closure ? $ placeholder () : $ placeholder ;
146+ return parent ::placeholder ($ placeholder );
147+ }
148+
149+ public function panelLayout (Closure |string |null $ layout ): static
150+ {
151+ $ this ->uploadConfig ['panel_layout ' ] = $ layout instanceof Closure ? $ layout () : $ layout ;
152+ return parent ::panelLayout ($ layout );
153+ }
154+
155+ public function showDownloadButton (Closure |bool |null $ showDownloadButton ): static
156+ {
157+ $ this ->uploadConfig ['show_download_button ' ] = $ showDownloadButton instanceof Closure ? $ showDownloadButton () : $ showDownloadButton ;
158+ return parent ::showDownloadButton ($ showDownloadButton );
159+ }
160+
161+
162+ public function disk (Closure |string |null $ disk ): static
163+ {
164+ $ this ->uploadConfig ['disk ' ] = $ disk instanceof Closure ? $ disk () : $ disk ;
165+ return parent ::disk ($ disk );
166+ }
167+
168+ public function directory (Closure |string |null $ directory ): static
169+ {
170+ $ this ->uploadConfig ['directory ' ] = $ directory instanceof Closure ? $ directory () : $ directory ;
171+ return parent ::directory ($ directory );
172+ }
173+
174+ public function visibility (Closure |string |null $ visibility ): static
175+ {
176+ $ this ->uploadConfig ['visibility ' ] = $ visibility instanceof Closure ? $ visibility () : $ visibility ;
177+ return parent ::visibility ($ visibility );
178+ }
179+
180+
181+ public function getUploadConfig (): array
182+ {
183+ return $ this ->uploadConfig ;
184+ }
185+
71186}
0 commit comments