J'ai 2 boîtes de sélection que je construis en utilisant le composant d'autocomplétion dans l'interface utilisateur - https://mui.com/material-ui/react-autocomplete/#checkboxes
J'ai un cas de bord que j'essaie de réparer :
- Un utilisateur sélectionne à la fois "Consumer Electronics" et "Fashion & Apparel" dans le premier champ de sélection des industries principales.
- Un utilisateur sélectionne ensuite, dans la deuxième boîte de sélection des sous-secteurs, "Ordinateurs et portables" et "Lunettes". (1 dans chaque groupe).
- Si un utilisateur supprime ensuite "Mode et habillement" de la première boîte de sélection, tous les articles sélectionnés dans cette catégorie doivent être supprimés dans la deuxième boîte de sélection.
exemple :
https://codesandbox.io/s/checkboxestags-demo-material-ui-forked-qox19g?file=/demo.tsx
Vous pouvez voir que dans le second "Autocomplete", j'utilise "filterOptions" pour n'afficher que les options qui dépendent du premier "Autocomplete".
Voir aussi data.json dans l'exemple pour les données brutes.
code :
return (
<Autocomplete
multiple
options={subIndustries}
filterOptions={(x) =>
x.filter((x) =>
getValues("main_industries").find((m) => m.name === x.category)
)
}
groupBy={(option) => option.category}
disableCloseOnSelect
getOptionLabel={(option) => option.name}
onChange={(_, newValue: any) => {
setValue("sub_industries", newValue, { shouldValidate: true });
}}
defaultValue={getValues("sub_industries")}
onInputChange={(_, val) => {
console.log(val);
}}
renderOption={(props, option, { selected }) => (
<li {...props}>
<Checkbox
icon={uncheckedIcon}
checkedIcon={checkedIcon}
style={{ marginRight: 8 }}
checked={selected}
/>
{option.name}
</li>
)}
renderInput={(params) => (
<TextField
{...params}
label="Sub Industries"
placeholder="Sub Industries"
/>
)}
/>
);
};