Refactor admin panels to utilize CreateNameDialog for creating new entities
Updated the BumpersPanel, ChannelsPanel, CollectionsPanel, GroupsPanel, ClipGroupPanel, and ShowsPanel components to replace direct input fields with a CreateNameDialog for creating new items. This change enhances user experience by centralizing the creation process and improving UI consistency. Localization strings were also updated to reflect new dialog titles and labels in both English and Russian.
This commit is contained in:
@@ -7,12 +7,23 @@ import { cn } from '@/shared/lib/cn'
|
||||
* Мини-плеер HLS для админки: плейлист и сегменты лежат под admin-роутами (JWT), поэтому запросы
|
||||
* идут через hls.js с Bearer-заголовком. Нативный путь (Safari) — только там, где hls.js не нужен.
|
||||
*/
|
||||
export function HlsVideo({ src, className }: Readonly<{ src: string; className?: string }>) {
|
||||
export function HlsVideo({
|
||||
src,
|
||||
className,
|
||||
autoPlay = false,
|
||||
}: Readonly<{ src: string; className?: string; autoPlay?: boolean }>) {
|
||||
const videoRef = useRef<HTMLVideoElement>(null)
|
||||
|
||||
useEffect(() => {
|
||||
const video = videoRef.current
|
||||
if (!video) return
|
||||
|
||||
// Атрибута autoplay мало: к моменту вставки <video> у него нет источника — плейлист доедет
|
||||
// позже, и браузер стартовать будет уже нечему. Поэтому запускаем руками по готовности.
|
||||
// Отказ глотаем: политика автовоспроизведения может не пустить, и это не ошибка — у плеера
|
||||
// есть кнопка.
|
||||
const start = () => void video.play().catch(() => undefined)
|
||||
|
||||
let hls: Hls | null = null
|
||||
if (Hls.isSupported()) {
|
||||
hls = new Hls({
|
||||
@@ -23,13 +34,17 @@ export function HlsVideo({ src, className }: Readonly<{ src: string; className?:
|
||||
})
|
||||
hls.loadSource(src)
|
||||
hls.attachMedia(video)
|
||||
if (autoPlay) hls.on(Hls.Events.MANIFEST_PARSED, start)
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = src
|
||||
if (autoPlay) video.addEventListener('loadedmetadata', start, { once: true })
|
||||
}
|
||||
|
||||
return () => {
|
||||
video.removeEventListener('loadedmetadata', start)
|
||||
hls?.destroy()
|
||||
}
|
||||
}, [src])
|
||||
}, [src, autoPlay])
|
||||
|
||||
return (
|
||||
<video
|
||||
|
||||
Reference in New Issue
Block a user