diff --git a/packages/ckeditor5-list/src/list/converters.ts b/packages/ckeditor5-list/src/list/converters.ts
index 050dba45f45..4b50fe86e35 100644
--- a/packages/ckeditor5-list/src/list/converters.ts
+++ b/packages/ckeditor5-list/src/list/converters.ts
@@ -349,6 +349,11 @@ export function listItemDowncastConverter(
return;
}
+ const options = {
+ ...conversionApi.options,
+ dataPipeline
+ };
+
// Use positions mapping instead of mapper.toViewElement( listItem ) to find outermost view element.
// This is for cases when mapping is using inner view element like in the code blocks (pre > code).
const viewElement = findMappedViewElement( listItem, mapper, model )!;
@@ -360,10 +365,10 @@ export function listItemDowncastConverter(
unwrapListItemBlock( viewElement, writer );
// Insert custom item marker.
- const viewRange = insertCustomMarkerElements( listItem, viewElement, strategies, writer, { dataPipeline } );
+ const viewRange = insertCustomMarkerElements( listItem, viewElement, strategies, writer, options );
// Then wrap them with the new list wrappers (UL, OL, LI).
- wrapListItemBlock( listItem, viewRange, strategies, writer, conversionApi.options );
+ wrapListItemBlock( listItem, viewRange, strategies, writer, options );
};
}
diff --git a/packages/ckeditor5-list/src/listformatting/listitemboldintegration.ts b/packages/ckeditor5-list/src/listformatting/listitemboldintegration.ts
index 695af10b6d2..e1ac5821886 100644
--- a/packages/ckeditor5-list/src/listformatting/listitemboldintegration.ts
+++ b/packages/ckeditor5-list/src/listformatting/listitemboldintegration.ts
@@ -8,6 +8,7 @@
*/
import { Plugin } from 'ckeditor5/src/core.js';
+import { env } from 'ckeditor5/src/utils.js';
import { ListEditing } from '../list/listediting.js';
import type { ListFormatting } from '../listformatting.js';
@@ -58,9 +59,14 @@ export class ListItemBoldIntegration extends Plugin {
scope: 'item',
attributeName: 'listItemBold',
- setAttributeOnDowncast( writer, value, viewElement ) {
+ setAttributeOnDowncast( writer, value, viewElement, options ) {
if ( value ) {
writer.addClass( 'ck-list-marker-bold', viewElement );
+
+ // See: https://github.com/ckeditor/ckeditor5/issues/18790.
+ if ( env.isSafari && !( options && options.dataPipeline ) ) {
+ writer.setStyle( '--ck-content-list-marker-dummy-bold', '0', viewElement );
+ }
}
}
} );
diff --git a/packages/ckeditor5-list/src/listformatting/listitemfontsizeintegration.ts b/packages/ckeditor5-list/src/listformatting/listitemfontsizeintegration.ts
index b11a49b4fd0..43416e5ce11 100644
--- a/packages/ckeditor5-list/src/listformatting/listitemfontsizeintegration.ts
+++ b/packages/ckeditor5-list/src/listformatting/listitemfontsizeintegration.ts
@@ -9,6 +9,7 @@
import { Plugin } from 'ckeditor5/src/core.js';
import type { ViewElement } from 'ckeditor5/src/engine.js';
+import { env } from 'ckeditor5/src/utils.js';
import { _normalizeFontSizeOptions } from '@ckeditor/ckeditor5-font';
import { ListEditing } from '../list/listediting.js';
@@ -62,7 +63,7 @@ export class ListItemFontSizeIntegration extends Plugin {
scope: 'item',
attributeName: 'listItemFontSize',
- setAttributeOnDowncast( writer, value: string, viewElement ) {
+ setAttributeOnDowncast( writer, value: string, viewElement, options ) {
if ( value ) {
const fontSizeOption = normalizedFontSizeOptions.find( option => option.model == value );
@@ -73,6 +74,11 @@ export class ListItemFontSizeIntegration extends Plugin {
}
else if ( fontSizeOption.view.classes ) {
writer.addClass( `ck-list-marker-font-size-${ value }`, viewElement );
+
+ // See: https://github.com/ckeditor/ckeditor5/issues/18790.
+ if ( env.isSafari && !( options && options.dataPipeline ) ) {
+ writer.setStyle( '--ck-content-list-marker-dummy-font-size', '0', viewElement );
+ }
}
} else {
writer.addClass( 'ck-list-marker-font-size', viewElement );
diff --git a/packages/ckeditor5-list/src/listformatting/listitemitalicintegration.ts b/packages/ckeditor5-list/src/listformatting/listitemitalicintegration.ts
index 3398b2a5ee9..1bb5e5db689 100644
--- a/packages/ckeditor5-list/src/listformatting/listitemitalicintegration.ts
+++ b/packages/ckeditor5-list/src/listformatting/listitemitalicintegration.ts
@@ -8,6 +8,7 @@
*/
import { Plugin } from 'ckeditor5/src/core.js';
+import { env } from 'ckeditor5/src/utils.js';
import { ListEditing } from '../list/listediting.js';
import type { ListFormatting } from '../listformatting.js';
@@ -58,9 +59,14 @@ export class ListItemItalicIntegration extends Plugin {
scope: 'item',
attributeName: 'listItemItalic',
- setAttributeOnDowncast( writer, value, viewElement ) {
+ setAttributeOnDowncast( writer, value, viewElement, options ) {
if ( value ) {
writer.addClass( 'ck-list-marker-italic', viewElement );
+
+ // See: https://github.com/ckeditor/ckeditor5/issues/18790.
+ if ( env.isSafari && !( options && options.dataPipeline ) ) {
+ writer.setStyle( '--ck-content-list-marker-dummy-italic', '0', viewElement );
+ }
}
}
} );
diff --git a/packages/ckeditor5-list/tests/listformatting/listitemboldintegration.js b/packages/ckeditor5-list/tests/listformatting/listitemboldintegration.js
index a2b9051972b..a8ecd0f3396 100644
--- a/packages/ckeditor5-list/tests/listformatting/listitemboldintegration.js
+++ b/packages/ckeditor5-list/tests/listformatting/listitemboldintegration.js
@@ -15,6 +15,7 @@ import { ClipboardPipeline } from '@ckeditor/ckeditor5-clipboard/src/clipboardpi
import { testUtils } from '@ckeditor/ckeditor5-core/tests/_utils/utils.js';
import { _setModelData, _getModelData, _stringifyModel } from '@ckeditor/ckeditor5-engine/src/dev-utils/model.js';
import { _getViewData } from '@ckeditor/ckeditor5-engine/src/dev-utils/view.js';
+import { env } from 'ckeditor5/src/utils.js';
import { stubUid } from '../list/_utils/uid.js';
import { ListEditing } from '../../src/list/listediting.js';
@@ -336,6 +337,35 @@ describe( 'ListItemBoldIntegration', () => {
''
);
} );
+
+ // See: https://github.com/ckeditor/ckeditor5/issues/18790.
+ it( 'should add dummy style for a Safari glitch (in editing pipeline only)', () => {
+ sinon.stub( env, 'isSafari' ).value( true );
+
+ _setModelData( model,
+ '