@@ -10,6 +10,7 @@ import Checkmark from "../../components/svg/checkmark";
10
10
import FolderOpen from "../../components/svg/folder-open" ;
11
11
import { open } from "@tauri-apps/api/dialog" ;
12
12
import Delete from "../../components/svg/delete" ;
13
+ import { Buttons } from "../../components/parts/buttons" ;
13
14
14
15
const categories = [ "All" , "In Package" , "Default" , "Internal" , "Git" , "Local" ] ;
15
16
@@ -127,8 +128,6 @@ export default function PackageView() {
127
128
initialTemplateInfo . editorVersion . version
128
129
)
129
130
. then ( ( x ) => {
130
- console . log ( x ) ;
131
-
132
131
return x . map ( ( x ) => {
133
132
const templatePackage = packageInfo . templatePackages . find (
134
133
( y ) => y . name === x . name
@@ -170,6 +169,34 @@ export default function PackageView() {
170
169
} ) ;
171
170
}
172
171
172
+ function selectAll ( ) {
173
+ const packages = queriedPackages ;
174
+ newProjectContext . dispatch ( {
175
+ type : "set_selected_packages" ,
176
+ packages : [
177
+ ...newProjectContext . state . packageInfo . selectedPackages ,
178
+ ...packages
179
+ . filter (
180
+ ( x ) =>
181
+ ! newProjectContext . state . packageInfo . selectedPackages . some (
182
+ ( y ) => y . name === x . package_ . name
183
+ )
184
+ )
185
+ . map ( ( x ) => ( { name : x . package_ . name , version : x . package_ . version } ) ) ,
186
+ ] ,
187
+ } ) ;
188
+ }
189
+
190
+ function deselectAll ( ) {
191
+ const packages = queriedPackages ;
192
+ newProjectContext . dispatch ( {
193
+ type : "set_selected_packages" ,
194
+ packages : [
195
+ ...newProjectContext . state . packageInfo . selectedPackages ,
196
+ ] . filter ( ( x ) => ! packages . some ( ( y ) => y . package_ . name === x . name ) ) ,
197
+ } ) ;
198
+ }
199
+
173
200
function togglePackage ( name : string , version : string ) {
174
201
const selected = packageInfo . selectedPackages ;
175
202
if ( selected . find ( ( x ) => x . name === name ) ) {
@@ -227,9 +254,9 @@ export default function PackageView() {
227
254
spellCheck = "false"
228
255
/>
229
256
230
- < div >
257
+ < div className = "flex justify-between items-center pt-2" >
231
258
< button
232
- className = "flex gap-2 pt-2 "
259
+ className = "flex gap-2"
233
260
onClick = { ( ) => onlyShowSelectedPackages . set ( ( s ) => ! s ) }
234
261
>
235
262
< div className = "w-7 aspect-square border rounded-md border-stone-600 select-none" >
@@ -242,6 +269,14 @@ export default function PackageView() {
242
269
{ packageInfo . selectedPackages . length === 1 ? "" : "s" }
243
270
</ p >
244
271
</ button >
272
+
273
+ < div className = "flex gap-1" >
274
+ < Buttons . DefaultButton title = "Select All" onClick = { selectAll } />
275
+ < Buttons . DefaultButton
276
+ title = "Deselect All"
277
+ onClick = { deselectAll }
278
+ />
279
+ </ div >
245
280
</ div >
246
281
247
282
{ selectedCategory . value === "Git" && (
0 commit comments