Task #709: إخفاء رابط الحجز العام وإضافة زر فتح
- شريط "رابط الحجز العام (للمشاركة مع الضيوف)" في صفحة المراسم:
- أُزيل عرض نص الرابط الكامل (بقي العنوان والأيقونة فقط).
- أُضيف زر "فتح" (ExternalLink) بجانب زر "نسخ الرابط" يفتح
publicBookingUrl في تبويب جديد عبر window.open مع noopener,noreferrer.
- زر النسخ يعمل كما هو دون تغيير.
- مفاتيح ترجمة جديدة: protocol.bookings.openLink (ar: "فتح", en: "Open").
- لا تغييرات في الخادم. tsc نظيف. مراجعة architect: Pass.
This commit is contained in:
@@ -1824,7 +1824,8 @@
|
|||||||
"position": "المنصب",
|
"position": "المنصب",
|
||||||
"addRow": "إضافة صف",
|
"addRow": "إضافة صف",
|
||||||
"removeRow": "حذف الصف"
|
"removeRow": "حذف الصف"
|
||||||
}
|
},
|
||||||
|
"openLink": "فتح"
|
||||||
},
|
},
|
||||||
"external": {
|
"external": {
|
||||||
"new": "لقاء جديد",
|
"new": "لقاء جديد",
|
||||||
|
|||||||
@@ -1677,7 +1677,8 @@
|
|||||||
"position": "Position",
|
"position": "Position",
|
||||||
"addRow": "Add row",
|
"addRow": "Add row",
|
||||||
"removeRow": "Remove row"
|
"removeRow": "Remove row"
|
||||||
}
|
},
|
||||||
|
"openLink": "Open"
|
||||||
},
|
},
|
||||||
"external": {
|
"external": {
|
||||||
"new": "New meeting",
|
"new": "New meeting",
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import {
|
|||||||
Search as SearchIcon,
|
Search as SearchIcon,
|
||||||
Link2,
|
Link2,
|
||||||
Copy,
|
Copy,
|
||||||
|
ExternalLink,
|
||||||
Upload,
|
Upload,
|
||||||
Loader2,
|
Loader2,
|
||||||
Download,
|
Download,
|
||||||
@@ -1471,25 +1472,22 @@ export default function ProtocolPage() {
|
|||||||
<div className="flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between">
|
<div className="flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between">
|
||||||
<div className="flex min-w-0 items-center gap-2">
|
<div className="flex min-w-0 items-center gap-2">
|
||||||
<Link2 size={16} className="shrink-0 text-sky-600" />
|
<Link2 size={16} className="shrink-0 text-sky-600" />
|
||||||
<div className="min-w-0">
|
|
||||||
<p className="text-xs font-medium text-slate-700">
|
<p className="text-xs font-medium text-slate-700">
|
||||||
{t("protocol.bookings.shareLinkTitle")}
|
{t("protocol.bookings.shareLinkTitle")}
|
||||||
</p>
|
</p>
|
||||||
<p
|
|
||||||
dir="ltr"
|
|
||||||
className="truncate text-xs text-slate-500 text-start"
|
|
||||||
title={publicBookingUrl}
|
|
||||||
>
|
|
||||||
{publicBookingUrl}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div className="flex shrink-0 items-center gap-2 self-start sm:self-auto">
|
||||||
<Button
|
<Button
|
||||||
size="sm"
|
size="sm"
|
||||||
variant="outline"
|
variant="outline"
|
||||||
onClick={copyBookingLink}
|
onClick={() =>
|
||||||
className="shrink-0 self-start sm:self-auto"
|
window.open(publicBookingUrl, "_blank", "noopener,noreferrer")
|
||||||
|
}
|
||||||
>
|
>
|
||||||
|
<ExternalLink size={16} className="me-1" />
|
||||||
|
{t("protocol.bookings.openLink")}
|
||||||
|
</Button>
|
||||||
|
<Button size="sm" variant="outline" onClick={copyBookingLink}>
|
||||||
{linkCopied ? (
|
{linkCopied ? (
|
||||||
<Check size={16} className="me-1 text-emerald-600" />
|
<Check size={16} className="me-1 text-emerald-600" />
|
||||||
) : (
|
) : (
|
||||||
@@ -1501,6 +1499,7 @@ export default function ProtocolPage() {
|
|||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
{bookingsView === "list" && (
|
{bookingsView === "list" && (
|
||||||
<div className="relative">
|
<div className="relative">
|
||||||
<SearchIcon
|
<SearchIcon
|
||||||
|
|||||||
Reference in New Issue
Block a user