File tree Expand file tree Collapse file tree 3 files changed +24
-24
lines changed
packages/svelte-file-tree/src/lib/components Expand file tree Collapse file tree 3 files changed +24
-24
lines changed Original file line number Diff line number Diff line change 9595 }
9696 },
9797 shouldClearClipboard = (operation ) => operation === " cut" ,
98- onResolveNameConflict = () => " cancel " ,
98+ onResolveNameConflict = () => " default " ,
9999 onCircularReference = noop,
100100 canCopy = truePredicate,
101101 onCopy = noop,
308308 }
309309 }
310310
311- const name = current .node .name ;
311+ const node = current .node ;
312+ let name = node .name ;
312313 if (uniqueNames .has (name)) {
313314 const resolution = await onResolveNameConflict ({
314315 operation: " copy" ,
322323 case " cancel" : {
323324 return false ;
324325 }
326+ case " default" : {
327+ name = ` ${ node .name } copy` ;
328+ for (let i = 2 ; uniqueNames .has (name); i++ ) {
329+ name = ` ${ node .name } copy ${ i} ` ;
330+ }
331+ break ;
332+ }
325333 }
326334 }
327335
328336 uniqueNames .add (name);
329337 sources .push (current);
330- copies .push (copyNode (current .node ));
338+ const copy = copyNode (node);
339+ copy .name = name;
340+ copies .push (copy);
331341 }
332342
333343 if (sources .length === 0 ) {
384394 }
385395 }
386396
387- const name = current .node .name ;
397+ const node = current .node ;
398+ const name = node .name ;
388399 if (uniqueNames .has (name)) {
389400 const resolution = await onResolveNameConflict ({
390401 operation: " move" ,
395406 case " skip" : {
396407 continue ;
397408 }
398- case " cancel" : {
409+ case " cancel" :
410+ case " default" : {
399411 return false ;
400412 }
401413 }
402414 }
403415
404416 uniqueNames .add (name);
405417 sources .push (current);
406- sourceIds .add (current . node .id );
418+ sourceIds .add (node .id );
407419 sourceParents .add (current .parent );
408420 }
409421
Original file line number Diff line number Diff line change @@ -31,7 +31,7 @@ export type OnResolveNameConflictArgs<
3131 name : string ;
3232} ;
3333
34- export type NameConflictResolution = "skip" | "cancel" ;
34+ export type NameConflictResolution = "skip" | "cancel" | "default" ;
3535
3636export type OnCircularReferenceArgs <
3737 TFile extends FileNode = FileNode ,
Original file line number Diff line number Diff line change 4646 },
4747 },
4848 dialog: {
49- failedToCopyItems: {
50- en: " Failed to copy items" ,
51- ar: " فشل نسخ العناصر" ,
52- },
5349 failedToMoveItems: {
5450 en: " Failed to move items" ,
5551 ar: " فشل نقل العناصر" ,
192188 operation ,
193189 name ,
194190 }: OnResolveNameConflictArgs <FileNode , FolderNode >) {
195- return new Promise <NameConflictResolution >((resolve ) => {
196- let title;
197- switch (operation ) {
198- case " copy" : {
199- title = translations .dialog .failedToCopyItems [lang ];
200- break ;
201- }
202- case " move" : {
203- title = translations .dialog .failedToMoveItems [lang ];
204- break ;
205- }
206- }
191+ if (operation === " copy" ) {
192+ return " default" ;
193+ }
207194
195+ return new Promise <NameConflictResolution >((resolve ) => {
208196 showDialog ({
209- title ,
197+ title: translations . dialog . failedToMoveItems [ lang ] ,
210198 description: translations .dialog .nameConflictDescription [lang ](name ),
211199 confirmLabel: translations .dialog .skip [lang ],
212200 cancelLabel: translations .dialog .cancel [lang ],
You can’t perform that action at this time.
0 commit comments