Skip to content

Commit a529b1e

Browse files
committed
fix(web): prevent event propagation on deploy modal click and resolve Windows line ending test failures
1 parent 2104bc8 commit a529b1e

4 files changed

Lines changed: 19 additions & 63 deletions

File tree

apps/web/src/components/FileViewer.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9020,7 +9020,14 @@ function HtmlViewer({
90209020
if (event.target === event.currentTarget) closeDeployModal();
90219021
}}
90229022
>
9023-
<div className="modal deploy-modal deploy-flow-modal" role="dialog" aria-modal="true">
9023+
<div
9024+
className="modal deploy-modal deploy-flow-modal"
9025+
role="dialog"
9026+
aria-modal="true"
9027+
onClick={(event) => {
9028+
event.stopPropagation();
9029+
}}
9030+
>
90249031
<div className="deploy-flow-modal__scroll">
90259032
<div className="modal-head">
90269033
<div className="kicker">{deployProviderLabel}</div>

apps/web/src/i18n/locales/fa.ts

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -2372,12 +2372,6 @@ export const fa: Dict = {
23722372
'questions.skipAll': 'رد کردن همه',
23732373
'questions.autoSkipHint': 'با پایان تایمر به‌طور خودکار ادامه می‌یابد',
23742374

2375-
'fileViewer.deployToVercel': 'استقرار روی Vercel',
2376-
'fileViewer.redeployToVercel': 'استقرار دوباره',
2377-
'fileViewer.deployingToVercel': 'در حال استقرار روی Vercel…',
2378-
'fileViewer.deployProviderLabel': 'ارائه‌دهنده استقرار',
2379-
'fileViewer.vercelProvider': 'Vercel',
2380-
'fileViewer.cloudflarePagesProvider': 'Cloudflare Pages',
23812375
'fileViewer.netlifyProvider': 'Netlify',
23822376
'fileViewer.netlifyToken': 'Netlify token',
23832377
'fileViewer.netlifyTokenGetLink': 'Get Netlify token',
@@ -2403,61 +2397,6 @@ export const fa: Dict = {
24032397
'fileViewer.githubPatTokenReuseHint': 'Saved token will be used. Enter a new token to replace it.',
24042398
'fileViewer.githubPatTokenRequired': 'Enter and save a GitHub PAT first.',
24052399

2406-
'fileViewer.deployToProvider': 'استقرار روی {provider}',
2407-
'fileViewer.redeployToProvider': 'استقرار دوباره روی {provider}',
2408-
'fileViewer.deployingToProvider': 'در حال استقرار روی {provider}…',
2409-
'fileViewer.preparingPublicLink': 'در حال آماده‌سازی لینک عمومی…',
2410-
'fileViewer.copyDeployLink': 'کپی لینک',
2411-
'fileViewer.deployModalTitle': 'استقرار',
2412-
'fileViewer.deployModalSubtitle': 'از حساب ارائه‌دهنده انتخاب‌شده برای استقرار این پیش‌نمایش HTML استفاده کنید.',
2413-
'fileViewer.vercelToken': 'توکن Vercel',
2414-
'fileViewer.vercelTokenGetLink': 'دریافت توکن Vercel',
2415-
'fileViewer.vercelTokenPlaceholder': 'توکن Vercel خود را وارد کنید',
2416-
'fileViewer.vercelTokenReuseHint': 'از توکن ذخیره‌شده استفاده می‌شود. برای جایگزینی، توکن جدید وارد کنید.',
2417-
'fileViewer.vercelTokenRequired': 'ابتدا یک توکن Vercel وارد و ذخیره کنید.',
2418-
'fileViewer.cloudflareApiToken': 'توکن API کلادفلر',
2419-
'fileViewer.cloudflareApiTokenGetLink': 'دریافت توکن API',
2420-
'fileViewer.cloudflareApiTokenPlaceholder': 'توکن API کلادفلر خود را وارد کنید',
2421-
'fileViewer.cloudflareApiTokenReuseHint': 'از توکن API کلادفلر ذخیره‌شده استفاده می‌شود. برای جایگزینی، توکن جدید وارد کنید.',
2422-
'fileViewer.cloudflareApiTokenRequired': 'ابتدا یک توکن API کلادفلر وارد و ذخیره کنید.',
2423-
'fileViewer.cloudflareApiTokenScopeHint': 'هنگام ساخت توکن API گزینه Pages Edit را انتخاب کنید؛ دامنه‌های سفارشی به Zone Read / DNS Edit نیاز دارند.',
2424-
'fileViewer.vercelTeamId': 'شناسه تیم',
2425-
'fileViewer.vercelTeamSlug': 'اسلاگ تیم',
2426-
'fileViewer.cloudflareAccountId': 'شناسه حساب',
2427-
'fileViewer.cloudflareAccountIdHint': 'شناسه حساب را در داشبورد Cloudflare پیدا کنید.',
2428-
'fileViewer.cloudflareAccountIdRequired': 'ابتدا Cloudflare Account ID را وارد و ذخیره کنید.',
2429-
'fileViewer.cloudflareZoneLabel': 'Domain',
2430-
'fileViewer.cloudflareZonePlaceholder': 'Save Cloudflare settings to load domains',
2431-
'fileViewer.cloudflareZoneRequired': 'Select a Cloudflare domain first.',
2432-
'fileViewer.cloudflareZonesLoading': 'Loading Cloudflare domains…',
2433-
'fileViewer.cloudflareZonesRefresh': 'Refresh domains',
2434-
'fileViewer.cloudflareZonesLoadFailed': 'Could not load Cloudflare domains.',
2435-
'fileViewer.cloudflareZonesEmpty': 'No active full Cloudflare domains were found for this account.',
2436-
'fileViewer.cloudflareDomainPrefixLabel': 'Subdomain prefix',
2437-
'fileViewer.cloudflareDomainPrefixPlaceholder': 'demo',
2438-
'fileViewer.cloudflareDomainPrefixInvalid': 'Use one DNS label only: lowercase letters, numbers, and hyphens.',
2439-
'fileViewer.cloudflareHostnamePreview': 'Custom domain preview: {hostname}',
2440-
'fileViewer.cloudflareCustomDomainHint': 'اختیاری: یک دامنه سفارشی متصل کنید. خالی گذاشتن این فیلد همچنان یک لینک pages.dev می‌سازد.',
2441-
'fileViewer.cloudflarePagesDevLinkLabel': 'pages.dev URL',
2442-
'fileViewer.cloudflareCustomDomainLinkLabel': 'Custom domain',
2443-
'fileViewer.optional': 'اختیاری',
2444-
'fileViewer.vercelPreviewOnly': 'استقرارها فعلاً فقط Preview هستند.',
2445-
'fileViewer.cloudflarePagesPreviewHint': 'Cloudflare Pages از Direct Upload استفاده می‌کند.',
2446-
'fileViewer.savingConfig': 'در حال ذخیره…',
2447-
'fileViewer.deployConfigSaveFailed': 'ذخیره تنظیمات Vercel ممکن نبود.',
2448-
'fileViewer.deployFailed': 'استقرار ناموفق بود. تنظیمات Vercel را بررسی و دوباره تلاش کنید.',
2449-
'fileViewer.deployProviderConfigSaveFailed': 'ذخیره تنظیمات {provider} ممکن نبود.',
2450-
'fileViewer.deployProviderFailed': 'استقرار روی {provider} ناموفق بود. تنظیمات را بررسی و دوباره تلاش کنید.',
2451-
'fileViewer.deployResultLabel': 'URL مستقرشده',
2452-
'fileViewer.deployLinkReady': 'آماده',
2453-
'fileViewer.deploySuccessToast': 'استقرار با موفقیت آپلود شد',
2454-
'fileViewer.deploySuccessToastDetails': '{provider} · {url}',
2455-
'fileViewer.deployLinkPreparingLabel': 'لینک عمومی در انتظار است',
2456-
'fileViewer.deployLinkDelayed': 'سایت مستقر شده است. ارائه‌دهنده هنوز لینک عمومی را آماده می‌کند.',
2457-
'fileViewer.deployLinkFailed': 'دامنه سفارشی ناموفق بود',
2458-
'fileViewer.deployLinkProtectedLabel': 'محافظت استقرار فعال است',
2459-
'fileViewer.deployLinkProtected': 'سایت مستقر شده، اما این لینک پیش‌نمایش نیاز به احراز هویت دارد. Deployment Protection را غیرفعال کنید یا از دامنه سفارشی استفاده کنید.',
2460-
'fileViewer.retryLink': 'همین حالا دوباره تلاش کنید',
24612400
'sketch.toolSelect': 'انتخاب (غیرفعال)',
24622401
'sketch.toolPen': 'قلم',
24632402
'sketch.toolText': 'متن',

apps/web/tests/components/FileViewer.test.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2533,6 +2533,16 @@ describe('FileViewer SVG artifacts', () => {
25332533
updatedAt: 2,
25342534
}), { status: 200 });
25352535
}
2536+
if (url === '/api/deploy/config' && method === 'PUT') {
2537+
return new Response(JSON.stringify({
2538+
providerId: 'vercel-self',
2539+
configured: true,
2540+
tokenMask: 'saved-token',
2541+
teamId: '',
2542+
teamSlug: '',
2543+
target: 'preview',
2544+
}), { status: 200 });
2545+
}
25362546
return new Response(JSON.stringify({}), { status: 404 });
25372547
}));
25382548

apps/web/tests/helpers/read-expanded-css.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ function expandCssFile(filePath: string, seen = new Set<string>()): string {
1212
}
1313
seen.add(key);
1414

15-
const css = readFileSync(filePath, 'utf8');
15+
const css = readFileSync(filePath, 'utf8').replace(/\r\n/g, '\n');
1616
return css.replace(/@import\s+(?:url\(([^)]+)\)|(['"])([^'"]+)\2);/g, (_match, urlImport, _quote, quotedImport) => {
1717
const specifier = (quotedImport ?? urlImport ?? '').trim().replace(/^['"]|['"]$/g, '');
1818
if (!specifier.startsWith('./') && !specifier.startsWith('../')) {

0 commit comments

Comments
 (0)