From c1da7f8d0a994e994cbb1e62d0ced00b69ae9e2a Mon Sep 17 00:00:00 2001 From: Jack McDade Date: Thu, 9 Apr 2026 09:55:02 -0400 Subject: [PATCH 1/2] Fix Bard arrow keys/undo SetPicker was binding global arrow/enter handlers but never cleaned them up if the component was unmounted while open (which happens in Bard after inserting a set). Closes #13806. --- resources/js/components/fieldtypes/bard/Set.vue | 1 + resources/js/components/fieldtypes/replicator/SetPicker.vue | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/resources/js/components/fieldtypes/bard/Set.vue b/resources/js/components/fieldtypes/bard/Set.vue index d5c3692c255..86fbc105b67 100644 --- a/resources/js/components/fieldtypes/bard/Set.vue +++ b/resources/js/components/fieldtypes/bard/Set.vue @@ -349,6 +349,7 @@ export default { () => data_get(this.publishContainer.values.value, this.fieldPathPrefix), (values) => { if (! values) return; + if (JSON.stringify(values) === JSON.stringify(this.node.attrs.values)) return; this.updateAttributes({ values }); }, diff --git a/resources/js/components/fieldtypes/replicator/SetPicker.vue b/resources/js/components/fieldtypes/replicator/SetPicker.vue index 3c1842ac4f0..6bc9b9044a8 100644 --- a/resources/js/components/fieldtypes/replicator/SetPicker.vue +++ b/resources/js/components/fieldtypes/replicator/SetPicker.vue @@ -495,5 +495,9 @@ export default { .map((result) => result.obj); } }, + + beforeUnmount() { + this.unbindKeys(); + }, }; From 9e306cd3c0c155ca9039ff6c071a3299f230338c Mon Sep 17 00:00:00 2001 From: Jack McDade Date: Thu, 9 Apr 2026 10:09:01 -0400 Subject: [PATCH 2/2] remove optional guard --- resources/js/components/fieldtypes/bard/Set.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/js/components/fieldtypes/bard/Set.vue b/resources/js/components/fieldtypes/bard/Set.vue index 86fbc105b67..d5c3692c255 100644 --- a/resources/js/components/fieldtypes/bard/Set.vue +++ b/resources/js/components/fieldtypes/bard/Set.vue @@ -349,7 +349,6 @@ export default { () => data_get(this.publishContainer.values.value, this.fieldPathPrefix), (values) => { if (! values) return; - if (JSON.stringify(values) === JSON.stringify(this.node.attrs.values)) return; this.updateAttributes({ values }); },