diff --git a/resources/js/components/fieldtypes/bard/Link.js b/resources/js/components/fieldtypes/bard/Link.js index 6c4683fe8e6..18b55b9077a 100644 --- a/resources/js/components/fieldtypes/bard/Link.js +++ b/resources/js/components/fieldtypes/bard/Link.js @@ -61,12 +61,6 @@ export const Link = Mark.create({ ]; }, - addKeyboardShortcuts() { - return { - 'Mod-k': () => this.options.vm.events.emit('link-toggle'), - }; - }, - addProseMirrorPlugins() { const vm = this.options.vm; return [ diff --git a/resources/js/components/fieldtypes/bard/LinkToolbar.vue b/resources/js/components/fieldtypes/bard/LinkToolbar.vue index 38d76f41b2d..fb24a45477b 100644 --- a/resources/js/components/fieldtypes/bard/LinkToolbar.vue +++ b/resources/js/components/fieldtypes/bard/LinkToolbar.vue @@ -1,135 +1,110 @@ diff --git a/resources/js/components/fieldtypes/relationship/RelationshipFieldtype.vue b/resources/js/components/fieldtypes/relationship/RelationshipFieldtype.vue index 05ed36843c2..843eb55c4ac 100644 --- a/resources/js/components/fieldtypes/relationship/RelationshipFieldtype.vue +++ b/resources/js/components/fieldtypes/relationship/RelationshipFieldtype.vue @@ -160,7 +160,7 @@ export default { }, linkExistingItem() { - this.$refs.input.$refs.existing.$el.click(); + this.$refs.input.openSelector(); }, unlinkAll() { diff --git a/resources/js/components/inputs/relationship/RelationshipInput.vue b/resources/js/components/inputs/relationship/RelationshipInput.vue index 729f09feed3..ac8370ab427 100644 --- a/resources/js/components/inputs/relationship/RelationshipInput.vue +++ b/resources/js/components/inputs/relationship/RelationshipInput.vue @@ -68,7 +68,7 @@ icon="link" :size="buttonSize" :text="linkLabel" - @click.prevent="isSelecting = true" + @click.prevent="openSelector" /> @@ -286,6 +286,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 f8e0ad5be66..b9fd324a122 100644 --- a/resources/js/components/structures/PageSelector.vue +++ b/resources/js/components/structures/PageSelector.vue @@ -91,7 +91,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 6ca04cc9aa1..91a4caa951f 100644 --- a/resources/js/components/ui/Popover.vue +++ b/resources/js/components/ui/Popover.vue @@ -22,6 +22,8 @@ const props = defineProps({ side: { type: String, default: 'bottom' }, /** The controlled open state of the popover. */ open: { type: Boolean, default: false }, + /** When `true`, clicking outside the modal will dismiss it. */ + dismissible: { type: Boolean, default: true }, }); const popoverContentClasses = cva({ @@ -67,6 +69,7 @@ function updateOpen(value) { :align :sideOffset="offset" :side + @interact-outside="(e) => !dismissible && e.preventDefault()" > diff --git a/resources/js/components/ui/Stack/Header.vue b/resources/js/components/ui/Stack/Header.vue index a84eba54e65..e4c0097833a 100644 --- a/resources/js/components/ui/Stack/Header.vue +++ b/resources/js/components/ui/Stack/Header.vue @@ -23,7 +23,7 @@ const hasActionsSlot = !!useSlots().actions;