Обновлен компонент MessengerAttachments: добавлено свойство aria-hidden для иконок изображений, улучшена доступность. Удалены устаревшие интерфейсы WildberriesCard и SelectedCard из компонентов create-supply-form и wb-product-cards, улучшена структура кода.
This commit is contained in:
@ -137,7 +137,7 @@ export function MessengerAttachments({ counterparty, onViewChange }: MessengerAt
|
||||
const renderFileIcon = (fileType?: string) => {
|
||||
if (!fileType) return <FileText className="h-4 w-4 text-gray-400" />
|
||||
|
||||
if (fileType.startsWith('image/')) return <Image className="h-4 w-4 text-blue-400" />
|
||||
if (fileType.startsWith('image/')) return <Image className="h-4 w-4 text-blue-400" aria-hidden="true" />
|
||||
if (fileType.startsWith('audio/')) return <Music className="h-4 w-4 text-green-400" />
|
||||
if (fileType.startsWith('video/')) return <Video className="h-4 w-4 text-purple-400" />
|
||||
return <FileText className="h-4 w-4 text-gray-400" />
|
||||
@ -207,7 +207,7 @@ export function MessengerAttachments({ counterparty, onViewChange }: MessengerAt
|
||||
className="w-full h-full object-cover"
|
||||
/>
|
||||
<div className="absolute inset-0 bg-black/20 flex items-center justify-center opacity-0 hover:opacity-100 transition-opacity">
|
||||
<Image className="h-4 w-4 text-white" />
|
||||
<Image className="h-4 w-4 text-white" aria-hidden="true" />
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
@ -319,7 +319,7 @@ export function MessengerAttachments({ counterparty, onViewChange }: MessengerAt
|
||||
{imageMessages.length === 0 ? (
|
||||
<div className="flex items-center justify-center h-64">
|
||||
<div className="text-center">
|
||||
<Image className="h-12 w-12 text-white/20 mx-auto mb-4" />
|
||||
<Image className="h-12 w-12 text-white/20 mx-auto mb-4" aria-hidden="true" />
|
||||
<p className="text-white/60">Нет изображений</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -339,7 +339,7 @@ export function MessengerAttachments({ counterparty, onViewChange }: MessengerAt
|
||||
className="w-full h-full object-cover"
|
||||
/>
|
||||
<div className="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors flex items-center justify-center">
|
||||
<Image className="h-6 w-6 text-white opacity-0 group-hover:opacity-100 transition-opacity" />
|
||||
<Image className="h-6 w-6 text-white opacity-0 group-hover:opacity-100 transition-opacity" aria-hidden="true" />
|
||||
</div>
|
||||
<div className="absolute bottom-2 left-2 right-2">
|
||||
<div className="text-white text-xs truncate bg-black/50 px-2 py-1 rounded">
|
||||
|
@ -16,6 +16,7 @@ import {
|
||||
Star
|
||||
} from 'lucide-react'
|
||||
import { WBProductCards } from './wb-product-cards'
|
||||
import { SelectedCard, WildberriesCard } from '@/types/supplies'
|
||||
// import { WholesalerSelection } from './wholesaler-selection'
|
||||
|
||||
interface Wholesaler {
|
||||
@ -32,33 +33,7 @@ interface Wholesaler {
|
||||
specialization: string[]
|
||||
}
|
||||
|
||||
interface WildberriesCard {
|
||||
nmID: number
|
||||
vendorCode: string
|
||||
title: string
|
||||
description: string
|
||||
brand: string
|
||||
mediaFiles: string[]
|
||||
sizes: Array<{
|
||||
chrtID: number
|
||||
techSize: string
|
||||
wbSize: string
|
||||
price: number
|
||||
discountedPrice: number
|
||||
quantity: number
|
||||
}>
|
||||
}
|
||||
|
||||
interface SelectedCard {
|
||||
card: WildberriesCard
|
||||
selectedQuantity: number
|
||||
selectedMarket: string
|
||||
selectedPlace: string
|
||||
sellerName: string
|
||||
sellerPhone: string
|
||||
deliveryDate: string
|
||||
selectedServices: string[]
|
||||
}
|
||||
|
||||
interface CreateSupplyFormProps {
|
||||
onClose: () => void
|
||||
|
@ -34,46 +34,9 @@ import { apolloClient } from '@/lib/apollo-client'
|
||||
import { GET_MY_COUNTERPARTIES, GET_COUNTERPARTY_SERVICES, GET_COUNTERPARTY_SUPPLIES } from '@/graphql/queries'
|
||||
import { CREATE_WILDBERRIES_SUPPLY } from '@/graphql/mutations'
|
||||
import { toast } from 'sonner'
|
||||
import { SelectedCard, FulfillmentService, ConsumableService, WildberriesCard } from '@/types/supplies'
|
||||
|
||||
interface WildberriesCard {
|
||||
nmID: number
|
||||
vendorCode: string
|
||||
sizes: Array<{
|
||||
chrtID: number
|
||||
techSize: string
|
||||
wbSize: string
|
||||
price: number
|
||||
discountedPrice: number
|
||||
quantity: number
|
||||
}>
|
||||
mediaFiles: string[]
|
||||
object: string
|
||||
parent: string
|
||||
countryProduction: string
|
||||
supplierVendorCode: string
|
||||
brand: string
|
||||
title: string
|
||||
description: string
|
||||
}
|
||||
|
||||
interface SelectedCard {
|
||||
card: WildberriesCard
|
||||
selectedQuantity: number
|
||||
customPrice: number // Пользовательская цена за все количество
|
||||
selectedFulfillmentOrg: string // ID выбранной FF организации
|
||||
selectedFulfillmentServices: string[] // ID выбранных услуг FF (множественный выбор)
|
||||
selectedConsumableOrg: string // ID выбранной организации расходников
|
||||
selectedConsumableServices: string[] // ID выбранных расходников (множественный выбор)
|
||||
deliveryDate: string
|
||||
}
|
||||
|
||||
interface FulfillmentService {
|
||||
id: string
|
||||
name: string
|
||||
description?: string
|
||||
price: number
|
||||
organizationName: string
|
||||
}
|
||||
|
||||
interface Organization {
|
||||
id: string
|
||||
@ -519,7 +482,12 @@ export function WBProductCards({ onBack, onComplete }: WBProductCardsProps) {
|
||||
selectedFulfillmentServices: [],
|
||||
selectedConsumableOrg: '',
|
||||
selectedConsumableServices: [],
|
||||
deliveryDate: ''
|
||||
deliveryDate: '',
|
||||
selectedMarket: '',
|
||||
selectedPlace: '',
|
||||
sellerName: '',
|
||||
sellerPhone: '',
|
||||
selectedServices: []
|
||||
}
|
||||
return [...prev, newSelectedCard]
|
||||
}
|
||||
|
Reference in New Issue
Block a user