From 26f4d07ee1dd4e3de801d2988770404acfddf6d4 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Thu, 19 Dec 2024 21:02:48 +0000 Subject: [PATCH] Populate ImageBlock alt text from default_alt_text when an image is chosen Fixes #12660 --- client/src/components/ChooserWidget/index.js | 5 ++++- client/src/entrypoints/images/image-block.js | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/client/src/components/ChooserWidget/index.js b/client/src/components/ChooserWidget/index.js index db66a8d891..67c1ef9066 100644 --- a/client/src/components/ChooserWidget/index.js +++ b/client/src/components/ChooserWidget/index.js @@ -1,11 +1,13 @@ +import EventEmitter from 'events'; import { ChooserModal } from '../../includes/chooserModal'; -export class Chooser { +export class Chooser extends EventEmitter { chooserModalClass = ChooserModal; titleStateKey = 'title'; // key used in the 'state' dictionary to hold the human-readable title editUrlStateKey = 'edit_url'; // key used in the 'state' dictionary to hold the URL of the edit page constructor(id, opts = {}) { + super(); this.opts = opts; this.initHTMLElements(id); this.state = this.getStateFromHTML(); @@ -83,6 +85,7 @@ export class Chooser { setStateFromModalData(data) { this.setState(data); + this.emit('chosen', data); } clear() { diff --git a/client/src/entrypoints/images/image-block.js b/client/src/entrypoints/images/image-block.js index c62ed6ecd8..0ff098587a 100644 --- a/client/src/entrypoints/images/image-block.js +++ b/client/src/entrypoints/images/image-block.js @@ -15,6 +15,11 @@ class ImageBlockDefinition extends window.wagtailStreamField.blocks updateStateInput(); isDecorativeField.addEventListener('change', updateStateInput); + const imageChooserWidget = block.childBlocks.image.widget; + imageChooserWidget.on('chosen', (data) => { + altTextField.value = data.default_alt_text; + }); + return block; } }