Andrew 1 mese fa
parent
commit
b72147db70

+ 18
- 14
app/Filament/Resources/AlbumResource.php Vedi File

@@ -63,12 +63,16 @@ class AlbumResource extends Resource
63 63
                         ->directory('album/img')
64 64
                         ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])->required()->imageEditor(),
65 65
                     FileUpload::make('news_img_pc')->label('列表圖(desktop)')
66
+                        ->image()
67
+                        ->optimize('webp')
66 68
                         ->directory('album/img')
67 69
                         ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])->required()->imageEditor(),
68 70
                     FileUpload::make('news_img_mobile')->label('列表圖(mobile)')
71
+                        ->image()
72
+                        ->optimize('webp')
69 73
                         ->directory('album/img')
70 74
                         ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])->required()->imageEditor(),
71
-                    Translate::make()->schema(fn(string $locale) => [
75
+                    Translate::make()->schema(fn (string $locale) => [
72 76
                         TextInput::make('title')
73 77
                             ->label('標題')
74 78
                             ->columnSpan(1),
@@ -86,16 +90,16 @@ class AlbumResource extends Resource
86 90
                         ])->columnSpanFull()->default(1)->live(),
87 91
                         Group::make()->schema([
88 92
                             TextInput::make('link_video')->label('網址')->nullable(),
89
-                        ])->visible(fn(Get $get): bool => $get('upload_type') == 1)->columnSpanFull(),
93
+                        ])->visible(fn (Get $get): bool => $get('upload_type') == 1)->columnSpanFull(),
90 94
                         Group::make()->schema([
91 95
                             FileUpload::make('link_upload')->label('')->directory('album/video')
92 96
                                 ->acceptedFileTypes(['video/mp4', 'video/mpeg', 'video/quicktime', 'video/x-msvideo', 'video/x-ms-wmv'])
93 97
                                 ->helperText('建議影片寬高限制為:1920*1080px,出血寬度720px,大小限制為:100M以下')
94 98
                                 ->maxSize(102400)->nullable(),
95
-                        ])->visible(fn(Get $get): bool => $get('upload_type') == 2)->columnSpanFull(),
99
+                        ])->visible(fn (Get $get): bool => $get('upload_type') == 2)->columnSpanFull(),
96 100
                     ])->columnSpanFull(),
97 101
                     Toggle::make('on_top')->inline()->label('置頂輪播')->columnSpanFull(),
98
-//                    Toggle::make('homepage_top')->inline()->label('在首頁輪播')->columnSpanFull(),
102
+                    //                    Toggle::make('homepage_top')->inline()->label('在首頁輪播')->columnSpanFull(),
99 103
                 ])->columns(3),
100 104
             ]);
101 105
     }
@@ -110,7 +114,7 @@ class AlbumResource extends Resource
110 114
                 TextColumn::make('post_date')->label('發布日期')->date()->alignCenter(),
111 115
                 ImageColumn::make('news_img_pc')->label('列表圖(desktop)')->alignCenter(),
112 116
                 TextColumn::make('list_audit_state')->label('狀態')->badge()
