Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 20 additions & 15 deletions src/Field.php
Original file line number Diff line number Diff line change
Expand Up @@ -495,23 +495,28 @@ private function _inputHtml(mixed $value, ?ElementInterface $element = null, boo
const baseHeadings = $baseConfigJs?.heading?.options;
const configOptionHeadings = $configOptionsJs?.heading?.options;
const nativeHeadingModels = ['paragraph', 'heading1', 'heading2', 'heading3', 'heading4', 'heading5', 'heading6'];

if (baseHeadings && configOptionHeadings && baseHeadings != configOptionHeadings) {
// use configOptionHeadings as our base as those options can have custom settings
let headings = configOptionHeadings.map(function(configOptionHeadingItem) {
// if there's an option in the baseHeadings that matches the same model, then use its config
let match = baseHeadings.filter(baseHeadingItem => baseHeadingItem.model === configOptionHeadingItem.model);
// if there isn't, check if this option is fully custom (not a native heading model) - if so, allow it
if (match.length == 0 && !nativeHeadingModels.includes(configOptionHeadingItem.model)) {
match[0] = configOptionHeadingItem;
}
return match.length > 0 ? match[0] : null;
});

// filter out empties
headings = headings.filter(n => n);
let headings = new Object();

// allow all options from baseHeading
baseHeadings.forEach((baseHeading) => {
headings[baseHeading.model] = baseHeading;
});

configOptionHeadings.forEach((configOptionHeading) => {
// if a baseHeading option has a custom config in the configOptionHeadings - use that custom config
if (typeof headings[configOptionHeading.model] !== 'undefined') {
headings[configOptionHeading.model] = configOptionHeading;
}
// if custom config contains a fully custom option (not a native heading model) - allow it
if (!nativeHeadingModels.includes(configOptionHeading.model)) {
headings[configOptionHeading.model] = configOptionHeading;
}
});

// use the headings
config.heading.options = Object.values(headings);
// use the headings
config.heading.options = Object.values(headings);
}

if (!jQuery.isPlainObject(config.toolbar)) {
Expand Down
Loading