add thumbnail prop for /sight route

This commit is contained in:
maxim
2025-04-03 18:54:07 +03:00
parent 36cc144798
commit f1743d547d
5 changed files with 85 additions and 1 deletions

View File

@ -39,6 +39,12 @@ export const CityList = () => {
minWidth: 150,
flex: 1,
},
{
field: 'arms',
headerName: 'Герб',
type: 'string',
flex: 1,
},
{
field: 'actions',
headerName: 'Действия',

View File

@ -27,6 +27,17 @@ export const SightCreate = () => {
],
})
const {autocompleteProps: mediaAutocompleteProps} = useAutocomplete({
resource: 'media',
onSearch: (value) => [
{
field: 'media_name',
operator: 'contains',
value,
},
],
})
return (
<Create isLoading={formLoading} saveButtonProps={saveButtonProps}>
<Box component="form" sx={{display: 'flex', flexDirection: 'column'}} autoComplete="off">
@ -97,6 +108,31 @@ export const SightCreate = () => {
/>
)}
/>
<Controller
control={control}
name="thumbnail"
defaultValue={null}
render={({field}) => (
<Autocomplete
{...mediaAutocompleteProps}
value={mediaAutocompleteProps.options.find((option) => option.id === field.value) || null}
onChange={(_, value) => {
field.onChange(value?.id || '')
}}
getOptionLabel={(item) => {
return item ? item.media_name : ''
}}
isOptionEqualToValue={(option, value) => {
return option.id === value?.id
}}
filterOptions={(options, {inputValue}) => {
return options.filter((option) => option.media_name.toLowerCase().includes(inputValue.toLowerCase()))
}}
renderInput={(params) => <TextField {...params} label="Выберите карточку" margin="normal" variant="outlined" error={!!errors.arms} helperText={(errors as any)?.arms?.message} />}
/>
)}
/>
</Box>
</Create>
)

View File

@ -28,6 +28,17 @@ export const SightEdit = () => {
],
})
const {autocompleteProps: mediaAutocompleteProps} = useAutocomplete({
resource: 'media',
onSearch: (value) => [
{
field: 'media_name',
operator: 'contains',
value,
},
],
})
return (
<Edit saveButtonProps={saveButtonProps}>
<Box component="form" sx={{display: 'flex', flexDirection: 'column'}} autoComplete="off">
@ -98,6 +109,31 @@ export const SightEdit = () => {
/>
)}
/>
<Controller
control={control}
name="thumbnail"
defaultValue={null}
render={({field}) => (
<Autocomplete
{...mediaAutocompleteProps}
value={mediaAutocompleteProps.options.find((option) => option.id === field.value) || null}
onChange={(_, value) => {
field.onChange(value?.id || '')
}}
getOptionLabel={(item) => {
return item ? item.media_name : ''
}}
isOptionEqualToValue={(option, value) => {
return option.id === value?.id
}}
filterOptions={(options, {inputValue}) => {
return options.filter((option) => option.media_name.toLowerCase().includes(inputValue.toLowerCase()))
}}
renderInput={(params) => <TextField {...params} label="Выберите карточку" margin="normal" variant="outlined" error={!!errors.arms} helperText={(errors as any)?.arms?.message} />}
/>
)}
/>
</Box>
{sightId && (

View File

@ -64,6 +64,12 @@ export const SightList = () => {
headerAlign: 'left',
flex: 1,
},
{
field: 'thumbnail',
headerName: 'Карточка',
type: 'string',
flex: 1,
},
{
field: 'actions',
headerName: 'Действия',