113
-                    ->color(fn(string $state): string => match ($state) {
117
+                    ->color(fn (string $state): string => match ($state) {
114 118
                         '暫存' => 'warning',
115 119
                         '已發佈' => 'success',
116 120
                     }),
@@ -121,23 +125,23 @@ class AlbumResource extends Resource
121 125
                 SelectFilter::make('post_date')->label('年份')
122 126
                     ->options(Album::select(DB::raw("DATE_FORMAT(post_date, '%Y') as year"))->whereNotNull('post_date')->distinct()->pluck('year', 'year')->toArray())
123 127
                     ->query(
124
-                        fn(array $data, Builder $query): Builder => $query->when(
128
+                        fn (array $data, Builder $query): Builder => $query->when(
125 129
                             $data['value'],
126
-                            fn(Builder $query, $value): Builder => $query->where('post_date', 'like', $data['value'] . '%')
130
+                            fn (Builder $query, $value): Builder => $query->where('post_date', 'like', $data['value'].'%')
127 131
                         )
128 132
                     ),
129 133
                 SelectFilter::make('album_category_id')->label('分類')
130 134
                     ->relationship('albumCategory', 'name')
131
-                    ->getOptionLabelFromRecordUsing(fn($record, $livewire) => $record->getTranslation('name', 'zh_TW')),
135
+                    ->getOptionLabelFromRecordUsing(fn ($record, $livewire) => $record->getTranslation('name', 'zh_TW')),
132 136
                 SelectFilter::make('visible')->label('狀態')
133 137
                     ->options([
134 138
                         0 => '暫存',
135 139
                         1 => '已發佈',
136 140
                     ])
137 141
                     ->query(
138
-                        fn(array $data, Builder $query): Builder => $query->when(
142
+                        fn (array $data, Builder $query): Builder => $query->when(
139 143
                             $data['value'],
140
-                            fn(Builder $query, $value): Builder => $query->where('visible', $data['value'])
144
+                            fn (Builder $query, $value): Builder => $query->where('visible', $data['value'])
141 145
                         )
142 146
                     ),
143 147
             ])
@@ -145,20 +149,20 @@ class AlbumResource extends Resource
145 149
                 Tables\Actions\EditAction::make(),
146 150
                 Tables\Actions\DeleteAction::make(),
147 151
                 \Filament\Tables\Actions\Action::make('audit')
148
-                    ->label(fn($record) => match ($record->visible) {
152
+                    ->label(fn ($record) => match ($record->visible) {
149 153
                         0 => '發佈',
150 154
                         1 => '下架',
151 155
                     })
152
-                    ->color(fn($record) => match ($record->visible) {
156
+                    ->color(fn ($record) => match ($record->visible) {
153 157
                         0 => 'warning',
154 158
                         1 => 'gray',
155 159
                     })
156
-                    ->icon(fn($record) => match ($record->visible) {
160
+                    ->icon(fn ($record) => match ($record->visible) {
157 161
                         0 => 'heroicon-m-chevron-double-up',
158 162
                         1 => 'heroicon-m-chevron-double-down',
159 163
                     })
160 164
                     ->action(function ($record) {
161
-                        $record->visible = !$record->visible;
165
+                        $record->visible = ! $record->visible;
162 166
                         $record->save();
163 167
                     })
164 168
                     ->outlined()

+ 2
- 0
app/Filament/Resources/BadgeResource.php Vedi File

@@ -55,6 +55,8 @@ class BadgeResource extends Resource
55 55
                         ])->columns(2)->columnSpanFull(),
56 56
                         Group::make()->schema([
57 57
                             FileUpload::make('img_url')->label('圖片')->directory('badge')->columnSpan(1)
58
+                                ->image()
59
+                                ->optimize('webp')
58 60
                                 ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])->required()->imageEditor(),
59 61
                         ])->columnSpanFull(),
60 62
                     ])->columns(4)->columnSpanFull(),

+ 22
- 18
app/Filament/Resources/BannerResource.php Vedi File

@@ -14,9 +14,9 @@ use Filament\Forms\Components\TextInput;
14 14
 use Filament\Forms\Form;
15 15
 use Filament\Resources\Resource;
16 16
 use Filament\Tables;
17
+use Filament\Tables\Columns\IconColumn;
17 18
 use Filament\Tables\Columns\ImageColumn;
18 19
 use Filament\Tables\Columns\TextColumn;
19
-use Filament\Tables\Columns\IconColumn;
20 20
 use Filament\Tables\Table;
21 21
 use SolutionForest\FilamentTranslateField\Forms\Component\Translate;
22 22
 
@@ -51,44 +51,48 @@ class BannerResource extends Resource
51 51
                 Section::make('')->schema([
52 52
                     Group::make()->schema([
53 53
                         Radio::make('type')->label('')->default(1)->options([1 => '圖片', 2 => '影片'])->reactive(),
54
-                        Translate::make()->schema(fn(string $locale) => [
54
+                        Translate::make()->schema(fn (string $locale) => [
55 55
                             Textarea::make('title')
56
-                                ->required(fn($get) => $locale == 'zh_TW' && $get('../../type') == 1)
56
+                                ->required(fn ($get) => $locale == 'zh_TW' && $get('../../type') == 1)
57 57
                                 ->label('大字標題'),
58 58
                             Textarea::make('content')
59
-                                ->required(fn($get) => $locale == 'zh_TW' && $get('../../type') == 1)
59
+                                ->required(fn ($get) => $locale == 'zh_TW' && $get('../../type') == 1)
60 60
                                 ->label('小字標題'),
61 61
                         ])
62 62
                             ->locales(['zh_TW', 'en'])
63 63
                             ->actions([
64 64
                                 app(DeepLService::class)->createTranslationAction('Main', ['title', 'content']),
65 65
                             ])->columnSpanFull()
66
-                            ->visible(fn($get) => $get('type') == 1),
66
+                            ->visible(fn ($get) => $get('type') == 1),
67 67
                         Group::make()->schema([
68 68
                             FileUpload::make('img_url')->label('圖片')->directory('banners')->columnSpan(1)
69
+                                ->image()
70
+                                ->optimize('webp')
69 71
                                 ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])
70
-                                ->required(fn($get) => $get('type') == 1)
72
+                                ->required(fn ($get) => $get('type') == 1)
71 73
                                 ->imageEditor()
72
-                                ->visible(fn($get) => $get('type') == 1),
74
+                                ->visible(fn ($get) => $get('type') == 1),
73 75
                             FileUpload::make('mobile_img')->label('手機板圖片')->directory('banners')->columnSpan(1)
76
+                                ->image()
77
+                                ->optimize('webp')
74 78
                                 ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])
75
-                                ->required(fn($get) => $get('type') == 1)
79
+                                ->required(fn ($get) => $get('type') == 1)
76 80
                                 ->imageEditor()
77
-                                ->visible(fn($get) => $get('type') == 1),
78
-                            Translate::make()->schema(fn(string $locale) => [
81
+                                ->visible(fn ($get) => $get('type') == 1),
82
+                            Translate::make()->schema(fn (string $locale) => [
79 83
                                 TextInput::make('img_alt')
80
-                                    ->required(fn($get) => $locale == 'zh_TW' && $get('../../type') == 1)
84
+                                    ->required(fn ($get) => $locale == 'zh_TW' && $get('../../type') == 1)
81 85
                                     ->label('圖片註釋'),
82 86
                             ])
83 87
                                 ->locales(['zh_TW', 'en'])
84 88
                                 ->actions([
85 89
                                     app(DeepLService::class)->createTranslationAction('Main', ['img_alt']),
86 90
                                 ])->columnSpan(1)
87
-                                ->visible(fn($get) => $get('../type') == 1),
91
+                                ->visible(fn ($get) => $get('../type') == 1),
88 92
                         ])->columnSpanFull(),
89 93
                         TextInput::make('video_url')->label('影片網址')->url()->columnSpanFull()
90
-                            ->required(fn($get) => $get('type') == 2)
91
-                            ->visible(fn($get) => $get('type') == 2),
94
+                            ->required(fn ($get) => $get('type') == 2)
95
+                            ->visible(fn ($get) => $get('type') == 2),
92 96
                         Radio::make('visible')->label('顯示/不顯示')->options([1 => '顯示', 0 => '不顯示'])->inline()->default(1)->columnSpan(2),
93 97
                     ])->columns(4)->columnSpanFull(),
94 98
                 ]),
@@ -100,16 +104,16 @@ class BannerResource extends Resource
100 104
         return $table
101 105
             ->columns([
102 106
                 IconColumn::make('type')->label('類別')
103
-                    ->icon(fn(string $state): string => match ($state) {
107
+                    ->icon(fn (string $state): string => match ($state) {
104 108
                         '1' => 'heroicon-o-photo',
105 109
                         '2' => 'heroicon-o-film',
106 110
                     }),
107 111
                 ImageColumn::make('img_url')->label('圖片')
108
-                    ->getStateUsing(fn($record) => $record->type == 1 ? $record->img_url : null),
112
+                    ->getStateUsing(fn ($record) => $record->type == 1 ? $record->img_url : null),
109 113
                 TextColumn::make('title')->label('標題')
110
-                    ->getStateUsing(fn($record) => $record->type == 1 ? $record->title : null),
114
+                    ->getStateUsing(fn ($record) => $record->type == 1 ? $record->title : null),
111 115
                 TextColumn::make('video_url')->label('影片網址')
112
-                    ->formatStateUsing(fn($record) => $record->type == 2 ? $record->video_url : null),
116
+                    ->formatStateUsing(fn ($record) => $record->type == 2 ? $record->video_url : null),
113 117
             ])
114 118
             ->filters([
115 119
                 //

+ 2
- 0
app/Filament/Resources/HistoryResource.php Vedi File

@@ -68,6 +68,8 @@ class HistoryResource extends Resource
68 68
                         ])->columnSpanFull(),
69 69
                     Group::make()->schema([
70 70
                         FileUpload::make('img_url')->label('圖片')->directory('histories')
71
+                            ->image()
72
+                            ->optimize('webp')
71 73
                             ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])->imageEditor()
72 74
                             ->columnSpanFull(),
73 75
                     ])->columnSpanFull(),

+ 28
- 22
app/Filament/Resources/NewsResource.php Vedi File

@@ -72,7 +72,7 @@ class NewsResource extends Resource
72 72
                             ->closeOnDateSelection()
73 73
                             ->required()
74 74
                             ->columnSpan(1),
75
-                        Translate::make()->schema(fn(string $locale) => [
75
+                        Translate::make()->schema(fn (string $locale) => [
76 76
                             TextInput::make('title')->required($locale == 'zh_TW')->label('標題')->columnSpan(1),
77 77
                             TextInput::make('written_by')->required($locale == 'zh_TW')->label('撰文者')->columnSpan(1),
78 78
                             Textarea::make('description')->required($locale == 'zh_TW')->label('簡述')->columnSpan(2),
@@ -84,10 +84,12 @@ class NewsResource extends Resource
84 84
                             ->columnSpan(2)
85 85
                             ->id('Main-content'),
86 86
                         FileUpload::make('news_img')->label('圖片')
87
+                            ->image()
88
+                            ->optimize('webp')
87 89
                             ->directory('news')
88 90
                             ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])->required()->imageEditor()
89 91
                             ->columnSpan(2),
90
-                        Translate::make()->schema(fn(string $locale) => [
92
+                        Translate::make()->schema(fn (string $locale) => [
91 93
                             TextInput::make('news_img_alt')->label('圖片註釋'),
92 94
                         ])
93 95
                             ->locales(['zh_TW', 'en'])
@@ -97,7 +99,7 @@ class NewsResource extends Resource
97 99
                             ->id('Main-alt'),
98 100
                     ])->columns(2),
99 101
                     Tab::make('SEO')->schema([
100
-                        Translate::make()->schema(fn(string $locale) => [
102
+                        Translate::make()->schema(fn (string $locale) => [
101 103
                             TextInput::make('meta_title')->label('SEO 標題'),
102 104
                             TextInput::make('meta_keyword')->label('SEO 關鍵字'),
103 105
                             Textarea::make('meta_description')->label('SEO 簡述'),
@@ -107,6 +109,8 @@ class NewsResource extends Resource
107 109
                                 app(DeepLService::class)->createTranslationAction('Seo', ['meta_title', 'meta_keyword', 'meta_description']),
108 110
                             ])->columnSpanFull(),
109 111
                         FileUpload::make('meta_img')->label('放大預覽圖')
112
+                            ->image()
113
+                            ->optimize('webp')
110 114
                             ->directory('news/seo')
111 115
                             ->columnSpan(1)
112 116
                             ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])->imageEditor()
@@ -115,7 +119,7 @@ class NewsResource extends Resource
115 119
                     Tab::make('內文編輯')->schema([
116 120
                         Repeater::make('paragraphs')->schema([
117 121
                             TextInput::make('item_key')
118
-                                ->default(fn() => Str::random())
122
+                                ->default(fn () => Str::random())
119 123
                                 ->hidden()
120 124
                                 ->afterStateHydrated(function (TextInput $component, $state) {
121 125
                                     if (empty($state)) {
@@ -130,19 +134,21 @@ class NewsResource extends Resource
130 134
                             Group::make()->schema([
131 135
                                 Section::make('')->schema([
132 136
                                     FileUpload::make('img_url')->label('')->directory('news/paragraphs')
137
+                                        ->image()
138
+                                        ->optimize('webp')
133 139
                                         ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])->required()->imageEditor(),
134
-                                    Translate::make()->schema(fn(string $locale) => [
140
+                                    Translate::make()->schema(fn (string $locale) => [
135 141
                                         TextInput::make('img_alt')->label('圖片註釋'),
136 142
                                     ])
137 143
                                         ->locales(['zh_TW', 'en'])
138 144
                                         ->actions([
139 145
                                             app(DeepLService::class)->createTranslationAction('ParagraphImgAlt', ['img_alt']),
140 146
                                         ])->columnSpan(1)
141
-                                        ->id(fn($get) => 'para_img_' . $get('item_key')),
147
+                                        ->id(fn ($get) => 'para_img_'.$get('item_key')),
142 148
                                 ]),
143
-                            ])->visible(fn(Get $get): bool => $get('paragraph_type') == 1),
149
+                            ])->visible(fn (Get $get): bool => $get('paragraph_type') == 1),
144 150
                             Group::make()->schema([
145
-                                Translate::make()->schema(fn(string $locale) => [
151
+                                Translate::make()->schema(fn (string $locale) => [
146 152
                                     RichEditor::make('text_content')
147 153
                                         ->toolbarButtons([
148 154
                                             'blockquote',
@@ -171,8 +177,8 @@ class NewsResource extends Resource
171 177
                                     ->actions([
172 178
                                         app(DeepLService::class)->createTranslationAction('ParagraphText', ['text_content']),
173 179
                                     ])->columnSpan(1)
174
-                                    ->id(fn($get) => 'para_text_' . $get('item_key')),
175
-                            ])->visible(fn(Get $get): bool => $get('paragraph_type') == 2),
180
+                                    ->id(fn ($get) => 'para_text_'.$get('item_key')),
181
+                            ])->visible(fn (Get $get): bool => $get('paragraph_type') == 2),
176 182
                         ])
177 183
                             ->relationship('paragraphs')
178 184
                             ->label('段落')
@@ -196,21 +202,21 @@ class NewsResource extends Resource
196 202
                 TextColumn::make('post_date')->label('發佈時間')->dateTime('Y/m/d')->alignCenter(),
197 203
                 ImageColumn::make('news_img')->label('列表圖')->alignCenter(),
198 204
                 TextColumn::make('list_audit_state')->label('狀態')->badge()
199
-                    ->color(fn(string $state): string => match ($state) {
205
+                    ->color(fn (string $state): string => match ($state) {
200 206
                         '暫存' => 'warning',
201 207
                         '已發佈' => 'success',
202 208
                     }),
203 209
                 IconColumn::make('on_top')->label('置頂')
204
-                    ->color(fn(string $state): string => match ($state) {
210
+                    ->color(fn (string $state): string => match ($state) {
205 211
                         1 => 'success',
206 212
                         default => ''
207 213
                     })
208
-                    ->icon(fn(string $state): string => match ($state) {
214
+                    ->icon(fn (string $state): string => match ($state) {
209 215
                         1 => 'heroicon-o-check-circle',
210 216
                         default => ''
211 217
                     })
212 218
                     ->action(function ($record): void {
213
-                        $record->on_top = !$record->on_top;
219
+                        $record->on_top = ! $record->on_top;
214 220
                         $record->save();
215 221
                     }),
216 222
                 TextColumn::make('created_at')->label('建立時間')->dateTime('Y/m/d H:i:s')->alignCenter(),
@@ -223,9 +229,9 @@ class NewsResource extends Resource
223 229
                 SelectFilter::make('post_date')->label('年份')
224 230
                     ->options(News::select(\DB::raw("DATE_FORMAT(post_date, '%Y') as year"))->whereNotNull('post_date')->distinct()->pluck('year', 'year')->toArray())
225 231
                     ->query(
226
-                        fn(array $data, Builder $query): Builder => $query->when(
232
+                        fn (array $data, Builder $query): Builder => $query->when(
227 233
                             $data['value'],
228
-                            fn(Builder $query, $value): Builder => $query->where('post_date', 'like', $data['value'] . '%')
234
+                            fn (Builder $query, $value): Builder => $query->where('post_date', 'like', $data['value'].'%')
229 235
                         )
230 236
                     ),
231 237
                 SelectFilter::make('visible')->label('狀態')
@@ -234,9 +240,9 @@ class NewsResource extends Resource
234 240
                         1 => '已發佈',
235 241
                     ])
236 242
                     ->query(
237
-                        fn(array $data, Builder $query): Builder => $query->when(
243
+                        fn (array $data, Builder $query): Builder => $query->when(
238 244
                             $data['value'],
239
-                            fn(Builder $query, $value): Builder => $query->where('visible', $data['value'])
245
+                            fn (Builder $query, $value): Builder => $query->where('visible', $data['value'])
240 246
                         )
241 247
                     ),
242 248
             ])
@@ -244,20 +250,20 @@ class NewsResource extends Resource
244 250
                 Tables\Actions\EditAction::make(),
245 251
                 Tables\Actions\DeleteAction::make(),
246 252
                 \Filament\Tables\Actions\Action::make('audit')
247
-                    ->label(fn($record) => match ($record->visible) {
253
+                    ->label(fn ($record) => match ($record->visible) {
248 254
                         0 => '發佈',
249 255
                         1 => '下架',
250 256
                     })
251
-                    ->color(fn($record) => match ($record->visible) {
257
+                    ->color(fn ($record) => match ($record->visible) {
252 258
                         0 => 'warning',
253 259
                         1 => 'gray',
254 260
                     })
255
-                    ->icon(fn($record) => match ($record->visible) {
261
+                    ->icon(fn ($record) => match ($record->visible) {
256 262
                         0 => 'heroicon-m-chevron-double-up',
257 263
                         1 => 'heroicon-m-chevron-double-down',
258 264
                     })
259 265
                     ->action(function ($record): void {
260
-                        $record->visible = !$record->visible;
266
+                        $record->visible = ! $record->visible;
261 267
                         $record->save();
262 268
                     })
263 269
                     ->outlined()

+ 2
- 0
app/Filament/Resources/ProfilePartResource.php Vedi File

@@ -56,6 +56,8 @@ class ProfilePartResource extends Resource
56 56
                         ->id('Main')->columnSpanFull(),
57 57
                     Group::make()->schema([
58 58
                         FileUpload::make('img_url')->label('圖片')
59
+                            ->image()
60
+                            ->optimize('webp')
59 61
                             ->directory('profile-parts')
60 62
                             ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])->required()->imageEditor()
61 63
                             ->columnSpanFull(),

+ 7
- 2
app/Filament/Resources/ProjectResource.php Vedi File

@@ -63,10 +63,15 @@ class ProjectResource extends Resource
63 63
                         ->preload()
64 64
                         ->label('標籤'),
65 65
                     FileUpload::make('thumbnail')->label('縮圖')->directory('project')->image()
66
+                        ->optimize('webp')
66 67
                         ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])->required()->imageEditor(),
67 68
                     FileUpload::make('img_url')->label('圖片')->directory('project')->reorderable()
69
+                        ->image()
70
+                        ->optimize('webp')
68 71
                         ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])->required()->imageEditor()->multiple()->maxFiles(20),
69 72
                     FileUpload::make('mobile_img_url')->label('手機版圖片')->directory('project')->reorderable()
73
+                        ->image()
74
+                        ->optimize('webp')
70 75
                         ->acceptedFileTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/webp'])->required()->imageEditor()->multiple()->maxFiles(20),
71 76
                 ]),
72 77
                 Tabs::make()->schema([
@@ -108,7 +113,7 @@ class ProjectResource extends Resource
108 113
                         ])
109 114
                             ->reorderableWithButtons()
110 115
                             ->defaultItems(0)
111
-                            ->visible(fn($get) => $get('badge_type') == 1),
116
+                            ->visible(fn ($get) => $get('badge_type') == 1),
112 117
                         Repeater::make('badgesAward')->label('取得標章')->schema([
113 118
                             Select::make('badge_id')
114 119
                                 ->options(function () {
@@ -135,7 +140,7 @@ class ProjectResource extends Resource
135 140
                         ])
136 141
                             ->reorderableWithButtons()
137 142
                             ->defaultItems(0)
138
-                            ->visible(fn($get) => $get('badge_type') == 2),
143
+                            ->visible(fn ($get) => $get('badge_type') == 2),
139 144
                     ]),
140 145
                     Tab::make('開發歷程')->schema([
141 146
                         Repeater::make('histories')->label('')->schema([

+ 1
- 1
config/livewire.php Vedi File

@@ -64,7 +64,7 @@ return [
64 64
     */
65 65
 
66 66
     'temporary_file_upload' => [
67
-        'disk' => null,        // Example: 'local', 's3'              | Default: 'default'
67
+        'disk' => 'local',        // Example: 'local', 's3'              | Default: 'default'
68 68
         'rules' => ["max:122880"],       // Example: ['file', 'mimes:png,jpg']  | Default: ['required', 'file', 'max:12288'] (12MB)
69 69
         'directory' => null,   // Example: 'tmp'                      | Default: 'livewire-tmp'
70 70
         'middleware' => null,  // Example: 'throttle:5,1'             | Default: 'throttle:60,1'