feat: add changing order of fields (closes #28)
This commit is contained in:
		
							parent
							
								
									004403895a
								
							
						
					
					
						commit
						77ae15a468
					
				
					 3 changed files with 49 additions and 4 deletions
				
			
		|  | @ -6,6 +6,7 @@ | |||
| 
 | ||||
|   export let field: Field; | ||||
|   export let deleteField: () => void; | ||||
|   export let moveField: (up: boolean) => void; | ||||
| 
 | ||||
|   let newEntry: string = ""; | ||||
| 
 | ||||
|  | @ -31,12 +32,26 @@ | |||
|   }; | ||||
| </script> | ||||
| 
 | ||||
| <div> | ||||
| <div class="p-3"> | ||||
|   <h5>{field.name}</h5> | ||||
|   <InputGroup class="m-1"> | ||||
|     <InputGroupText>Name</InputGroupText> | ||||
|     <IconButton | ||||
|       color="secondary" | ||||
|       icon="chevron-left" | ||||
|       tooltip="Move field left" | ||||
|       click={() => moveField(true)} | ||||
|     /> | ||||
|     <IconButton | ||||
|       color="secondary" | ||||
|       icon="chevron-right" | ||||
|       tooltip="Move field right" | ||||
|       click={() => moveField(false)} | ||||
|     /> | ||||
|     <!-- <InputGroupText>Name</InputGroupText> --> | ||||
|     <Input bind:value={field.name} /> | ||||
|     <Button color="danger" on:click={() => deleteField()}>Delete field</Button> | ||||
|   </InputGroup> | ||||
|   <hr /> | ||||
|   {#each field.entries as _, index} | ||||
|     <FieldEntry | ||||
|       bind:value={field.entries[index].value} | ||||
|  |  | |||
|  | @ -154,6 +154,17 @@ | |||
|     pronouns[newIndex] = temp; | ||||
|   }; | ||||
| 
 | ||||
|   const moveField = (index: number, up: boolean) => { | ||||
|     if (up && index == 0) return; | ||||
|     if (!up && index == fields.length - 1) return; | ||||
| 
 | ||||
|     const newIndex = up ? index - 1 : index + 1; | ||||
| 
 | ||||
|     const temp = fields[index]; | ||||
|     fields[index] = fields[newIndex]; | ||||
|     fields[newIndex] = temp; | ||||
|   }; | ||||
| 
 | ||||
|   const addName = () => { | ||||
|     names = [...names, { value: newName, status: WordStatus.Okay }]; | ||||
|     newName = ""; | ||||
|  | @ -425,7 +436,11 @@ | |||
|   <div class="grid gap-3"> | ||||
|     <div class="row row-cols-1 row-cols-md-2"> | ||||
|       {#each fields as _, index} | ||||
|         <EditableField bind:field={fields[index]} deleteField={() => removeField(index)} /> | ||||
|         <EditableField | ||||
|           bind:field={fields[index]} | ||||
|           deleteField={() => removeField(index)} | ||||
|           moveField={(up) => moveField(index, up)} | ||||
|         /> | ||||
|       {/each} | ||||
|     </div> | ||||
|   </div> | ||||
|  |  | |||
|  | @ -150,6 +150,17 @@ | |||
|     pronouns[newIndex] = temp; | ||||
|   }; | ||||
| 
 | ||||
|   const moveField = (index: number, up: boolean) => { | ||||
|     if (up && index == 0) return; | ||||
|     if (!up && index == fields.length - 1) return; | ||||
| 
 | ||||
|     const newIndex = up ? index - 1 : index + 1; | ||||
| 
 | ||||
|     const temp = fields[index]; | ||||
|     fields[index] = fields[newIndex]; | ||||
|     fields[newIndex] = temp; | ||||
|   }; | ||||
| 
 | ||||
|   const addName = () => { | ||||
|     names = [...names, { value: newName, status: WordStatus.Okay }]; | ||||
|     newName = ""; | ||||
|  | @ -367,7 +378,11 @@ | |||
|   <div class="grid gap-3"> | ||||
|     <div class="row row-cols-1 row-cols-md-2"> | ||||
|       {#each fields as _, index} | ||||
|         <EditableField bind:field={fields[index]} deleteField={() => removeField(index)} /> | ||||
|         <EditableField | ||||
|           bind:field={fields[index]} | ||||
|           deleteField={() => removeField(index)} | ||||
|           moveField={(up) => moveField(index, up)} | ||||
|         /> | ||||
|       {/each} | ||||
|     </div> | ||||
|   </div> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue