Skip to content

Commit 2f41c0b

Browse files
committed
Merge branch 'bose/3863' into staging
2 parents 03eb317 + df4aefb commit 2f41c0b

3 files changed

Lines changed: 14 additions & 33 deletions

File tree

studio/schemas/objects/commonFields/commonFields.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ export const gridColumns = ({
140140
initialValue?: string | undefined
141141
description?: string | undefined
142142
validation?: any
143-
}) => {
143+
} = {}) => {
144144
return {
145145
title: 'Number of grid columns',
146146
name: 'gridColumns',

studio/schemas/objects/embeddedVideoList.tsx

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export default {
4242
),
4343
},
4444
cookiePolicy(),
45-
gridColumns({}),
45+
gridColumns(),
4646
{
4747
type: 'array',
4848
name: 'items',
@@ -56,20 +56,9 @@ export default {
5656
{
5757
name: 'videoId',
5858
type: 'string',
59-
title: 'YouTube video ID',
60-
description: 'Paste only the video ID, not the full URL.',
61-
validation: (Rule: Rule) =>
62-
Rule.required().custom((value?: string) => {
63-
if (!value) return true
64-
65-
const isValidYoutubeId = /^[A-Za-z0-9_-]{11}$/.test(value)
66-
67-
if (!isValidYoutubeId) {
68-
return 'Enter a valid YouTube video ID (11 characters).'
69-
}
70-
71-
return true
72-
}),
59+
title: 'Embed URL',
60+
description:
61+
'Paste the full embed URL (YouTube or Vimeo iframe src).',
7362
},
7463
{
7564
name: 'highlighted',

web/sections/EmbeddedVideoList/EmbeddedVideoList.tsx

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,9 @@ type EmbeddedVideoListProps = {
3232
className?: string
3333
}
3434

35-
const YOUTUBE_EMBED_BASE_URL = 'https://www.youtube.com/embed/'
36-
37-
const getYoutubeEmbedUrl = (videoId?: string) => {
38-
if (!videoId) return null
39-
40-
const normalizedVideoId = videoId.trim()
41-
const isValidYoutubeId = /^[A-Za-z0-9_-]{11}$/.test(normalizedVideoId)
42-
43-
if (!isValidYoutubeId) return null
44-
45-
return `${YOUTUBE_EMBED_BASE_URL}${normalizedVideoId}`
35+
const getEmbedUrl = (embedUrl?: string) => {
36+
if (!embedUrl) return null
37+
return embedUrl.trim()
4638
}
4739

4840
const EmbeddedVideoList = forwardRef<HTMLDivElement, EmbeddedVideoListProps>(
@@ -85,16 +77,16 @@ const EmbeddedVideoList = forwardRef<HTMLDivElement, EmbeddedVideoListProps>(
8577
</div>
8678
)}
8779

88-
{featuredItem && getYoutubeEmbedUrl(featuredItem?.videoId) && (
80+
{featuredItem && getEmbedUrl(featuredItem?.videoId) && (
8981
<div className='px-layout-sm pb-8 lg:px-layout-lg'>
9082
<div className='overflow-hidden rounded-base'>
9183
<IFrame
9284
frameTitle={
9385
featuredItem.title && featuredItem.title.length > 0
9486
? toPlainText(featuredItem.title)
95-
: 'Featured embedded YouTube video'
87+
: 'Featured embedded video'
9688
}
97-
url={getYoutubeEmbedUrl(featuredItem?.videoId) || ''}
89+
url={getEmbedUrl(featuredItem?.videoId) || ''}
9890
cookiePolicy={cookiePolicy}
9991
aspectRatio='16:9'
10092
hasSectionTitle={false}
@@ -108,16 +100,16 @@ const EmbeddedVideoList = forwardRef<HTMLDivElement, EmbeddedVideoListProps>(
108100

109101
<ul className='flex flex-wrap gap-x-6 gap-y-12 px-layout-sm'>
110102
{regularItems
111-
.filter(item => getYoutubeEmbedUrl(item.videoId))
103+
.filter(item => getEmbedUrl(item.videoId))
112104
.map((videoItem, videoIndex) => {
113-
const embedUrl = getYoutubeEmbedUrl(videoItem.videoId)
105+
const embedUrl = getEmbedUrl(videoItem.videoId)
114106

115107
if (!embedUrl) return null
116108

117109
const frameTitle =
118110
videoItem.title && videoItem.title.length > 0
119111
? toPlainText(videoItem.title)
120-
: `Embedded YouTube video ${videoIndex + 1}`
112+
: `Embedded video ${videoIndex + 1}`
121113

122114
return (
123115
<li

0 commit comments

Comments
 (0)