diff --git a/resources/js/components/fieldtypes/bard/LinkToolbar.vue b/resources/js/components/fieldtypes/bard/LinkToolbar.vue
index fe51de4cdff..a4d71521a99 100644
--- a/resources/js/components/fieldtypes/bard/LinkToolbar.vue
+++ b/resources/js/components/fieldtypes/bard/LinkToolbar.vue
@@ -68,8 +68,8 @@
:aria-label="`${__('Browse')}...`"
@click="openSelector"
>
-
-
+
+
@@ -413,7 +413,7 @@ export default {
},
openEntrySelector() {
- this.$refs.relationshipInput.$refs.existing.click();
+ this.$refs.relationshipInput.openSelector();
},
openAssetSelector() {
diff --git a/resources/js/components/fieldtypes/bard/LinkToolbarButton.vue b/resources/js/components/fieldtypes/bard/LinkToolbarButton.vue
index a9c74a5683a..4b9e6026c45 100644
--- a/resources/js/components/fieldtypes/bard/LinkToolbarButton.vue
+++ b/resources/js/components/fieldtypes/bard/LinkToolbarButton.vue
@@ -1,5 +1,5 @@
-
+
@@ -285,6 +285,10 @@ export default {
this.update([...this.value.slice(0, index), ...this.value.slice(index + 1)]);
},
+ openSelector() {
+ this.isSelecting = true;
+ },
+
selectionsUpdated(selections) {
this.getDataForSelections(selections).then(() => {
this.update(selections);
diff --git a/resources/js/components/structures/PageSelector.vue b/resources/js/components/structures/PageSelector.vue
index e80fa5036d9..89cafb7b6b7 100644
--- a/resources/js/components/structures/PageSelector.vue
+++ b/resources/js/components/structures/PageSelector.vue
@@ -86,7 +86,7 @@ export default {
methods: {
linkExistingItem() {
- this.$refs.input.$refs.existing.$el.click();
+ this.$refs.input.openSelector();
},
itemDataUpdated(data) {
diff --git a/resources/js/components/ui/Popover.vue b/resources/js/components/ui/Popover.vue
index a42acc465f3..14361a4623d 100644
--- a/resources/js/components/ui/Popover.vue
+++ b/resources/js/components/ui/Popover.vue
@@ -16,6 +16,7 @@ const props = defineProps({
offset: { type: Number, default: 5 },
side: { type: String, default: 'bottom' },
open: { type: Boolean, default: false },
+ closeOnOutsideClick: { type: Boolean, default: true },
});
const popoverContentClasses = cva({
@@ -47,6 +48,13 @@ function updateOpen(value) {
emit('update:open', value);
open.value = value;
}
+
+function interactOutside(event) {
+ if (!props.closeOnOutsideClick) {
+ event.stopPropagation();
+ event.preventDefault();
+ }
+}
@@ -61,6 +69,7 @@ function updateOpen(value) {
:align
:sideOffset="offset"
:side
+ @interact-outside="interactOutside"
>