diff --git a/.claude/settings.local.json b/.claude/settings.local.json
index f734005..b53fbcf 100644
--- a/.claude/settings.local.json
+++ b/.claude/settings.local.json
@@ -5,7 +5,10 @@
"Bash(yarn dev:*)",
"Bash(yarn lint:*)",
"Bash(yarn build:*)",
- "Bash(npx eslint:*)"
+ "Bash(npx eslint:*)",
+ "WebFetch(domain:docs.iconify.design)",
+ "WebFetch(domain:iconify.design)",
+ "WebFetch(domain:api.iconify.design)"
],
"deny": []
}
diff --git a/components/CustomActionButton.vue b/components/CustomActionButton.vue
index 2ca5b34..697632e 100644
--- a/components/CustomActionButton.vue
+++ b/components/CustomActionButton.vue
@@ -140,12 +140,23 @@ const handleClick = async (event) => {
// Handle navigation based on target type
const openInNewTab = props.action.target === '_blank' || props.action.openInNewTab;
+ // Check if URL is external (has protocol or starts with //)
+ const isExternalUrl = (url) => {
+ return /^https?:\/\//.test(url) || /^\/\//.test(url) || !url.startsWith('/');
+ };
+
if (openInNewTab) {
window.open(finalUrl, '_blank', 'noopener,noreferrer');
} else {
// Use navigateTo for SPA navigation if available, otherwise use window.location
if (typeof navigateTo === 'function') {
- await navigateTo(finalUrl);
+ if (isExternalUrl(finalUrl)) {
+ // For external URLs, use navigateTo with external: true option
+ await navigateTo(finalUrl, { external: true });
+ } else {
+ // For internal URLs, use regular navigateTo
+ await navigateTo(finalUrl);
+ }
} else {
window.location.href = finalUrl;
}
diff --git a/components/FormBuilderFieldSettingsModal.vue b/components/FormBuilderFieldSettingsModal.vue
index ecfe8f0..f3d5210 100644
--- a/components/FormBuilderFieldSettingsModal.vue
+++ b/components/FormBuilderFieldSettingsModal.vue
@@ -598,15 +598,18 @@
:classes="{ outer: 'field-wrapper' }"
/>
-