Как применить стили к таблице и ко всем ячейкам одновременно при применении к таблице - PullRequest
0 голосов
/ 24 марта 2020

Мне нужно изменить плагин таблицы Ckeditor 5, чтобы можно было применять стили к таблице и ко всем ячейкам одновременно. https://ckeditor.com/docs/ckeditor5/latest/api/table.html

Есть ли простой способ сделать это? В настоящее время я перебираю дочерние таблицы и применяю тот же стиль, но это не совсем так. Потому что значение не обновляется в полях для ячеек. Вот некоторый код, который запускается при изменении свойства таблицы.

export function downcastTableAttribute(conversion, modelAttribute, styleName) {
    conversion.for('downcast').add(dispatcher => dispatcher.on(`attribute:${modelAttribute}:table`, (evt, data, conversionApi) => {
        const {item, attributeNewValue} = data;
        const {mapper, writer} = conversionApi;

        if (!conversionApi.consumable.consume(data.item, evt.name)) {
            return;
        }

        const table = [...mapper.toViewElement(item).getChildren()].find(child => child.is('table'));

        if (attributeNewValue) {
            writer.setStyle(styleName, attributeNewValue, table);
            //Apply style to cell td too
            table._children[0]._children.forEach(row => {
                row._children.forEach(td => {
                    writer.setStyle(styleName, attributeNewValue, td);
                });
            })
            //Apply style to cell td too
        } else {
            writer.removeStyle(styleName, table);
            table._children[0]._children.forEach(row => {
                row._children.forEach(td => {
                    writer.removeStyle(styleName, td);
                });
            })
        }
    }));
}

Обновление

enter image description here

Из фотографии видно, что поле не обновляется в соответствии с реальным цветом таблицы.

Как правильно это сделать?

1 Ответ

1 голос
/ 24 марта 2020

Обновление:

Я думаю, вы также хотите setAttribute (https://ckeditor.com/docs/ckeditor5/latest/api/module_engine_view_downcastwriter-DowncastWriter.html#function -setAttribute ), в дополнение к setStyle.

Похоже, что режим редактирования свойства ячейки обновляется специально с помощью команд tableCell: https://github.com/ckeditor/ckeditor5-table/blob/ba852e31ef34132ac88a404e2df634667c33de7f/src/tablecellproperties/tablecellpropertiesui.js#L266

А те обновляются из атрибутов: https://github.com/ckeditor/ckeditor5-table/blob/ba852e31ef34132ac88a404e2df634667c33de7f/src/tablecellproperties/commands/tablecellpropertycommand.js#L41 через https://github.com/ckeditor/ckeditor5-table/blob/ba852e31ef34132ac88a404e2df634667c33de7f/src/tablecellproperties/commands/tablecellpropertycommand.js#L103


Оригинальный ответ:

Если вы применяете один и тот же стиль ко всем, почему бы не использовать use css если у вас есть фиксированное количество стилей или динамически генерируемый тег стиля, если ваши стили генерируются динамически?

...