This commit is contained in:
@@ -25,3 +25,14 @@ export const formatPrice = (price: number): string => {
|
||||
maximumFractionDigits: 0,
|
||||
}).format(price);
|
||||
};
|
||||
|
||||
export const normalizeLinkUrl = (url: string): string => {
|
||||
const trimmed = url.trim();
|
||||
if (!trimmed || trimmed.startsWith("page://")) {
|
||||
return trimmed;
|
||||
}
|
||||
if (/^https?:\/\//i.test(trimmed)) {
|
||||
return trimmed;
|
||||
}
|
||||
return `https://${trimmed}`;
|
||||
};
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import Button from "@/components/Button";
|
||||
import Input from "@/components/Input";
|
||||
import Select from "@/components/Select";
|
||||
import { normalizeLinkUrl } from "@/helpers/func";
|
||||
import { clx } from "@/helpers/utils";
|
||||
import { useEditorStore, type ToolType } from "@/pages/editor/store/editorStore";
|
||||
import { Add, ArrowCircleLeft, ArrowCircleRight, ArrowLeft, ArrowRight, DocumentText, Link } from "iconsax-react";
|
||||
@@ -51,7 +52,7 @@ const LinkInput = () => {
|
||||
|
||||
const selectedLinkConfig = linkTypesConfig[selectedLinkType];
|
||||
const selectedPage = targetPageNumber ? pageOptions.find((page) => page.value === targetPageNumber) : undefined;
|
||||
const resolvedLinkUrl = selectedLinkType === "link" ? linkUrl.trim() : (internalLinkUrls[selectedLinkType] ?? (targetPageNumber ? `page://${targetPageNumber}` : ""));
|
||||
const resolvedLinkUrl = selectedLinkType === "link" ? normalizeLinkUrl(linkUrl) : (internalLinkUrls[selectedLinkType] ?? (targetPageNumber ? `page://${targetPageNumber}` : ""));
|
||||
const defaultLinkText = selectedLinkType === "link" ? resolvedLinkUrl : selectedLinkType === "page" ? selectedPage?.label || selectedLinkConfig.label : selectedLinkConfig.label;
|
||||
const isAddDisabled = selectedLinkType === "link" ? !linkUrl.trim() : selectedLinkType === "page" && !targetPageNumber;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { EditorObject } from "../../../store/editorStore";
|
||||
import Input from "@/components/Input";
|
||||
import { normalizeLinkUrl } from "@/helpers/func";
|
||||
import Select from "@/components/Select";
|
||||
import ColorPicker from "@/components/ColorPicker";
|
||||
|
||||
@@ -21,6 +22,7 @@ const LinkSettings = ({ selectedObject, onUpdate }: LinkSettingsProps) => {
|
||||
label="آدرس لینک"
|
||||
value={selectedObject.linkUrl || ""}
|
||||
onChange={(e) => onUpdate(selectedObject.id, { linkUrl: e.target.value })}
|
||||
onBlur={(e) => onUpdate(selectedObject.id, { linkUrl: normalizeLinkUrl(e.target.value) })}
|
||||
placeholder="https://example.com"
|
||||
/>
|
||||
<Input
|
||||
|
||||
Reference in New Issue
Block a user