|
1 | | -import React, { useEffect, useMemo, useState } from 'react'; |
| 1 | +import React, { useCallback, useEffect, useMemo, useState } from 'react'; |
2 | 2 | import { Autocomplete, Box, CircularProgress, InputAdornment, Stack, TextField, Typography } from '@mui/material'; |
3 | 3 | import { useForm } from 'react-hook-form'; |
4 | 4 | import { useQuery } from 'react-query'; |
@@ -88,17 +88,20 @@ const SelectMaterialToCopyModal: React.FC<SelectMaterialToCopyModalProps> = ({ o |
88 | 88 | [assemblies] |
89 | 89 | ); |
90 | 90 |
|
91 | | - const materialToOption = (material: Material): AutocompleteOption => ({ |
92 | | - label: [ |
93 | | - material.name, |
94 | | - material.manufacturerName, |
95 | | - material.materialTypeName, |
96 | | - material.assemblyId ? `Assembly: ${assemblyNameById.get(material.assemblyId) ?? material.assemblyId}` : undefined |
97 | | - ] |
98 | | - .filter(Boolean) |
99 | | - .join(' – '), |
100 | | - id: material.materialId |
101 | | - }); |
| 91 | + const materialToOption = useCallback( |
| 92 | + (material: Material): AutocompleteOption => ({ |
| 93 | + label: [ |
| 94 | + material.name, |
| 95 | + material.manufacturerName, |
| 96 | + material.materialTypeName, |
| 97 | + material.assemblyId ? `Assembly: ${assemblyNameById.get(material.assemblyId) ?? material.assemblyId}` : undefined |
| 98 | + ] |
| 99 | + .filter(Boolean) |
| 100 | + .join(' – '), |
| 101 | + id: material.materialId |
| 102 | + }), |
| 103 | + [assemblyNameById] |
| 104 | + ); |
102 | 105 |
|
103 | 106 | const projectMaterialsQuery = useQuery<Material[], Error>( |
104 | 107 | ['materials', 'project', selectedProject?.wbsElementId ?? 'none'], |
@@ -146,7 +149,7 @@ const SelectMaterialToCopyModal: React.FC<SelectMaterialToCopyModalProps> = ({ o |
146 | 149 |
|
147 | 150 | const carOptions = useMemo(() => cars.map(carToOption), [cars]); |
148 | 151 | const projectOptions = useMemo(() => projectsForSelectedCar.map(projectToOption), [projectsForSelectedCar]); |
149 | | - const projectMaterialOptions = useMemo(() => projectMaterials.map(materialToOption), [projectMaterials]); |
| 152 | + const projectMaterialOptions = useMemo(() => projectMaterials.map(materialToOption), [projectMaterials, materialToOption]); |
150 | 153 |
|
151 | 154 | const searchOptions = useMemo(() => { |
152 | 155 | const q = searchText.trim().toLowerCase(); |
|
0 commit comments