(field: DbField)
| 364 | } |
| 365 | |
| 366 | const fieldMenuItems = (field: DbField): ContextMenuItem[] => [ |
| 367 | { label: 'Sort ascending', onSelect: () => updateDatabaseSchema(csvPath, updateView(doc, view.id, { sorts: [{ fieldId: field.id, direction: 'asc' }] })) }, |
| 368 | { label: 'Sort descending', onSelect: () => updateDatabaseSchema(csvPath, updateView(doc, view.id, { sorts: [{ fieldId: field.id, direction: 'desc' }] })) }, |
| 369 | { label: 'Clear sort', disabled: view.sorts.length === 0, onSelect: () => updateDatabaseSchema(csvPath, updateView(doc, view.id, { sorts: [] })) }, |
| 370 | { kind: 'separator' }, |
| 371 | { |
| 372 | label: 'Move left', |
| 373 | hint: 'H', |
| 374 | disabled: columns[0]?.id === field.id, |
| 375 | onSelect: () => updateDatabaseSchema(csvPath, moveColumn(doc, view.id, field.id, 'left')) |
| 376 | }, |
| 377 | { |
| 378 | label: 'Move right', |
| 379 | hint: 'L', |
| 380 | disabled: columns[columns.length - 1]?.id === field.id, |
| 381 | onSelect: () => updateDatabaseSchema(csvPath, moveColumn(doc, view.id, field.id, 'right')) |
| 382 | }, |
| 383 | { kind: 'separator' }, |
| 384 | { label: 'Rename field', onSelect: () => setRenamingField(field.id) }, |
| 385 | ...(Object.keys(FIELD_TYPE_LABELS) as FieldType[]).map((t) => ({ |
| 386 | label: `Type: ${FIELD_TYPE_LABELS[t]}`, |
| 387 | hint: field.type === t ? '●' : undefined, |
| 388 | onSelect: () => updateDatabaseSchema(csvPath, retypeField(doc, field.id, t)) |
| 389 | })), |
| 390 | { kind: 'separator' }, |
| 391 | { |
| 392 | label: 'Delete field', |
| 393 | danger: true, |
| 394 | disabled: field.id === doc.idFieldId, |
| 395 | onSelect: () => updateDatabaseSchema(csvPath, deleteField(doc, field.id)) |
| 396 | } |
| 397 | ] |
| 398 | |
| 399 | return ( |
| 400 | <div |
no test coverage detected