feat: TinyMCE WYSIWYG editor styles
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
@import "tailwindcss";
|
@import "tailwindcss" theme(static) source("../../..");
|
||||||
@import "@nuxt/ui";
|
@import "@nuxt/ui";
|
||||||
|
|
||||||
@import "./a11y.css";
|
@import "./a11y.css";
|
||||||
@@ -6,3 +6,5 @@
|
|||||||
@import "./links.css";
|
@import "./links.css";
|
||||||
@import "./prose.css";
|
@import "./prose.css";
|
||||||
@import "./typography.css";
|
@import "./typography.css";
|
||||||
|
|
||||||
|
@import "./vendors/tinymce.css";
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
@apply links:link-underline;
|
@apply links:link-underline;
|
||||||
|
|
||||||
/* Paragraphs */
|
/* Paragraphs */
|
||||||
p:not([class*="paragraph-"]) { @apply paragraph-lg; }
|
p:not([class*="paragraph-"]) { @apply paragraph-base; }
|
||||||
|
|
||||||
/* Spacing */
|
/* Spacing */
|
||||||
@apply space-y-2;
|
@apply space-y-2;
|
||||||
|
|||||||
@@ -7,7 +7,4 @@
|
|||||||
|
|
||||||
/* Paragraph styles */
|
/* Paragraph styles */
|
||||||
@utility paragraph-base { @apply font-sans; }
|
@utility paragraph-base { @apply font-sans; }
|
||||||
@utility paragraph-sm { @apply paragraph-base text-sm; }
|
@utility paragraph-lead { @apply paragraph-base text-2xl; }
|
||||||
@utility paragraph-md { @apply paragraph-base text-base; }
|
|
||||||
@utility paragraph-lg { @apply paragraph-base text-lg; }
|
|
||||||
@utility paragraph-xl { @apply paragraph-base text-2xl; }
|
|
||||||
|
|||||||
3
wp-content/themes/moonshine/app/assets/css/vendors/tinymce.css
vendored
Normal file
3
wp-content/themes/moonshine/app/assets/css/vendors/tinymce.css
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
body#tinymce {
|
||||||
|
@apply prose;
|
||||||
|
}
|
||||||
2
wp-content/themes/moonshine/editor-style.css
Normal file
2
wp-content/themes/moonshine/editor-style.css
Normal file
File diff suppressed because one or more lines are too long
@@ -1,5 +1,121 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
// Enable formats (styleselect) in TinyMCE
|
||||||
|
add_filter( 'mce_buttons', 'moonshine_tinymce_styleselect' );
|
||||||
|
function moonshine_tinymce_styleselect( $buttons ) {
|
||||||
|
array_unshift( $buttons, 'styleselect' );
|
||||||
|
return $buttons;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Configure TinyMCE
|
||||||
|
add_filter( 'tiny_mce_before_init', 'moonshine_tiny_mce_before_init' );
|
||||||
|
function moonshine_tiny_mce_before_init( $settings ) {
|
||||||
|
// Reset TinyMCE editor CSS
|
||||||
|
if ( isset( $settings['content_css'] ) ) {
|
||||||
|
$content_css = explode( ',', $settings['content_css'] );
|
||||||
|
unset( $content_css[1] ); // wp-content.min.css
|
||||||
|
$settings['content_css'] = implode( ',', $content_css );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Format styles
|
||||||
|
$settings['style_formats'] = wp_json_encode(
|
||||||
|
array(
|
||||||
|
array(
|
||||||
|
'title' => __( "Link styles", 'moonshine' ),
|
||||||
|
'items' => array(// Link styles
|
||||||
|
array(
|
||||||
|
'title' => "Lien (opacité)",
|
||||||
|
'selector' => 'a',
|
||||||
|
'classes' => 'link-opacity',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'title' => __( "Inline styles", 'moonshine' ),
|
||||||
|
'items' => array(// Inline styles
|
||||||
|
array(
|
||||||
|
'title' => __( "Semi-bold", 'moonshine' ),
|
||||||
|
'inline' => 'span',
|
||||||
|
'classes' => 'font-semibold',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'title' => __( "Paragraph styles", 'moonshine' ),
|
||||||
|
'items' => array(// Paragraph styles
|
||||||
|
array(
|
||||||
|
'title' => "Paragraphe vedette",
|
||||||
|
'block' => 'p',
|
||||||
|
'classes' => 'paragraph-lead',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'title' => __( "Heading styles", 'moonshine' ),
|
||||||
|
'items' => array(// Heading styles
|
||||||
|
array(
|
||||||
|
'title' => "Titre 1",
|
||||||
|
'selector' => 'h1,h2,h3,h4',
|
||||||
|
'classes' => 'heading-1',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'title' => "Titre 2",
|
||||||
|
'selector' => 'h1,h2,h3,h4',
|
||||||
|
'classes' => 'heading-2',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'title' => "Titre 3",
|
||||||
|
'selector' => 'h1,h2,h3,h4',
|
||||||
|
'classes' => 'heading-3',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'title' => "Titre 4",
|
||||||
|
'selector' => 'h1,h2,h3,h4',
|
||||||
|
'classes' => 'heading-4',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Block styles
|
||||||
|
$settings['block_formats'] = implode(
|
||||||
|
';',
|
||||||
|
array(
|
||||||
|
'Paragraph=p',
|
||||||
|
'Heading 1=h1',
|
||||||
|
'Heading 2=h2',
|
||||||
|
'Heading 3=h3',
|
||||||
|
'Heading 4=h4',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
return $settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Override TinyMCE editor styles
|
||||||
|
add_filter( 'mce_css', 'moonshine_override_editor_styles' );
|
||||||
|
function moonshine_override_editor_styles() {
|
||||||
|
return get_stylesheet_directory_uri() . '/editor-style.css';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove default TinyMCE styles for all editors (WordPress & ACF)
|
||||||
|
add_action( 'admin_print_footer_scripts', 'moonshine_remove_tinymce_default_styles', 99 );
|
||||||
|
function moonshine_remove_tinymce_default_styles() {
|
||||||
|
?>
|
||||||
|
<script>
|
||||||
|
(function($) {
|
||||||
|
if (typeof tinymce !== 'undefined') {
|
||||||
|
tinymce.on('AddEditor', function({editor}) {
|
||||||
|
editor.on('init', function() {
|
||||||
|
$(editor.iframeElement).contents().find("link[href*='content.min.css']").remove();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})(jQuery);
|
||||||
|
</script>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
// Convert absolute URLs to relative in link query
|
// Convert absolute URLs to relative in link query
|
||||||
add_filter( 'wp_link_query', 'moonshine_tinymce_relative_urls' );
|
add_filter( 'wp_link_query', 'moonshine_tinymce_relative_urls' );
|
||||||
function moonshine_tinymce_relative_urls( $results ) {
|
function moonshine_tinymce_relative_urls( $results ) {
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import { description } from "../../../composer.json";
|
|
||||||
|
|
||||||
// https://nuxt.com/docs/api/configuration/nuxt-config
|
// https://nuxt.com/docs/api/configuration/nuxt-config
|
||||||
export default defineNuxtConfig({
|
export default defineNuxtConfig({
|
||||||
|
|
||||||
@@ -22,8 +20,8 @@ export default defineNuxtConfig({
|
|||||||
css: ["~/assets/css/_main.css"],
|
css: ["~/assets/css/_main.css"],
|
||||||
|
|
||||||
site: {
|
site: {
|
||||||
name: description,
|
url: "https://wp-headless.ledevsimple.ca",
|
||||||
url: process.env.NUXT_SITE_URL || "https://wp-headless.ledevsimple.ca",
|
name: "WP Headless",
|
||||||
defaultLocale: "fr",
|
defaultLocale: "fr",
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -57,4 +55,8 @@ export default defineNuxtConfig({
|
|||||||
saveSdl: "server/graphql/schema.graphql",
|
saveSdl: "server/graphql/schema.graphql",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
sitemap: {
|
||||||
|
zeroRuntime: true,
|
||||||
|
},
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "nuxt build",
|
"build": "nuxt build",
|
||||||
|
"editor-style": "pnpx @tailwindcss/cli -i ./app/assets/css/_main.css -o ./editor-style.css --minify",
|
||||||
"dev": "nuxt dev",
|
"dev": "nuxt dev",
|
||||||
"lint": "eslint --fix .",
|
"lint": "eslint --fix .",
|
||||||
"postinstall": "pnpm --sequential /postinstall:.*/",
|
"postinstall": "pnpm --sequential /postinstall:.*/",
|
||||||
|
|||||||
Reference in New Issue
Block a user