From 99fb821652de4b646e1145cdb4ab6f4edcef1a66 Mon Sep 17 00:00:00 2001 From: Stephen Mulvihill Date: Fri, 25 Oct 2024 06:46:39 -0700 Subject: [PATCH] Preserve IDs on alert widget section element --- .../wxt_ext_editor/js/build/wxt_alert.js | 32 ++++++++++++------- .../wxt_alert/src/alertediting.js | 32 ++++++++++++------- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/modules/custom/wxt_ext/wxt_ext_editor/js/build/wxt_alert.js b/modules/custom/wxt_ext/wxt_ext_editor/js/build/wxt_alert.js index 19f8999c..73576ec0 100755 --- a/modules/custom/wxt_ext/wxt_ext_editor/js/build/wxt_alert.js +++ b/modules/custom/wxt_ext/wxt_ext_editor/js/build/wxt_alert.js @@ -258,7 +258,8 @@ class AlertEditing extends delegated_corefrom_dll_reference_CKEditor5.Plugin { this.alertClasses.forEach(c => { schema.register('alert-' + c, { - inheritAllFrom: '$block' + inheritAllFrom: '$block', + allowAttributes: ['id'] }); schema.register('alertTitle-' + c, { isLimit: true, @@ -278,8 +279,12 @@ class AlertEditing extends delegated_corefrom_dll_reference_CKEditor5.Plugin { const { conversion } = this.editor; this.alertClasses.forEach(c => { + // Upcast conversion.for('upcast').elementToElement({ - model: 'alert-' + c, + model: (viewElement, { writer: modelWriter }) => { + const id = viewElement.getAttribute('id') || null; + return modelWriter.createElement('alert-' + c, { id }); + }, view: { name: 'section', classes: ['alert', 'alert-' + c], @@ -304,14 +309,17 @@ class AlertEditing extends delegated_corefrom_dll_reference_CKEditor5.Plugin { converterPriority: 'high' }); + // Data Downcast conversion.for('dataDowncast').elementToElement({ model: 'alert-' + c, - view: { - name: 'section', - classes: ['alert', 'alert-' + c], + view: (modelElement, { writer: viewWriter }) => { + const id = modelElement.getAttribute('id') || null; + return viewWriter.createContainerElement('section', { + class: 'alert alert-' + c, + id: id + }); }, }); - conversion.for('dataDowncast').elementToElement({ model: 'alertTitle-' + c, view: (modelElement, { writer: viewWriter }) => { @@ -320,7 +328,6 @@ class AlertEditing extends delegated_corefrom_dll_reference_CKEditor5.Plugin { }, converterPriority: 'high' }); - conversion.for('dataDowncast').elementToElement({ model: 'alertBody-' + c, view: { @@ -329,15 +336,19 @@ class AlertEditing extends delegated_corefrom_dll_reference_CKEditor5.Plugin { converterPriority: 'high' }); + // Editing Downcast conversion.for('editingDowncast').elementToElement({ model: 'alert-' + c, view: (modelElement, { writer: viewWriter }) => { - const div = viewWriter.createContainerElement('section', { class: 'alert alert-' + c }); - return (0,delegated_widgetfrom_dll_reference_CKEditor5.toWidget)(div, viewWriter, { hasSelectionHandle: true }); + const id = modelElement.getAttribute('id') || null; + const section = viewWriter.createContainerElement('section', { + class: 'alert alert-' + c, + id: id + }); + return (0,delegated_widgetfrom_dll_reference_CKEditor5.toWidget)(section, viewWriter, { hasSelectionHandle: true }); }, converterPriority: 'high' }); - conversion.for('editingDowncast').elementToElement({ model: 'alertTitle-' + c, view: (modelElement, { writer: viewWriter }) => { @@ -347,7 +358,6 @@ class AlertEditing extends delegated_corefrom_dll_reference_CKEditor5.Plugin { }, converterPriority: 'high' }); - conversion.for('editingDowncast').elementToElement({ model: 'alertBody-' + c, view: (modelElement, { writer: viewWriter }) => { diff --git a/modules/custom/wxt_ext/wxt_ext_editor/js/ckeditor5_plugins/wxt_alert/src/alertediting.js b/modules/custom/wxt_ext/wxt_ext_editor/js/ckeditor5_plugins/wxt_alert/src/alertediting.js index c81d6906..fc1c2fde 100755 --- a/modules/custom/wxt_ext/wxt_ext_editor/js/ckeditor5_plugins/wxt_alert/src/alertediting.js +++ b/modules/custom/wxt_ext/wxt_ext_editor/js/ckeditor5_plugins/wxt_alert/src/alertediting.js @@ -25,7 +25,8 @@ export default class AlertEditing extends Plugin { this.alertClasses.forEach(c => { schema.register('alert-' + c, { - inheritAllFrom: '$block' + inheritAllFrom: '$block', + allowAttributes: ['id'] }); schema.register('alertTitle-' + c, { isLimit: true, @@ -45,8 +46,12 @@ export default class AlertEditing extends Plugin { const { conversion } = this.editor; this.alertClasses.forEach(c => { + // Upcast conversion.for('upcast').elementToElement({ - model: 'alert-' + c, + model: (viewElement, { writer: modelWriter }) => { + const id = viewElement.getAttribute('id') || null; + return modelWriter.createElement('alert-' + c, { id }); + }, view: { name: 'section', classes: ['alert', 'alert-' + c], @@ -71,14 +76,17 @@ export default class AlertEditing extends Plugin { converterPriority: 'high' }); + // Data Downcast conversion.for('dataDowncast').elementToElement({ model: 'alert-' + c, - view: { - name: 'section', - classes: ['alert', 'alert-' + c], + view: (modelElement, { writer: viewWriter }) => { + const id = modelElement.getAttribute('id') || null; + return viewWriter.createContainerElement('section', { + class: 'alert alert-' + c, + id: id + }); }, }); - conversion.for('dataDowncast').elementToElement({ model: 'alertTitle-' + c, view: (modelElement, { writer: viewWriter }) => { @@ -87,7 +95,6 @@ export default class AlertEditing extends Plugin { }, converterPriority: 'high' }); - conversion.for('dataDowncast').elementToElement({ model: 'alertBody-' + c, view: { @@ -96,15 +103,19 @@ export default class AlertEditing extends Plugin { converterPriority: 'high' }); + // Editing Downcast conversion.for('editingDowncast').elementToElement({ model: 'alert-' + c, view: (modelElement, { writer: viewWriter }) => { - const div = viewWriter.createContainerElement('section', { class: 'alert alert-' + c }); - return toWidget(div, viewWriter, { hasSelectionHandle: true }); + const id = modelElement.getAttribute('id') || null; + const section = viewWriter.createContainerElement('section', { + class: 'alert alert-' + c, + id: id + }); + return toWidget(section, viewWriter, { hasSelectionHandle: true }); }, converterPriority: 'high' }); - conversion.for('editingDowncast').elementToElement({ model: 'alertTitle-' + c, view: (modelElement, { writer: viewWriter }) => { @@ -114,7 +125,6 @@ export default class AlertEditing extends Plugin { }, converterPriority: 'high' }); - conversion.for('editingDowncast').elementToElement({ model: 'alertBody-' + c, view: (modelElement, { writer: viewWriter }) => {