<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mr.Utils &#8211; Marcos Rego</title>
	<atom:link href="https://marcosrego.com/tag/mr-utils/feed/" rel="self" type="application/rss+xml" />
	<link>https://marcosrego.com</link>
	<description>Web Development</description>
	<lastBuildDate>Wed, 25 Dec 2024 23:58:40 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>A web developer status update to break into 2025</title>
		<link>https://marcosrego.com/blog/web-developer-status-update-2024/</link>
		
		<dc:creator><![CDATA[Marcos Rego]]></dc:creator>
		<pubDate>Wed, 25 Dec 2024 21:56:17 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[About me]]></category>
		<category><![CDATA[Freelance]]></category>
		<category><![CDATA[Mr.Dev.]]></category>
		<category><![CDATA[Mr.Dev.'s Framework]]></category>
		<category><![CDATA[Mr.Utils]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Rydoo]]></category>
		<guid isPermaLink="false">https://marcosrego.com/?p=3503</guid>

					<description><![CDATA[Hi there and happy holidays! First, let me extend a warm welcome back to the blog. It’s been far too long since my last post, and for that, I owe you an explanation. Life and work have kept me on my toes, leaving little room to nurture this space as much as I would like. [&#8230;]]]></description>
										<content:encoded><![CDATA[<span id="more-3503"></span>
<!--noteaser-->



<p>Hi there and happy holidays!</p>



<p>First, let me extend a warm welcome back to the blog. It’s been far too long since my last post, and for that, I owe you an explanation. Life and work have kept me on my toes, leaving little room to nurture this space as much as I would like. However, exciting developments are on the horizon, and I’m thrilled to share a glimpse of what’s been happening behind the scenes and what’s coming next.</p>



<h2 class="wp-block-heading"><strong>Status update on my life as a Rydoo&#8217;er</strong></h2>



<p>A significant chunk of my time has been dedicated to my work at <a href="https://marcosrego.com/websites/rydoo/" data-type="post" data-id="261" target="_blank" rel="noreferrer noopener">Rydoo</a>, where we’ve been hard at work on a complete overhaul of our website and branding. The new version of the site is now live, and I’m proud to say it’s a significant leap forward. We’ve launched the updated website in six languages, ensuring that our message resonates globally. This project has been a labor of love—a culmination of meticulous planning, collaboration, and execution. From refreshing the brand identity to fine-tuning the multilingual user experience, every detail has been a step toward creating a platform that reflects the Rydoo mission.</p>



<figure class="  wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-full"><a href="https://marcosrego.com/wp-content/uploads/2024/12/rydoo-new-homepage.png"><img fetchpriority="high" decoding="async" width="1905" height="957" data-id="3518" src="https://marcosrego.com/wp-content/uploads/2024/12/rydoo-new-homepage.png" alt="Web developer status update - Rydoo website updated with new brand" class="wp-image-3518" title="rydoo new homepage - A web developer status update to break into 2025" srcset="https://marcosrego.com/wp-content/uploads/2024/12/rydoo-new-homepage.png 1905w, https://marcosrego.com/wp-content/uploads/2024/12/rydoo-new-homepage-300x151.png 300w, https://marcosrego.com/wp-content/uploads/2024/12/rydoo-new-homepage-1024x514.png 1024w, https://marcosrego.com/wp-content/uploads/2024/12/rydoo-new-homepage-768x386.png 768w, https://marcosrego.com/wp-content/uploads/2024/12/rydoo-new-homepage-1536x772.png 1536w" sizes="(max-width: 1905px) 100vw, 1905px" /></a></figure>
</figure>



<h2 class="wp-block-heading"><strong>Freelance work and supporting the developer community</strong></h2>



<p>Beyond Rydoo, I’ve kept busy with freelance projects that have pushed my skills to new levels. You can find some of them on the <a href="https://marcosrego.com/./websites/" data-type="category" data-id="16">Websites section</a>. And of course, is also part of my freelance work, to actively support the frameworks and plugins I developed, such as: <a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a> and <a href="https://marcosrego.com/development/mrdev-framework/" data-type="post" data-id="403">Mr.Dev’s Framework</a>. These tools have been instrumental for users and developers, and ensuring they’re running smoothly and efficiently has been a priority. Whether it’s updating documentation, providing technical support, or rolling out new features, I’m deeply committed to empowering the developer community and, as a result, empower our clients and authors too.</p>



<figure class="  wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><a href="https://marcosrego.com/websites/fazer/" target="_blank" rel=" noreferrer noopener"><img decoding="async" width="1024" height="538" data-id="2945" src="https://marcosrego.com/wp-content/uploads/2021/04/fazer-site-opengraph-1024x538.jpg" alt="Fazer Website Opengraph Image" class="wp-image-2945" title="fazer site opengraph - A web developer status update to break into 2025" srcset="https://marcosrego.com/wp-content/uploads/2021/04/fazer-site-opengraph-1024x538.jpg 1024w, https://marcosrego.com/wp-content/uploads/2021/04/fazer-site-opengraph-300x158.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/04/fazer-site-opengraph-768x403.jpg 768w, https://marcosrego.com/wp-content/uploads/2021/04/fazer-site-opengraph.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="     wp-block-image size-large"><a href="https://marcosrego.com/development/mr-utils/" target="_blank" rel=" noreferrer noopener"><img decoding="async" width="1024" height="538" data-id="1029" src="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png" alt="Mr.Utils Opengraph Image" class="wp-image-1029" title="mrutils marcosrego opengraph - A web developer status update to break into 2025" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="     wp-block-image size-large"><a href="https://marcosrego.com/development/mrdev-framework/" target="_blank" rel=" noreferrer noopener"><img loading="lazy" decoding="async" width="1024" height="538" data-id="1026" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdevframework-marcosrego-opengraph-1024x538.png" alt="Mr.Dev.&#039;s Framework Opengraph Image" class="wp-image-1026" title="mrdevframework marcosrego opengraph - A web developer status update to break into 2025" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrdevframework-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrdevframework-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrdevframework-marcosrego-opengraph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrdevframework-marcosrego-opengraph.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</figure>



<aside class="  wp-block-group sidebar has-main-text-color-color has-aside-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<section class="wp-block-group has-main-text-color-color has-main-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<h3 class="   wp-block-heading has-main-text-color-color has-text-color"><strong>Do you need a website?</strong></h3>



<figure class="    wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/07/store-marcosrego-opengraph-1024x538.png" alt="Marcos Rego Store Opengraph Image" class="wp-image-1021" title="store marcosrego opengraph - A web developer status update to break into 2025" srcset="https://marcosrego.com/wp-content/uploads/2021/07/store-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/07/store-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/07/store-marcosrego-opengraph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/07/store-marcosrego-opengraph.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="  has-main-text-color-color has-text-color">If you need a <strong>website</strong>, you can check the <strong><a href="https://marcosrego.com/client-area/shop/" data-type="post" data-id="673">Shop</a></strong> on the <strong><a href="https://marcosrego.com/./client-area/" data-type="category" data-id="52">Client Area</a></strong> and get an estimation of the development cost. <strong>Pay only 20%</strong>, until the website is ready.</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="   wp-block-button"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background wp-element-button" href="https://marcosrego.com/client-area/shop/"><strong>go to THE SHOP</strong></a></div>
</div>
</div></section>
</div></aside>



<h2 class="wp-block-heading"><strong>Taking my music hobby to new heights</strong></h2>



<p>On a more personal note, I’ve been channelling my creative energy into my music hobby. <a href="https://marcosrego.com/blog/about-me/#i_love_music_and_i_compose_my_own_songs">Music has always been a passion of mine</a>, but over the past few months, I’ve taken it to a new level. I got new guitar pedals that added a lot of new sounds and opened up exciting possibilities for my unique sound. I’m exploring ways to integrate my love for music into future projects, so check my new songs on <a href="https://www.instagram.com/marcosrego91/" target="_blank" rel="noreferrer noopener">my personal Instagram</a> and <a href="https://www.youtube.com/@marcosrego1991/videos" target="_blank" rel="noreferrer noopener">Youtube</a>, and stay tuned for updates on that front.</p>



<h2 class="wp-block-heading"><strong>A web developer status update: new project in the works</strong></h2>



<p>Perhaps the most exciting update is <strong>a new web development project</strong> I’ve been quietly working on. While I can’t share too many details just yet, I’m confident it will be a game-changer in its niche. This project represents months of research and planning, using newer technologies, and I’m eager to unveil it soon. And once I do, it&#8217;s likely that I&#8217;ll have a lot more to add to this blog.</p>



<h2 class="wp-block-heading"><strong>The blog’s future</strong></h2>



<p>With this new project set to launch, I’m planning to bring the blog back to life. My vision for this space is evolving, much like my personal and professional endeavours. I’m looking forward to sharing more in-depth insights, tutorials, and updates as I embark on this next chapter. The blog will once again become a hub for tech enthusiasts, developers, and anyone who enjoys the journey of learning and creating.</p>



<h2 class="wp-block-heading"><strong>Wrapping up the web developer status update</strong></h2>



<figure class="  wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" data-id="3530" src="https://marcosrego.com/wp-content/uploads/2024/12/web-developer-status-update_marcos-rego_open-graph-1024x538.jpg" alt="Web developer status update by Marcos Rego - open graph" class="wp-image-3530" title="web developer status update marcos rego open graph - A web developer status update to break into 2025" srcset="https://marcosrego.com/wp-content/uploads/2024/12/web-developer-status-update_marcos-rego_open-graph-1024x538.jpg 1024w, https://marcosrego.com/wp-content/uploads/2024/12/web-developer-status-update_marcos-rego_open-graph-300x158.jpg 300w, https://marcosrego.com/wp-content/uploads/2024/12/web-developer-status-update_marcos-rego_open-graph-768x403.jpg 768w, https://marcosrego.com/wp-content/uploads/2024/12/web-developer-status-update_marcos-rego_open-graph.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<p>If you’ve been following the blog over the years, thank you for your patience and support. This journey has been filled with growth, challenges, and opportunities, and I’m grateful to have you here. The hiatus was necessary, but it’s paved the way for an exciting future.</p>



<p>As we prepare to welcome 2025, I’m filled with anticipation and motivation. There’s so much to share, and I’m eager to make this blog a vibrant, informative, and inspiring space once again. Here’s to a new year filled with creativity, innovation, and meaningful connections.</p>



<p>Stay tuned for updates, until then, let’s celebrate Christmas and start 2025 with the right footer!<br>🎅 🎄 🎁 🥂</p>



<h2><b>Comments</b></h2>
<div id="disqus_thread"></div>
<script>
if(mrGetCookie('cookielawinfo-checkbox-functional') == 'yes') {
    var disqus_config = function () {
        this.page.url = (location.protocol+'//'+location.host+location.pathname).replace("/account/", "/");
        this.page.identifier = document.querySelector("article").id.replace("post-", "");
    };
    
    (function() {
    var d = document, s = d.createElement('script');
    s.src = 'https://marcosrego-web.disqus.com/embed.js';
    s.setAttribute('data-timestamp', +new Date());
    (d.head || d.body).appendChild(s);
    })();
} else {
    document.querySelector('#disqus_thread').innerHTML = 'You cannot view or add comments because you did not consent to the use of functional cookies: <a class="  cli_manage_current_consent" style="cursor:pointer;">Manage your consent.</a>';
}
</script>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Create custom utility classes and breakpoints for Mr.Utils</title>
		<link>https://marcosrego.com/blog/custom-utility-classes-breakpoints/</link>
		
		<dc:creator><![CDATA[Marcos Rego]]></dc:creator>
		<pubDate>Sat, 27 Jan 2024 19:13:33 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[For developers]]></category>
		<category><![CDATA[Mr.Dev.'s Framework]]></category>
		<category><![CDATA[Mr.Utils]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://marcosrego.com/?p=3083</guid>

					<description><![CDATA[Mr.Utils includes a good preset of utility classes, for spacing, colors, sizes, components and much more. And when using it on WordPress, you and other users can even select them via the block editor. But there might be occasions, that you need to have your own custom classes, and you might want them to be [&#8230;]]]></description>
										<content:encoded><![CDATA[<span id="more-3083"></span>
<!--noteaser-->



<p>Mr.Utils includes a good preset of utility classes, for spacing, colors, sizes, components and much more. And when using it on WordPress, you and other users can even select them via the block editor.</p>



<p>But there might be occasions, that you need to have your own custom classes, and you might want them to be available on the editor also.</p>



<p>And maybe you want to use those custom classes on specific breakpoints: The 4 preset breakpoints might not be enough for you, if that&#8217;s the case, you can also create custom breakpoints.</p>



<p>On this tutorial, you will learn how you can add your own custom utility classes and breakpoints to Mr.Utils. There are two ways to do it:</p>



<ul class="wp-block-list">
<li><strong>Using Mr.Dev.&#8217;s Framework</strong> &#8211; is the easiest way on WordPress.</li>



<li><strong>Manual implementation on Mr.Utils</strong></li>
</ul>



<aside class="  wp-block-group sidebar has-main-text-color-color has-aside-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<section class="wp-block-group has-main-text-color-color has-main-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<h3 class="   has-main-text-color-color has-text-color wp-block-heading"><strong>Did you know?</strong></h3>



<figure class="    wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png" alt="Mr.Utils Opengraph Image" class="wp-image-1029" title="mrutils marcosrego opengraph - Create custom utility classes and breakpoints for Mr.Utils" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="  has-main-text-color-color has-text-color"><strong><a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a></strong> gives you a set of classes with a clear syntax, such as <em><strong>mr-phone-hide</strong></em> clearly saying to hide an element on a phone, <strong><em>mr-marginright</em></strong> to add a margin on the right side of an element and <strong><a rel="noreferrer noopener" href="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes" data-type="URL" data-id="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes" target="_blank">so much more</a></strong>&#8230;</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="   wp-block-button"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background" href="https://marcosrego.com/client-area/downloads/?product=mrutils"><strong>Get it now (free)</strong></a></div>
</div>
</div></section>
</div></aside>



<h2 class="wp-block-heading" id="using-mr-dev-s-framework-on-wordpress"><strong>Using Mr.Dev.&#8217;s Framework on WordPress</strong></h2>



<h3 class="  wp-block-heading" id="create-custom-utility-classes-using-mr-dev-s-framework"><strong>Create custom utility classes using Mr.Dev.&#8217;s Framework</strong></h3>



<ol class="  wp-block-list">
<li>Once on WordPress, go to &#8220;Settings&#8221; &gt; &#8220;Mr.Dev.&#8221; (or your website name, depending of the configuration).</li>



<li>Go to the &#8220;Utilities&#8221; tab (If the tab is not available, you&#8217;ll need to enable the option on the &#8220;Configuration&#8221; tab, at &#8220;Utilities configuration&#8221;).</li>



<li>On &#8220;Default options&#8221; click on &#8220;Choose available features&#8221; and select &#8220;Custom&#8221; on each breakpoint where you&#8217;ll want your custom classes to be available.</li>



<li>Below on &#8220;Custom Utilities&#8221;, click on + to add the first class.</li>



<li>Choose the class name (the class will be generated from this name).</li>



<li>Choose the CSS property (A list of some properties will appear while you write, those properties can be used for the block editor. You can still use any CSS property you want, even the ones not listed, the only downside is those might not appear on the block editor, you&#8217;ll need to copy &amp; paste the class).</li>



<li>Choose the CSS variable / value (If you have the &#8220;Styles&#8221; tab enabled, you can create the variables there, they will appear in here after. And you don&#8217;t have to use variables, you can also write the intended values directly here if you prefer.)</li>
</ol>



<p>Tip: If you want a class to have multiple properties, you can do it, by having the same class name repeated multiple times.</p>



<figure class="  wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" data-id="3104" src="https://marcosrego.com/wp-content/uploads/2024/01/mrdev-framework_mr-utils_custom-classes-1024x538.jpg" alt="custom utility classes on Mr.Utils with Mr.Dev.&#039;s Framework" class="wp-image-3104" title="mrdev framework mr utils custom classes - Create custom utility classes and breakpoints for Mr.Utils" srcset="https://marcosrego.com/wp-content/uploads/2024/01/mrdev-framework_mr-utils_custom-classes-1024x538.jpg 1024w, https://marcosrego.com/wp-content/uploads/2024/01/mrdev-framework_mr-utils_custom-classes-300x158.jpg 300w, https://marcosrego.com/wp-content/uploads/2024/01/mrdev-framework_mr-utils_custom-classes-768x403.jpg 768w, https://marcosrego.com/wp-content/uploads/2024/01/mrdev-framework_mr-utils_custom-classes.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<h4 class="  wp-block-heading" id="using-the-custom-utility-classes"><strong>Using the custom utility classes</strong></h4>



<p>Once you create the custom utility classes, you will see inputs showing how the class looks for each breakpoint (that you selected on the 3rd step). You can click on the input to copy the class and then paste into your HTML, CSS, etc. </p>



<p>If the option &#8220;Show utilities on the block editor&#8221; is active, you can use the block editor to use the custom classes, for options related to spacing, coloring and sizes.</p>



<figure class="  wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="772" height="250" data-id="2289" src="https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1.png" alt="Mr.Utils options on WordPress block editor" class="wp-image-2289" title="banner 772x250 1 - Create custom utility classes and breakpoints for Mr.Utils" srcset="https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1.png 772w, https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1-300x97.png 300w, https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1-768x249.png 768w" sizes="auto, (max-width: 772px) 100vw, 772px" /><figcaption class="wp-element-caption">Mr.Utils options on WordPress block editor</figcaption></figure>
</figure>



<h3 class="  wp-block-heading" id="add-custom-breakpoints-using-mr-dev-s-framework"><strong>Add custom breakpoints using Mr.Dev.&#8217;s Framework</strong></h3>



<ol class="  wp-block-list">
<li>Once on WordPress, go to &#8220;Settings&#8221; &gt; &#8220;Mr.Dev.&#8221; (or your website name, depending of the configuration).</li>



<li>Go to the &#8220;Styles&#8221; tab (If the tab is not available, you&#8217;ll need to enable the option on the &#8220;Configuration&#8221; tab, at &#8220;Styles configuration&#8221;).</li>



<li>Scroll down to the &#8220;Breakpoints&#8221; section, where you will find 4 preset breakpoints already created, that you can change the values.</li>



<li>Click on &#8220;+&#8221; on &#8220;Number of Breakpoints&#8221; to add a custom breakpoint.</li>



<li>Choose the name for the breakpoint and define the min/max &#8211; width/height. </li>
</ol>



<figure class="  wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-6 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="951" height="963" data-id="2687" src="https://marcosrego.com/wp-content/uploads/2022/08/ressanogarciaarq-styles-base-breakpoints.jpg" alt="ressanogarciaarq styles base breakpoints" class="wp-image-2687" title="ressanogarciaarq styles base breakpoints - Create custom utility classes and breakpoints for Mr.Utils" srcset="https://marcosrego.com/wp-content/uploads/2022/08/ressanogarciaarq-styles-base-breakpoints.jpg 951w, https://marcosrego.com/wp-content/uploads/2022/08/ressanogarciaarq-styles-base-breakpoints-296x300.jpg 296w, https://marcosrego.com/wp-content/uploads/2022/08/ressanogarciaarq-styles-base-breakpoints-768x778.jpg 768w" sizes="auto, (max-width: 951px) 100vw, 951px" /><figcaption class="wp-element-caption">Example of using custom breakpoints on <a href="https://marcosrego.com/websites/ressanogarcia/" data-type="post" data-id="1795">Ressano Garcia Aquitectos website</a>.</figcaption></figure>
</figure>



<h4 class="  wp-block-heading" id="using-the-custom-breakpoints"><strong>Using the custom breakpoints</strong></h4>



<p>Once you create the custom breakpoints, you can select them on the &#8220;Utilities&#8221; tab or/and on the &#8220;Files / Media&#8221; tab. </p>



<p>On the &#8220;Files/Media&#8221; tab, you can choose on which breakpoints each spreadsheet should load (In production, do not forget to use a cache plugin with minifying options, to combine these spreadsheets, while keeping the breakpoints and their media queries).</p>



<figure class="  wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="693" data-id="956" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_files-1024x693.jpg" alt="Mr.Dev.&#039;s Framework - Files page" class="wp-image-956" title="mrdev framework files - Create custom utility classes and breakpoints for Mr.Utils" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_files-1024x693.jpg 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_files-300x203.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_files-768x520.jpg 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_files.jpg 1342w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">On the Files / Media tab you can decide on which breakpoints a stylesheet should load.</figcaption></figure>
</figure>



<h2 class="wp-block-heading" id="manual-implementation-on-mr-utils"><strong>Manual implementation on Mr.Utils</strong></h2>



<h3 class="  wp-block-heading" id="create-custom-utility-classes"><strong>Create custom utility classes</strong></h3>



<ol class="  wp-block-list">
<li><a href="https://marcosrego.com/client-area/downloads/?product=mrutils" target="_blank" data-type="link" data-id="https://marcosrego.com/client-area/downloads/?product=mrutils" rel="noreferrer noopener">Download Mr.Utils.</a></li>



<li>Go to &#8220;dev/css&#8221;. Each folder located in here corresponds to one breakpoint (except for &#8220;utils&#8221; that is global).</li>



<li>Go to each folder/breakpoint where you want your custom classes to be available and create a utils_<em>breakpoint</em>_custom.css file on each one.</li>



<li>Open all the created files and add a class, following the utilities rules. Example: &#8220;<code>.mr-<em>breakpoint</em>-fontsize10 { }</code>&#8220;.</li>



<li>Add the intended CSS properties to each class. Example: &#8220;<code>font-size: var(--font-size-10,60px);</code>&#8220;.</li>



<li>Once you created all classes on all utils_custom.css, go to the main file on each folder/breakpoint, titled &#8220;utils_<em>breakpoint</em>.css&#8221;.</li>



<li>Add the following line: <code>@import url("utils_<em>breakpoint</em>_custom.css"); </code>Replacing &#8220;breakpoint&#8221; with the actual breakpoint name.</li>



<li><strong>For development</strong>, you can load each of the main &#8220;dev/css/utils_<em>breakpoint</em>/utils_<em>breakpoint</em>.css&#8221; files, with media queries. <br><strong>For production,</strong> you should use your favourite compiler, to compile the main files into the main &#8220;css&#8221; folder (located in the root folder). Use media queries to load all files inside that folder and then, use a page/html minifier to join all those media queried files into one.</li>
</ol>



<h3 class="  wp-block-heading" id="add-custom-breakpoints"><strong>Add custom breakpoints</strong></h3>



<p>With more files you can add more breakpoint names and media queries:</p>



<ol class="  wp-block-list">
<li>Start by copying one of the given breakpoint files. For this example, copy the file &#8216;utils_desktop.css&#8217;.</li>



<li>Change the file name to the name of your breakpoint. For this example rename it &#8216;utils_notmobile.css&#8217; .</li>



<li>Use your favorite code editor to find and replace all instances of &#8216;-desktop-&#8216; with &#8216;-notmobile-&#8216;.</li>



<li>Save the file next to other breakpoints and load it with your own media query. For this example, the easiest would be to add the following to the&nbsp;<code>&lt;head&gt;</code>&nbsp;section:<br><code>&lt;link rel='stylesheet' href='mr-utils/css/utils_notmobile.css' media='(min-width: 768px)' /&gt;</code></li>
</ol>



<h2><b>Comments</b></h2>
<div id="disqus_thread"></div>
<script>
if(mrGetCookie('cookielawinfo-checkbox-functional') == 'yes') {
    var disqus_config = function () {
        this.page.url = (location.protocol+'//'+location.host+location.pathname).replace("/account/", "/");
        this.page.identifier = document.querySelector("article").id.replace("post-", "");
    };
    
    (function() {
    var d = document, s = d.createElement('script');
    s.src = 'https://marcosrego-web.disqus.com/embed.js';
    s.setAttribute('data-timestamp', +new Date());
    (d.head || d.body).appendChild(s);
    })();
} else {
    document.querySelector('#disqus_thread').innerHTML = 'You cannot view or add comments because you did not consent to the use of functional cookies: <a class="  cli_manage_current_consent" style="cursor:pointer;">Manage your consent.</a>';
}
</script>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to style a datalist and its options?</title>
		<link>https://marcosrego.com/blog/style-datalist-options/</link>
		
		<dc:creator><![CDATA[Marcos Rego]]></dc:creator>
		<pubDate>Tue, 27 Dec 2022 20:10:17 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[For developers]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mr.Utils]]></category>
		<category><![CDATA[Tips and tricks]]></category>
		<category><![CDATA[Tutorial]]></category>
		<guid isPermaLink="false">https://marcosrego.com/?p=2875</guid>

					<description><![CDATA[If you ever tried to change the look and feel of a HTML5 datalist but couldn’t, then this post might be your (delayed) Christmas present 🎄🎁 (I hope you had a great one and close to the ones you love the most)! What’s the problem of styling a HTML5 datalist? At the moment of writing, [&#8230;]]]></description>
										<content:encoded><![CDATA[<span id="more-2875"></span>
<!--noteaser-->



<p>If you ever tried to change the look and feel of a HTML5 datalist but couldn’t, then this post might be your (delayed) Christmas present 🎄🎁 (I hope you had a great one and close to the ones you love the most)!</p>



<aside class="  wp-block-group sidebar has-main-text-color-color has-aside-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<section class="wp-block-group has-main-text-color-color has-main-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<h3 class="   has-main-text-color-color has-text-color wp-block-heading"><strong>Did you know?</strong></h3>



<figure class="    wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png" alt="Mr.Utils Opengraph Image" class="wp-image-1029" title="mrutils marcosrego opengraph - How to style a datalist and its options?" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="  has-main-text-color-color has-text-color"><strong><a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a></strong> gives you a set of classes with a clear syntax, such as <em><strong>mr-phone-hide</strong></em> clearly saying to hide an element on a phone, <strong><em>mr-marginright</em></strong> to add a margin on the right side of an element and <strong><a rel="noreferrer noopener" href="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes" data-type="URL" data-id="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes" target="_blank">so much more</a></strong>&#8230;</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="   wp-block-button"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background" href="https://marcosrego.com/client-area/downloads/?product=mrutils"><strong>Get it now (free)</strong></a></div>
</div>
</div></section>
</div></aside>



<h2 class="wp-block-heading"><strong>What’s the problem of styling a HTML5 datalist?</strong></h2>



<p>At the moment of writing, it’s not possible to style a datalist directly.</p>



<p>Hopefully in the future, we will be able to simply use normal CSS like this:</p>



<pre class="wp-block-code"><code>.mr-datalist &gt; * {
    background-color: var(--dark);
    color: var(--light);
}</code></pre>



<p>For now, if you still want to use datalist, there are two ways to do it:</p>



<ul class="wp-block-list">
<li><a href="#the_easiest_way_to_style_a_datalist" data-type="internal" data-id="#the_easiest_way_to_style_a_datalist">An easy way, using a class from a front-end toolkit.</a></li>



<li><a href="#style_a_datalist_with_code">A more manual way, using Vanilla JavaScript.</a></li>
</ul>



<p>The CSS code above will work after implementing any of those 2 options.</p>



<p>Some things that might be important to you:&nbsp;</p>



<ul class="wp-block-list">
<li>These methods might not work on iOS versions prior to the 13th. On those devices, the datalist will not change, working as it does by default.</li>



<li>Both methods should be future-proof. When HTML5 data lists become easier to style, you can remove the front-end toolkit or the JavaScript code. Just keep the classes and the CSS as is.</li>
</ul>



<p>With that aside, let’s move on with this tutorial…</p>



<h2 class="wp-block-heading"><strong>The easiest way to style a datalist</strong></h2>



<p>You can use a front-end toolkit such as <strong><a href="https://marcosrego.com/development/mr-utils/" target="_blank" data-type="post" data-id="473" rel="noreferrer noopener">Mr.Utils</a></strong>.</p>



<p>All you have to do is, make sure you are adding the global JavaScript file <em>js/utils.js</em> in your page (or if you don’t want to load the entire toolkit, you can individually add <em>dev/js/utils/utils_components.js</em>).</p>



<p>After that, you need to add the correct class <strong>.mr-datalist</strong> to your datalist <em>(not to the input)</em> and it will magically transform it into a “search” component.</p>



<p>You can then style it with a <a href="#whats_the_problem_of_styling_a_html5_datalist">CSS code similar to the one shown before</a>.</p>



<h2 class="wp-block-heading"><strong>Style a datalist with code</strong></h2>



<p>I mentioned that the easiest way of implementation works like magic, but of course there’s no magic behind it at all, just the correct JavaScript code.</p>



<p>In this post, I’ll share a simplified version of that code with you.</p>



<p>You can either follow the steps or <strong><a href="#gist_full_code_on_how_to_style_a_datalist">jump directly to the Gist full code</a></strong>.</p>



<p>Feel free to change it to your specific needs.</p>



<h3 class="  wp-block-heading"><strong>1- Transform the datalist into an element that can be styled.</strong></h3>



<pre class="wp-block-code"><code>document.addEventListener("DOMContentLoaded", function () {
  const mrDataLists = document.querySelectorAll(".mr-datalist");
  for (let id = 0; id &lt; mrDataLists.length; id++) {
    let mrDataList = mrDataLists&#91;id];
    let mrDataListUL = "";
    let mrDataListClone = "";
 
    mrDataListClone =
      mrDataList
        .cloneNode(true)
        .innerHTML.replaceAll("&lt;option", "&lt;li")
        .replaceAll("&lt;/option&gt;", "&lt;/li&gt;");
    mrDataListUL = document.createElement("ul");
    mrDataListUL.id = mrDataList.id;
    mrDataListUL.className = mrDataList.className;
    mrDataListUL.innerHTML = mrDataListClone;
 
    mrDataList.replaceWith(mrDataListUL);
  }
}
</code></pre>



<p>In this first step, we grab all data lists that have the class <em>.mr-datalist, </em>but you can change it to your own.</p>



<p>You can even grab all data lists without exception, by replacing the class <em>.mr-datalist</em> with the property <em>datalist, </em>on the <em>querySelectorAll </em>(Don’t forget to change the CSS code accordingly at the end).</p>



<p>In this example, we transform the datalist into an unordered list. You can change that if you wish, but it should be an element with direct children. Each direct child will be a datalist option.</p>



<p>The <em>replaceWith </em>at the end finishes the transformation, but we are not done yet.</p>



<p>We need to create a similar “search” functionality to the one the HTML5 datalist has.</p>



<h3 class="  wp-block-heading"><strong>2- Make the input find content on the element.</strong></h3>



<pre class="wp-block-code"><code>document.addEventListener("keyup", function (e) {
  let mrDataListID = "mr-datalist";
  if (e.target.matches('input&#91;list="'+mrDataListID+'"]')) {
    mrSearch(document.getElementById(mrDataListID), e.target);
  }
  e.stopPropagation();
});
</code></pre>



<p>In here, I’m assuming we know the ID of the datalist, and that we have it on the input “list” attribute. I’m assuming that because those are needed for the original datalist to work.<br>In this example, the ID is <em>mr-datalist,</em> set on the mrDataListID variable.</p>



<p>If for some reason you don’t know the ID, there are alternative ways to do it. On Mr.Utils for example, the “Search” component removes the original input, creates a new one and uses <em>nextElementSibling</em>. It does that for a reason, you can check that on the <a href="https://github.com/marcosrego-web/mr-utils/blob/master/dev/js/utils/utils_components.js" target="_blank" rel="noreferrer noopener nofollow">GitHub repository</a>.</p>



<p>As you might notice, we are calling the function <em>mrSearch</em>, which will do the heavy work.&nbsp;</p>



<p>Here is the function simplified, feel free to rename it to anything you want:</p>



<pre class="wp-block-code"><code>function mrSearch(t, e) {
  //t = Datalist
  //e = Input with list attribute
  let mrSearchChildren = t.children;
  if (mrSearchChildren) {
    if (e.value !== "") {
      t.style.removeProperty("display");
      for (let id = 0; id &lt; mrSearchChildren.length; id++) {
        let mrSearchChild = mrSearchChildren&#91;id];
        if (mrSearchChild.hasAttribute("value")) {
          //If the child does not contain any text, show the value as text.
          if (!mrSearchChild.innerText) {
            mrSearchChild.innerText = mrSearchChild.getAttribute("value");
          }
 
          //Change the input value when clicking on the child.
          mrSearchChild.addEventListener("click", function () {
            e.value = mrSearchChild.getAttribute("value");
          });
        }
        mrSearchChild.style.display = "none";
 
        //Checking the child outerHTML because I want to search text also inside the value attribute. Convert in lowercase to not be case sensitive.
        if (
          mrSearchChild.outerHTML
            .toLowerCase()
            .replace(/&#91;^a-zA-Z0-9 ]/g, "")
            .includes(e.value.toLowerCase().replace(/&#91;^a-zA-Z0-9 ]/g, ""))
        ) {
          mrSearchChild.style.removeProperty("display");
        }
      }
    } else {
      t.style.display = "none";
    }
  }
}

</code></pre>



<p>Here we changed the Input value when clicking on the element child <em>(the datalist option that we transformed)</em> and we’ll make the search case-insensitive.</p>



<p>Check the comments inside the code to better understand which parts replicate which datalist “search” feature.</p>



<p>Extra: If you have full control over the original datalist, you probably added a value and text to each option. If you don’t have, then this code as you covered, it copies the value into the text when no text is found.</p>



<p><strong>And that’s it! </strong>Now you replicated most datalists’ functionalities and can start styling the element, with a <a href="#whats_the_problem_of_styling_a_html5_datalist">CSS code similar to the one shown before</a>.</p>



<h3 class="  wp-block-heading"><strong>3- Take it to the next level (Optional and Advanced)</strong></h3>



<p>If you feel inspired, now that you have full control over the code, you can add extra features! Features that not even the original datalist has.</p>



<p>For example:</p>



<ul class="wp-block-list">
<li>Show a message when no result is found.</li>



<li>Bold the text while it is found on the results.</li>



<li>If no exact match is found, search by each keyword instead <em>(You can also show a message in that situation)</em>.</li>



<li>Show results only after a minimum number of characters <em>(This is a good idea to avoid connection words and code properties)</em>.</li>
</ul>



<p>I did many of those features for <strong>Mr.Utils</strong>, <strong><a href="https://github.com/marcosrego-web/mr-utils/blob/master/dev/js/utils/utils_components.js#L356" target="_blank" rel="noreferrer noopener nofollow">you can check the part of the code here</a></strong>.</p>



<p>Might also be a good idea, to track pressing keyboard arrow keys, to select the results and improve accessibility.</p>



<h3 class="  wp-block-heading"><strong>Gist full code on how to style a datalist</strong></h3>



<script src="https://gist.github.com/marcosrego-web/943e82bbd6243e8f38af4ff5ce081dc6.js"></script>



<h2 class="wp-block-heading"><strong>Working example of styling datalists</strong></h2>



<p>I did something very similar to the methods explained above for <strong><a href="https://www.rydoo.com/compliance/" target="_blank" data-type="URL" data-id="https://www.rydoo.com/compliance/" rel="noreferrer noopener nofollow">Rydoo’s Compliance Centre</a></strong> and <strong><a href="https://www.rydoo.com/marketplace/" data-type="URL" data-id="https://www.rydoo.com/marketplace/" target="_blank" rel="noreferrer noopener nofollow">Marketplace</a></strong>.</p>



<figure class="  wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-8 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><a href="https://www.rydoo.com/compliance/" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="1024" height="522" data-id="2727" src="https://marcosrego.com/wp-content/uploads/2021/08/Rydoo-Compliance_Centre-1024x522.png" alt="Rydoo-Compliance_Centre" class="wp-image-2727" title="Rydoo Compliance Centre - How to style a datalist and its options?" srcset="https://marcosrego.com/wp-content/uploads/2021/08/Rydoo-Compliance_Centre-1024x522.png 1024w, https://marcosrego.com/wp-content/uploads/2021/08/Rydoo-Compliance_Centre-300x153.png 300w, https://marcosrego.com/wp-content/uploads/2021/08/Rydoo-Compliance_Centre-768x391.png 768w, https://marcosrego.com/wp-content/uploads/2021/08/Rydoo-Compliance_Centre-1536x783.png 1536w, https://marcosrego.com/wp-content/uploads/2021/08/Rydoo-Compliance_Centre.png 1902w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Rydoo&#8217;s Compliance Centre</figcaption></figure>



<figure class="     wp-block-image size-large"><a href="https://www.rydoo.com/marketplace/" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="1024" height="522" data-id="2724" src="https://marcosrego.com/wp-content/uploads/2021/08/Rydoo-Marketplace-1024x522.png" alt="Rydoo-Marketplace" class="wp-image-2724" title="Rydoo Marketplace - How to style a datalist and its options?" srcset="https://marcosrego.com/wp-content/uploads/2021/08/Rydoo-Marketplace-1024x522.png 1024w, https://marcosrego.com/wp-content/uploads/2021/08/Rydoo-Marketplace-300x153.png 300w, https://marcosrego.com/wp-content/uploads/2021/08/Rydoo-Marketplace-768x391.png 768w, https://marcosrego.com/wp-content/uploads/2021/08/Rydoo-Marketplace-1536x783.png 1536w, https://marcosrego.com/wp-content/uploads/2021/08/Rydoo-Marketplace.png 1902w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Rydoo&#8217;s Marketplace</figcaption></figure>
</figure>



<p>I hope you enjoyed this post! I&#8217;m not sure that I will be writing something more on the blog before entering the new year, so enjoy the celebrations and <strong>let&#8217;s enter 2023 with the right footer!!</strong> 🥂🎆🥳</p>



<h2><b>Comments</b></h2>
<div id="disqus_thread"></div>
<script>
if(mrGetCookie('cookielawinfo-checkbox-functional') == 'yes') {
    var disqus_config = function () {
        this.page.url = (location.protocol+'//'+location.host+location.pathname).replace("/account/", "/");
        this.page.identifier = document.querySelector("article").id.replace("post-", "");
    };
    
    (function() {
    var d = document, s = d.createElement('script');
    s.src = 'https://marcosrego-web.disqus.com/embed.js';
    s.setAttribute('data-timestamp', +new Date());
    (d.head || d.body).appendChild(s);
    })();
} else {
    document.querySelector('#disqus_thread').innerHTML = 'You cannot view or add comments because you did not consent to the use of functional cookies: <a class="  cli_manage_current_consent" style="cursor:pointer;">Manage your consent.</a>';
}
</script>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to avoid (CLS) Layout Shift when using JS Components</title>
		<link>https://marcosrego.com/blog/avoid-layout-shift-mrutils/</link>
		
		<dc:creator><![CDATA[Marcos Rego]]></dc:creator>
		<pubDate>Mon, 06 Jun 2022 22:26:37 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[For developers]]></category>
		<category><![CDATA[Mr.Utils]]></category>
		<category><![CDATA[Toolkit]]></category>
		<category><![CDATA[Tutorial]]></category>
		<guid isPermaLink="false">https://marcosrego.com/?p=2627</guid>

					<description><![CDATA[When using components that are based on JavaScript, you might notice a layout shift on your content (CLS), especially if you delay the start of JavaScript in some way. In that situation, you&#8217;ll see the initial look of the elements until JavaScript kicks in. But of course, delaying JavaScript until user interaction or after some [&#8230;]]]></description>
										<content:encoded><![CDATA[<span id="more-2627"></span>
<!--noteaser-->



<p>When using components that are based on JavaScript, you might notice a layout shift on your content (CLS), especially if you delay the start of JavaScript in some way. In that situation, you&#8217;ll see the initial look of the elements until JavaScript kicks in.</p>



<p>But of course, delaying JavaScript until user interaction or after some seconds it&#8217;s a good practice and a good trick to increase the score of a website on<a href="https://pagespeed.web.dev/" data-type="URL" data-id="https://pagespeed.web.dev/" target="_blank" rel="noreferrer noopener"> pagespeed insights</a>. So the better option is to find ways to avoid layout shifts, fortunately it is not that complicated.</p>



<p>For this tutorial, I&#8217;ll be focusing on <a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a> JS components, but the same logic applies to other tools.</p>



<div style="height:40px" aria-hidden="true" class="  wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>Understand how general JS Components work</strong></h2>



<p>The way Mr.Utils JavaScript components work is by adding the necessary CSS inline properties to the element after page load, but only if the element doesn&#8217;t have a utility class that already uses some of those properties.</p>



<p>And as you might know, HTML classes don&#8217;t rely on JavaScript to apply the style of CSS properties. We&#8217;ll use that fact to our benefit, to avoid the layout shift when delaying JavaScript in this situation.</p>



<h2 class="wp-block-heading"><strong>Fixing the Content Layout Shift</strong></h2>



<h3 class="  wp-block-heading"><strong>Fix CLS for components that add properties</strong></h3>



<p>Components such as <strong>Mr.Utils Swipe component</strong> add the following inline properties to the element:</p>



<pre class="wp-block-code"><code>display: -webkit-inline-box;
flex-wrap: unset !important;
overflow-x: scroll !important;
-webkit-overflow-scrolling: touch !important;
overflow-y: hidden;</code></pre>



<p>But there&#8217;s one utility class that does the exact same thing, so all you need to do is to add the following utility class after adding the swipe class:</p>



<pre class="wp-block-code"><code>mr-horizontalscroll</code></pre>



<p>If you are using Mr.Utils as a plugin: Instead of adding the class, you can select the option at Misc &gt; Scroll &gt; Horizontal Scroll.</p>



<aside class="  wp-block-group sidebar has-main-text-color-color has-aside-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<section class="wp-block-group has-main-text-color-color has-main-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<h3 class="   has-main-text-color-color has-text-color wp-block-heading"><strong>Did you know?</strong></h3>



<figure class="    wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png" alt="Mr.Utils Opengraph Image" class="wp-image-1029" title="mrutils marcosrego opengraph - How to avoid (CLS) Layout Shift when using JS Components" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="  has-main-text-color-color has-text-color"><strong><a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a></strong> can be installed as a <strong>WordPress plugin</strong>.<br>Give to the <strong>block editor</strong> super-powers such as <strong>pagination or components</strong> and apply changes <strong>depending of the device</strong>!</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="   wp-block-button"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background" href="https://marcosrego.com/client-area/downloads/?product=mrutils"><strong>Get it now (free)</strong></a></div>
</div>
</div></section>
</div></aside>



<p>In the end, you&#8217;ll have the following classes on your element:</p>



<pre class="wp-block-code"><code>mr-swipe mr-horizontalscroll</code></pre>



<p>By doing this, the properties will be added before JavaScript runs, and you&#8217;ll be avoiding the layout shift, without losing the benefits of the swipe component (such as the ability to drag with a mouse).</p>



<h3 class="  wp-block-heading"><strong>Fix CLS for components that create new elements</strong></h3>



<p>Components such as <strong>Tabs </strong>and navigation options on <strong>Pagination (Radio, Arrows, Dropdown)</strong> add new elements to the page if those elements do not exist yet. So, the way to avoid layout shifting when JavaScript starts on this situation, is to create the elements manually, let&#8217;s take a look at that:</p>



<p>If you want to use the exact same elements that Mr.Utils&#8217; JavaScript would create, you can use the below HTML Codes after the element <em>(or before when using <a href="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes#components" target="_blank" rel="noopener">the proper class</a>)</em>.</p>



<p><strong>Pagination Arrows</strong></p>



<pre class="wp-block-code"><code>&lt;div class="mr-pagination"&gt;
&lt;button class="mr-arrows mr-prev"&gt;⇦&lt;/button&gt;
&lt;button class="mr-arrows mr-next"&gt;⇨&lt;/button&gt;
&lt;/div&gt;</code></pre>



<p><strong>Pagination Radio Buttons</strong></p>



<p><em>Duplicate the last &#8220;mr-radio&#8221; to match the number of pages</em>.</p>



<pre class="wp-block-code"><code>&lt;div class="mr-pagination"&gt;
&lt;span class="mr-radios"&gt;
&lt;input name="mr-radio" title="1/2" class="mr-radio" type="radio" value="1" checked="checked"&gt;
&lt;input name="mr-radio" title="2/2" class="mr-radio" type="radio" value="2"&gt;
&lt;/span&gt;
&lt;/div&gt;</code></pre>



<p><strong>Pagination Dropdown</strong></p>



<p><em>Duplicate the last &#8220;option&#8221; to match the number of pages</em>.</p>



<pre class="wp-block-code"><code>&lt;div class="mr-pagination"&gt;
&lt;select class="mr-pageselect" title="/2"&gt;
&lt;option value="1"&gt;1&lt;/option&gt;
&lt;option value="2"&gt;2&lt;/option&gt;
&lt;/select&gt;
&lt;/div&gt;</code></pre>



<p><strong>Tabs</strong></p>



<p><em>Duplicate the last &#8220;mr-tab&#8221; to match the number of pages</em>.</p>



<pre class="wp-block-code"><code>&lt;div class="mr-tabsnav mr-horizontalscroll"&gt;
&lt;button class="mr-tab mr-active"&gt;Tab 01&lt;/button&gt;
&lt;button class="mr-tab"&gt;Tab 02&lt;/button&gt;
&lt;/div&gt;</code></pre>



<p>If you want a bit more control or if you use site-builders, you can also create those new elements differently, as long as the main/parent element uses the class <em>mr-pagination</em> or <em>mr-tabsnav</em>.</p>



<p>If you are using Mr.Utils as a plugin on WordPress, you can use the block editor to create buttons for the Tabs component. Then, by selecting the buttons&#8217; container, on Utilities choose Components &gt; Tabs Navigation.</p>



<h2 class="wp-block-heading"><strong>Live example of fixing Tabs CLS</strong></h2>



<p>A good live example of this is on <a href="https://shop.itemzero.com/" data-type="URL" data-id="https://shop.itemzero.com/" target="_blank" rel="noreferrer noopener">Itemzero&#8217;s Shop</a>, the tabs were created using the block editor and Mr.Utils.</p>



<figure class="  wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-9 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="572" data-id="1611" src="https://marcosrego.com/wp-content/uploads/2021/04/itemzero-mrdev_widget-tabs-1024x572.jpg" alt="Itemzero&#039;s shop uses tabs" class="wp-image-1611" title="itemzero mrdev widget tabs - How to avoid (CLS) Layout Shift when using JS Components" srcset="https://marcosrego.com/wp-content/uploads/2021/04/itemzero-mrdev_widget-tabs-1024x572.jpg 1024w, https://marcosrego.com/wp-content/uploads/2021/04/itemzero-mrdev_widget-tabs-300x168.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/04/itemzero-mrdev_widget-tabs-768x429.jpg 768w, https://marcosrego.com/wp-content/uploads/2021/04/itemzero-mrdev_widget-tabs-1536x858.jpg 1536w, https://marcosrego.com/wp-content/uploads/2021/04/itemzero-mrdev_widget-tabs.jpg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Itemzero&#8217;s shop uses tabs from Mr.Utils components.</figcaption></figure>
</figure>



<div style="height:40px" aria-hidden="true" class="  wp-block-spacer"></div>



<p>And that&#8217;s it! Those are some ways to avoid layout shift when using JS Components.</p>



<div style="height:40px" aria-hidden="true" class="  wp-block-spacer"></div>



<h2><b>Comments</b></h2>
<div id="disqus_thread"></div>
<script>
if(mrGetCookie('cookielawinfo-checkbox-functional') == 'yes') {
    var disqus_config = function () {
        this.page.url = (location.protocol+'//'+location.host+location.pathname).replace("/account/", "/");
        this.page.identifier = document.querySelector("article").id.replace("post-", "");
    };
    
    (function() {
    var d = document, s = d.createElement('script');
    s.src = 'https://marcosrego-web.disqus.com/embed.js';
    s.setAttribute('data-timestamp', +new Date());
    (d.head || d.body).appendChild(s);
    })();
} else {
    document.querySelector('#disqus_thread').innerHTML = 'You cannot view or add comments because you did not consent to the use of functional cookies: <a class="  cli_manage_current_consent" style="cursor:pointer;">Manage your consent.</a>';
}
</script>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>More than 6 essential mouseover effects for the block editor</title>
		<link>https://marcosrego.com/blog/block-editor-mouseover-effects/</link>
		
		<dc:creator><![CDATA[Marcos Rego]]></dc:creator>
		<pubDate>Thu, 21 Apr 2022 23:50:55 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Block editor]]></category>
		<category><![CDATA[Mr.Utils]]></category>
		<category><![CDATA[Tips and tricks]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://marcosrego.com/?p=2567</guid>

					<description><![CDATA[Know how to add mouseover effects such as zoom, ease in-out, font-size and others, when mouse hovering a block on WordPress using Mr.Utils&#8230; Get mouseover options on the block editor One of the cool features of Mr.Utils is the ability to easily install it as a WordPress plugin for free. When you do so, an [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Know how to add mouseover effects such as zoom, ease in-out, font-size and others, when mouse hovering a block on WordPress using Mr.Utils&#8230;</p>



<span id="more-2567"></span>



<aside class="  wp-block-group sidebar has-main-text-color-color has-aside-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<section class="wp-block-group has-main-text-color-color has-main-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<h3 class="   has-main-text-color-color has-text-color wp-block-heading"><strong>Did you know?</strong></h3>



<figure class="    wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png" alt="Mr.Utils Opengraph Image" class="wp-image-1029" title="mrutils marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="  has-main-text-color-color has-text-color"><strong><a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a></strong> can be installed as a <strong>WordPress plugin</strong>.<br>Give to the <strong>block editor</strong> super-powers such as <strong>pagination or components</strong> and apply changes <strong>depending of the device</strong>!</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="   wp-block-button"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background" href="https://marcosrego.com/client-area/downloads/?product=mrutils"><strong>Get it now (free)</strong></a></div>
</div>
</div></section>
</div></aside>



<h2 class="wp-block-heading"><strong>Get mouseover options on the block editor</strong></h2>



<p>One of the cool features of <a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a> is the ability to easily install it as a WordPress plugin for free.</p>



<p>When you do so, an interface will appear on the block editor, allowing you to easily use the utility classes of this front-end toolkit.</p>



<p>One type of utility class is the mouse hover state, let&#8217;s focus on that for this post.</p>



<p><em>Note: If you prefer, you can <a href="https://github.com/marcosrego-web/mr-utils/wiki#installation" data-type="URL" data-id="https://github.com/marcosrego-web/mr-utils/wiki#installation" target="_blank" rel="noreferrer noopener">install Mr.Utils</a> without the interface and use the classes on each block Advanced section.</em></p>



<div style="height:30px" aria-hidden="true" class="  wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="     aligncenter size-full"><img loading="lazy" decoding="async" width="275" height="714" src="https://marcosrego.com/wp-content/uploads/2022/04/screenshot-4.png" alt="Mr.Utils interface on block editor showing mouseover options" class="wp-image-2572" title="screenshot 4 - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2022/04/screenshot-4.png 275w, https://marcosrego.com/wp-content/uploads/2022/04/screenshot-4-116x300.png 116w" sizes="auto, (max-width: 275px) 100vw, 275px" /><figcaption class="wp-element-caption">Mr.Utils interface on block editor showing mouse hover options</figcaption></figure></div>


<div style="height:50px" aria-hidden="true" class="  wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>Animations</strong></h2>



<p>On the Animation section of the <em>Hover</em> tab (zigzag arrow icon) you will find options such as Fade, Slide, Scale and Zoom.</p>



<p>One thing to keep in mind when selecting one of those options is: By default, the animation will only occur when mouse hovering above the element, nothing will happen when mouse hovering outside the element&#8230; If you want the animation to rollback when you go outside the element, you must go to the <em>Animation</em> section of the <em>Global</em> tab (first tab) and select the transition type (e.g. Ease In Out).<br>Once you apply a transition globally, the animation will react to both hover situations.</p>



<h3 class="  wp-block-heading"><strong>Live example using <em>Zoom</em> animation</strong></h3>



<div style="height:30px" aria-hidden="true" class="  wp-block-spacer"></div>



<p class=" mr-hover-zoom mr-active mr-easeinout mr-hover-easeinout  mr-hover-zoom mr-active  mr-easeinout  mr-hover-easeinout  has-text-align-center mr-hover-zoom mr-active mr-easeinout mr-hover-easeinout"><strong>This paragraph block animates on mouseover!</strong></p>



<div style="height:50px" aria-hidden="true" class="  wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>Layout change</strong></h2>



<p>On the <em>Layout</em> section of the <em>Hover</em> tab (zigzag arrow icon) you will find options to change the size (width) of a block.</p>



<p>If you want to change the initial size, simply go to the <em>Layout</em> section on the <em>Global</em> tab (first tab) and find the similar option.</p>



<p>By default, the size will change without any transition/animation. If you want the block to change the size smoothly, you must go to the <em>Animation</em> section of the <em>Global</em> tab and select the transition type (e.g. Ease In Out).</p>



<h3 class="  wp-block-heading"><strong>Live example of size change</strong></h3>


<div class="wp-block-image mr-size11 mr-hover-size13 mr-easeinout">
<figure class="      alignleft size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://marcosrego.com/wp-content/uploads/2021/11/screenshot-1024x768.png" alt="Mr.Dev.&#039;s Theme Screenshot" class="wp-image-2481" title="screenshot - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/11/screenshot-1024x768.png 1024w, https://marcosrego.com/wp-content/uploads/2021/11/screenshot-300x225.png 300w, https://marcosrego.com/wp-content/uploads/2021/11/screenshot-768x576.png 768w, https://marcosrego.com/wp-content/uploads/2021/11/screenshot.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">This image will change width on mouseover</figcaption></figure></div>


<div style="height:50px" aria-hidden="true" class="  wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>Display changes</strong></h2>



<p>On the <em>Display </em>section of the <em>Hover</em> tab (zigzag arrow icon) you will find options to change the visibility type of a block.</p>



<p><a href="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes#display" target="_blank" data-type="URL" data-id="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes#display" rel="noreferrer noopener">Here you can better understand the differences between the visibility types.</a></p>



<p>With these options, you can make a block semi-opaque or totally opaque on mouseover. To do the latter, you must first put the block semi-opaque by default on the <em>Display</em> section of the <em>Global</em> tab (you can also use the option on the <em>Desktop</em> tab [screen icon]).</p>



<p>Just like changing the layout, if you want a smooth transition you must choose the transition type on the <em>Animations </em>section (e.g. Ease In Out).</p>



<h3 class="  wp-block-heading"><strong>Live example of visibility change</strong></h3>



<div class="wp-block-buttons is-horizontal is-nowrap is-layout-flex wp-container-core-buttons-is-layout-6 wp-block-buttons-is-layout-flex">
<div class="   mr-semiopaque mr-hover-opaque  mr-semiopaque  mr-hover-opaque  wp-block-button aligncenter mr-semiopaque mr-hover-opaque"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background wp-element-button"><strong>This button will become opaque on mouseover!</strong></a></div>



<div class="   mr-easeinout mr-transparent mr-hover-opaque  mr-easeinout  mr-transparent  mr-hover-opaque  wp-block-button aligncenter mr-easeinout mr-transparent mr-hover-opaque"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background wp-element-button">Hey you found the transparent button also!</a></div>
</div>



<div style="height:50px" aria-hidden="true" class="  wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>Spacing changes</strong></h2>



<p>On the <em>Spacing </em>section of the <em>Hover</em> tab (zigzag arrow icon) you will find options to change the spacing (paddings or/and margins) of a block.</p>



<p>Just like changing the layout or display, if you want a smooth transition you must choose the transition type on the <em>Animations </em>section (e.g. Ease In Out) of the <em>Global</em> tab (first tab).</p>



<h3 class="  wp-block-heading"><strong>Live example of paddings change</strong></h3>



<div style="height:30px" aria-hidden="true" class="  wp-block-spacer"></div>



<figure class="   mr-size11 mr-easeinout mr-hover-paddingtop mr-hover-paddingleft mr-marginleft  mr-easeinout  mr-hover-paddingtop  mr-hover-paddingleft  mr-marginleft  wp-block-image size-large mr-size11 mr-easeinout mr-hover-paddingtop mr-hover-paddingleft mr-marginleft"><img loading="lazy" decoding="async" width="1024" height="768" src="https://marcosrego.com/wp-content/uploads/2021/11/screenshot-1024x768.png" alt="Mr.Dev.&#039;s Theme Screenshot" class="wp-image-2481" title="screenshot - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/11/screenshot-1024x768.png 1024w, https://marcosrego.com/wp-content/uploads/2021/11/screenshot-300x225.png 300w, https://marcosrego.com/wp-content/uploads/2021/11/screenshot-768x576.png 768w, https://marcosrego.com/wp-content/uploads/2021/11/screenshot.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">A padding-top and padding-left will be added to this image on mouseover</figcaption></figure>



<div style="height:50px" aria-hidden="true" class="  wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>Text size change</strong></h2>



<p>On the <em>Text </em>section of the <em>Hover</em> tab (zigzag arrow icon) you will find options to change the font-size of a block.</p>



<p>Just like changing the layout, display or spacing, if you want a smooth transition you must choose the transition type on the <em>Animations </em>section (e.g. Ease In Out) of the <em>Global</em> tab (first tab).</p>



<h3 class="  wp-block-heading"><strong>Live example of font-size change</strong></h3>



<div style="height:30px" aria-hidden="true" class="  wp-block-spacer"></div>



<p class="mr-hover-fontsize5 mr-easeinout  mr-easeinout  mr-hover-fontsize5 mr-easeinout"><strong><em>This paragraph block will have it&#8217;s font-size increased on mouseover!</em></strong></p>



<div style="height:50px" aria-hidden="true" class="  wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>Misc. Changes</strong></h2>



<p>On the <em>Misc. </em>section of the <em>Hover</em> tab (zigzag arrow icon) you will find some extra options such has:</p>



<h3 class="  wp-block-heading"><strong>Showing a scrollbar only when mouse hovering an element</strong></h3>



<p>There are more than 3 images below. Mouseover to see the scrollbar that will allow you to see all of them!</p>



<figure class=" mr-hidescroll mr-horizontalscroll mr-hover-scroll  mr-horizontalscroll  mr-hover-scroll  wp-block-gallery has-nested-images columns-default is-cropped mr-hidescroll mr-horizontalscroll mr-hover-scroll wp-block-gallery-10 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1012" src="https://marcosrego.com/wp-content/uploads/2021/04/marcosrego-itemzero-open-graph.png" alt="Itemzero Open Graph Image" class="wp-image-1012" title="marcosrego itemzero open graph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/04/marcosrego-itemzero-open-graph.png 1200w, https://marcosrego.com/wp-content/uploads/2021/04/marcosrego-itemzero-open-graph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/04/marcosrego-itemzero-open-graph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/04/marcosrego-itemzero-open-graph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1013" src="https://marcosrego.com/wp-content/uploads/2021/06/rydoo-marcosrego-opengraph.png" alt="Rydoo Opengraph Image" class="wp-image-1013" title="rydoo marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/06/rydoo-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2021/06/rydoo-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/rydoo-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/rydoo-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1014" src="https://marcosrego.com/wp-content/uploads/2021/03/storylabs-marcosrego-opengraph.png" alt="Storylabs Opengraph Image" class="wp-image-1014" title="storylabs marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/03/storylabs-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2021/03/storylabs-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/03/storylabs-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/03/storylabs-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1015" src="https://marcosrego.com/wp-content/uploads/2021/03/rubenrdias-marcosrego-opengraph.png" alt="Ruben R. Dias Opengraph Image" class="wp-image-1015" title="rubenrdias marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/03/rubenrdias-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2021/03/rubenrdias-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/03/rubenrdias-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/03/rubenrdias-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1016" src="https://marcosrego.com/wp-content/uploads/2021/01/gjp-marcosrego-opengraph.png" alt="GJP Opengraph Image" class="wp-image-1016" title="gjp marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/01/gjp-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2021/01/gjp-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/01/gjp-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/01/gjp-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1017" src="https://marcosrego.com/wp-content/uploads/2020/11/openbook-marcosrego-opengraph.png" alt="Openbook Opengraph Image" class="wp-image-1017" title="openbook marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2020/11/openbook-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2020/11/openbook-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2020/11/openbook-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2020/11/openbook-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1018" src="https://marcosrego.com/wp-content/uploads/2020/09/cookit-marcosrego-opengraph.png" alt="Cookit Opengraph Image" class="wp-image-1018" title="cookit marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2020/09/cookit-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2020/09/cookit-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2020/09/cookit-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2020/09/cookit-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1019" src="https://marcosrego.com/wp-content/uploads/2020/09/arhcesmo-marcosrego-opengraph.png" alt="Arhcesmo Opengraph Image" class="wp-image-1019" title="arhcesmo marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2020/09/arhcesmo-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2020/09/arhcesmo-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2020/09/arhcesmo-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2020/09/arhcesmo-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1020" src="https://marcosrego.com/wp-content/uploads/2020/09/valdorio-marcosrego-opengraph.png" alt="Val do Rio Opengraph Image" class="wp-image-1020" title="valdorio marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2020/09/valdorio-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2020/09/valdorio-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2020/09/valdorio-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2020/09/valdorio-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1026" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdevframework-marcosrego-opengraph.png" alt="Mr.Dev.&#039;s Framework Opengraph Image" class="wp-image-1026" title="mrdevframework marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrdevframework-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2021/06/mrdevframework-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrdevframework-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrdevframework-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1027" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdevwidget-marcosrego-opengraph.png" alt="Mr.Dev.&#039;s Widget Opengraph Image" class="wp-image-1027" title="mrdevwidget marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrdevwidget-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2021/06/mrdevwidget-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrdevwidget-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrdevwidget-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1028" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdevmodule-marcosrego-opengraph.png" alt="Mr.Dev.&#039;s Module Opengraph Image" class="wp-image-1028" title="mrdevmodule marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrdevmodule-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2021/06/mrdevmodule-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrdevmodule-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrdevmodule-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1029" src="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph.png" alt="Mr.Utils Opengraph Image" class="wp-image-1029" title="mrutils marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1031" src="https://marcosrego.com/wp-content/uploads/2021/06/editor4roks-marcosrego-opengraph.png" alt="editor4roks Opengraph Image" class="wp-image-1031" title="editor4roks marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/06/editor4roks-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2021/06/editor4roks-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/editor4roks-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/editor4roks-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1221" src="https://marcosrego.com/wp-content/uploads/2021/04/giftncraft-marcosrego-opengraph.png" alt="Gift &amp; Craft Opengraph Image" class="wp-image-1221" title="giftncraft marcosrego opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/04/giftncraft-marcosrego-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2021/04/giftncraft-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/04/giftncraft-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/04/giftncraft-marcosrego-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1330" src="https://marcosrego.com/wp-content/uploads/2020/11/emergencia-alimentar-marcosrego-site-opengraph.png" alt="Rede de Emergência Alimentar Open Graph Image" class="wp-image-1330" title="emergencia alimentar marcosrego site opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2020/11/emergencia-alimentar-marcosrego-site-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2020/11/emergencia-alimentar-marcosrego-site-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2020/11/emergencia-alimentar-marcosrego-site-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2020/11/emergencia-alimentar-marcosrego-site-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1838" src="https://marcosrego.com/wp-content/uploads/2020/09/cascade-marcosrego-site-opengraph.png" alt="Cascade website Opengraph Image" class="wp-image-1838" title="cascade marcosrego site opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2020/09/cascade-marcosrego-site-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2020/09/cascade-marcosrego-site-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2020/09/cascade-marcosrego-site-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2020/09/cascade-marcosrego-site-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="630" data-id="1813" src="https://marcosrego.com/wp-content/uploads/2021/04/ressanogarciaarquitectos-marcosrego-site-opengraph.png" alt="Ressano Garcia Arquitectos Open Graph Image" class="wp-image-1813" title="ressanogarciaarquitectos marcosrego site opengraph - More than 6 essential mouseover effects for the block editor" srcset="https://marcosrego.com/wp-content/uploads/2021/04/ressanogarciaarquitectos-marcosrego-site-opengraph.png 1200w, https://marcosrego.com/wp-content/uploads/2021/04/ressanogarciaarquitectos-marcosrego-site-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/04/ressanogarciaarquitectos-marcosrego-site-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/04/ressanogarciaarquitectos-marcosrego-site-opengraph-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>
</figure>



<div style="height:30px" aria-hidden="true" class="  wp-block-spacer"></div>



<p>Those were very basic examples, but with some creativity you can use them to make fascinating and useful experiences for your website users 🙂</p>



<div style="height:50px" aria-hidden="true" class="  wp-block-spacer"></div>



<h2><b>Comments</b></h2>
<div id="disqus_thread"></div>
<script>
if(mrGetCookie('cookielawinfo-checkbox-functional') == 'yes') {
    var disqus_config = function () {
        this.page.url = (location.protocol+'//'+location.host+location.pathname).replace("/account/", "/");
        this.page.identifier = document.querySelector("article").id.replace("post-", "");
    };
    
    (function() {
    var d = document, s = d.createElement('script');
    s.src = 'https://marcosrego-web.disqus.com/embed.js';
    s.setAttribute('data-timestamp', +new Date());
    (d.head || d.body).appendChild(s);
    })();
} else {
    document.querySelector('#disqus_thread').innerHTML = 'You cannot view or add comments because you did not consent to the use of functional cookies: <a class="  cli_manage_current_consent" style="cursor:pointer;">Manage your consent.</a>';
}
</script>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>A plugin development journey and what&#8217;s breaking in right before 2022</title>
		<link>https://marcosrego.com/blog/mrdev-mrutils-journey-new-2022/</link>
		
		<dc:creator><![CDATA[Marcos Rego]]></dc:creator>
		<pubDate>Thu, 23 Dec 2021 01:29:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[About me]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Mr.Dev.]]></category>
		<category><![CDATA[Mr.Dev.'s Framework]]></category>
		<category><![CDATA[Mr.Dev.'s Module]]></category>
		<category><![CDATA[Mr.Dev.'s Widget]]></category>
		<category><![CDATA[Mr.Utils]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://marcosrego.com/?p=2302</guid>

					<description><![CDATA[The journey of Mr.Dev.&#8217;s Widget and Module Back when I first started developing Mr.Dev.&#8217;s Widget and Module, it didn&#8217;t have that name and the main intention was to show categories in accordions and posts inside tabs that are inside those accordions for Ruben R Dias website. Back then, WordPress and Joomla were CMS where the [&#8230;]]]></description>
										<content:encoded><![CDATA[<span id="more-2302"></span>
<!--noteaser-->



<h2 class="wp-block-heading"><strong>The journey of Mr.Dev.&#8217;s Widget and Module</strong></h2>



<p>Back when I first started developing <a href="https://marcosrego.com/development/mrdev-widget/" data-type="post" data-id="574">Mr.Dev.&#8217;s Widget</a> and <a href="https://marcosrego.com/development/mrdev-module/" data-type="post" data-id="868">Module</a>, it didn&#8217;t have that name and the main intention was to show categories in accordions and posts inside tabs that are inside those accordions for <a href="https://marcosrego.com/websites/rubenrdias/" data-type="post" data-id="448">Ruben R Dias</a> website.</p>



<p>Back then, <a href="https://marcosrego.com/tag/wordpress/" data-type="post_tag" data-id="23">WordPress</a> and <a href="https://marcosrego.com/tag/joomla/" data-type="post_tag" data-id="46">Joomla</a> were CMS where the frontend was totally dependent of extra elements (themes, plugins and other optional features) that the developer/designer could choose to use or could create custom tools.</p>



<div style="height:30px" aria-hidden="true" class="  wp-block-spacer"></div>



<figure class="   wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-11 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="610" data-id="1572" src="https://marcosrego.com/wp-content/uploads/2021/08/rubenrdias-site-desktop-categories-1024x610.jpg" alt="Ruben R. Dias desktop website showing the main categories" class="wp-image-1572" title="rubenrdias site desktop categories - A plugin development journey and what&#039;s breaking in right before 2022" srcset="https://marcosrego.com/wp-content/uploads/2021/08/rubenrdias-site-desktop-categories-1024x610.jpg 1024w, https://marcosrego.com/wp-content/uploads/2021/08/rubenrdias-site-desktop-categories-300x179.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/08/rubenrdias-site-desktop-categories-768x457.jpg 768w, https://marcosrego.com/wp-content/uploads/2021/08/rubenrdias-site-desktop-categories-1536x914.jpg 1536w, https://marcosrego.com/wp-content/uploads/2021/08/rubenrdias-site-desktop-categories.jpg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Ruben R. Dias desktop website showing the main categories</figcaption></figure>
</figure>



<p>We (developers) had the full control over the frontend. </p>



<p>In my case, I choosed to create a widget and module because of the functions and the graphic user interface (GUI) that both WordPress and Joomla had already built-in. In theory they allowed to not bloat the systems with something otherwise done from scratch or using external dependencies.</p>



<p>The version of Mr.Dev.&#8217;s widget/module I gave to my direct clients became very powerful, <strong>allowing to show any type of content (from posts to products) with many options, themes and layouts</strong>. All that with checkbox and fields, so<strong> it was safe to give to clients</strong>, knowing they would not affect negatively the design.</p>



<p>To indirect clients <em>(people downloading the widget/module to their own developments)</em> I put the most powerful features part of the paid plugin <strong><a href="https://marcosrego.com/mrdev-widget-module-features/" data-type="page" data-id="838">Mr.Dev.&#8217;s Framework</a></strong>.</p>



<figure class="    wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/08/mrdev-widget-category-description_opengraph-1024x538.jpg" alt="Mr.Dev.&#039;s Widget getting the current category" class="wp-image-1582" title="mrdev widget category description opengraph - A plugin development journey and what&#039;s breaking in right before 2022" srcset="https://marcosrego.com/wp-content/uploads/2021/08/mrdev-widget-category-description_opengraph-1024x538.jpg 1024w, https://marcosrego.com/wp-content/uploads/2021/08/mrdev-widget-category-description_opengraph-300x158.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/08/mrdev-widget-category-description_opengraph-768x403.jpg 768w, https://marcosrego.com/wp-content/uploads/2021/08/mrdev-widget-category-description_opengraph.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="  wp-block-heading"><strong>But then things changed..</strong></h3>



<p><strong>As for the module, Joomla 4</strong> was later released with different methods to create modules. It was not worth it to recreate the module, so it was discontinued and unsupported for other two reasons: The user-base of Joomla is much smaller comparing to WordPress and I was using Joomla mostly for <a href="https://marcosrego.com/tag/browserbox/" data-type="post_tag" data-id="47">a company where I am not working anymore</a>.</p>



<p><strong>As for the widget, WordPress also changed,</strong> with a new highly visual editor enabled by default: The <strong>Gutenberg block editor</strong> meant that WordPress was pushing to developers a specific tool to change the frontend, a tool that basically <strong>transforms the CMS into a site builder</strong>.</p>



<p>And with that, the optional features such as widgets and the customizer started to become obsolete vs the block editor with full site editor growing much stronger.</p>



<p>Despite this,<strong> Mr.Dev.&#8217;s Widget is still compatible and support is available</strong>! But no further development will be put into it (for the reason mentioned above).</p>



<p><strong>Instead I&#8217;ll focus my energies on Mr.Dev&#8217;s Framework and Mr.Utils..</strong></p>



<aside class="  wp-block-group sidebar has-main-text-color-color has-aside-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<section class="wp-block-group has-main-text-color-color has-main-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<h3 class="   has-main-text-color-color has-text-color wp-block-heading"><strong>Did you know?</strong></h3>



<figure class="    wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png" alt="Mr.Utils Opengraph Image" class="wp-image-1029" title="mrutils marcosrego opengraph - A plugin development journey and what&#039;s breaking in right before 2022" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="  has-main-text-color-color has-text-color"><strong><a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a></strong> can be installed as a <strong>WordPress plugin</strong>.<br>Give to the <strong>block editor</strong> super-powers such as <strong>pagination or components</strong> and apply changes <strong>depending of the device</strong>!</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="   wp-block-button"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background" href="https://marcosrego.com/client-area/downloads/?product=mrutils"><strong>Get it now (free)</strong></a></div>
</div>
</div></section>
</div></aside>



<h2 class="wp-block-heading"><strong>The plugin development journey of Mr.Dev.&#8217;s Framework</strong></h2>



<p>The idea behind the framework came up because I started noticing how using a <strong>third-party framework</strong> (Gantry5 with particles) together <strong>with the block editor and Mr.Dev.&#8217; widgets</strong> was adding extra learning curves, starting to bloat WordPress and I wasn&#8217;t even needing all the features of Gantry5.</p>



<p>So, keeping that idea of not wanting to bloat the system and make it simpler, <strong>I had to adopt the block editor and accept it as the future moving forward</strong>.</p>



<p><a href="https://marcosrego.com/development/mrdev-framework/" data-type="post" data-id="403">Mr.Dev.&#8217;s Framework</a> focus on <strong>adding optional features</strong> he considers essential to a CMS, <strong>without repeating features already available by default</strong> and <strong>helping transition / discontinue features</strong> that might become available by default.</p>



<p>Being a continued path, <strong>the Framework its on active development and improvements continue to be made.</strong></p>



<figure class="   wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-12 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><a href="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_configuration.jpg"><img loading="lazy" decoding="async" width="1024" height="693" data-id="954" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_configuration-1024x693.jpg" alt="Mr.Dev.&#039;s Framework - Configuration page" class="wp-image-954" title="mrdev framework configuration - A plugin development journey and what&#039;s breaking in right before 2022" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_configuration-1024x693.jpg 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_configuration-300x203.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_configuration-768x520.jpg 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_configuration.jpg 1342w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Enable only the options that you need on the configuration page. Including a maintenance mode and the use of Mr.Utils (CSS classes and JS functions).</figcaption></figure>
</figure>



<p><strong>And this brings us to today..</strong></p>



<h2 class="wp-block-heading"><strong>The new version of Mr.Utils joined with the Framework</strong></h2>



<p>Mr.Dev.&#8217;s Framework already helps to create breakpoints, add media sizes, create stylesheets with global colors, typography, sizes and files via a graphic user interface (GUI). And <strong>it always included an optional frontend toolkit I developed called <a href="https://marcosrego.com/tag/mr-utils/" data-type="post_tag" data-id="35">Mr.Utils</a></strong>.</p>



<p>There <strong>was</strong> no graphic user interface to use that toolkit, it was used mainly by developers knowing concepts like classes, CSS and javascript functions.</p>



<h3 class="  wp-block-heading"><strong>As of today, Mr.Utils and the framework reached the block editor!</strong></h3>



<p><strong>Mr.Dev. now gives an option for editors and clients to use that frontend toolkit using the GUI!</strong></p>



<p>All options will appear under an &#8220;Utilities&#8221; tab,&nbsp; allowing to easily implement designs that were difficult or impossible to implement with the current state of the Gutenberg block editor. <strong>Including Mr.Utils pagination (perpage) and components to create sliders and tabs.</strong></p>



<figure class="    wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-13 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-full"><a href="https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1.png"><img loading="lazy" decoding="async" width="772" height="250" data-id="2289" src="https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1.png" alt="Mr.Utils options on WordPress block editor" class="wp-image-2289" title="banner 772x250 1 - A plugin development journey and what&#039;s breaking in right before 2022" srcset="https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1.png 772w, https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1-300x97.png 300w, https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1-768x249.png 768w" sizes="auto, (max-width: 772px) 100vw, 772px" /></a><figcaption class="wp-element-caption">Mr.Utils options on WordPress block editor</figcaption></figure>
</figure>



<p>If you don&#8217;t have Mr.Dev&#8217;s Framework yet, you can actually <strong><a href="https://marcosrego.com/client-area/downloads/?product=mrutils">install Mr.Utils as a plugin for free</a></strong>. It will give you the same interface just without some advanced options.</p>



<p>And to finish with another great news, <strong>a present just in time for Christmas</strong>&#8230;</p>



<h2 class="wp-block-heading"><a href="https://wordpress.org/plugins/mr-utils/" target="_blank" data-type="URL" data-id="https://wordpress.org/plugins/mr-utils/" rel="noreferrer noopener"><strong>Mr.Utils plugin is available on WordPress repository</strong>!</a></h2>



<figure class="    wp-block-image size-large"><a href="https://wordpress.org/plugins/mr-utils/" target="_blank" rel="noopener"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/12/mrutils-wordpress-repository-marcosrego-opengraph-1024x538.png" alt="Mr.Utils plugin journey reached the WordPress Repository" class="wp-image-2351" title="mrutils wordpress repository marcosrego opengraph - A plugin development journey and what&#039;s breaking in right before 2022" srcset="https://marcosrego.com/wp-content/uploads/2021/12/mrutils-wordpress-repository-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/12/mrutils-wordpress-repository-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/12/mrutils-wordpress-repository-marcosrego-opengraph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/12/mrutils-wordpress-repository-marcosrego-opengraph.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>I hope you&#8217;ve found interesting to know the reasons behind developing this plugins, that you can join me on this journey and most of all, enjoy using the plugins!</p>



<p>Let&#8217;s now celebrate Christmas and start 2022 with the right footer! 🎅 🎄 🎁 🥂</p>



<p><strong>Extra note:</strong> <em>Mr.</em> comes from playing with the initials of my first and last name while representing a person that is a developer. <em>Dev.</em> represents the fact that all framework features are optional, thinking on developers that want some control and worry about lighter work environments.</p>



<h2><b>Comments</b></h2>
<div id="disqus_thread"></div>
<script>
if(mrGetCookie('cookielawinfo-checkbox-functional') == 'yes') {
    var disqus_config = function () {
        this.page.url = (location.protocol+'//'+location.host+location.pathname).replace("/account/", "/");
        this.page.identifier = document.querySelector("article").id.replace("post-", "");
    };
    
    (function() {
    var d = document, s = d.createElement('script');
    s.src = 'https://marcosrego-web.disqus.com/embed.js';
    s.setAttribute('data-timestamp', +new Date());
    (d.head || d.body).appendChild(s);
    })();
} else {
    document.querySelector('#disqus_thread').innerHTML = 'You cannot view or add comments because you did not consent to the use of functional cookies: <a class="  cli_manage_current_consent" style="cursor:pointer;">Manage your consent.</a>';
}
</script>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Mr.Dev.&#8217;s Framework</title>
		<link>https://marcosrego.com/development/mrdev-framework/</link>
		
		<dc:creator><![CDATA[Marcos Rego]]></dc:creator>
		<pubDate>Mon, 01 Nov 2021 10:31:00 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Mr.Dev.]]></category>
		<category><![CDATA[Mr.Dev.'s Framework]]></category>
		<category><![CDATA[Mr.Utils]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://marcosrego.com/?p=403</guid>

					<description><![CDATA[Mr.Dev. is your provider of developing tools! He gives you a theme framework with optional features and add-ons that extend the natural workflow of WordPress. How? This framework focus exclusively on adding optional functionalities that WordPress doesn&#8217;t bring by default in its interface, avoiding bloating even more the system. Because those are all optional, you [&#8230;]]]></description>
										<content:encoded><![CDATA[<span id="more-403"></span>
<!--noteaser-->



<figure class=" fixed-video_mobile mr-fadein  wp-block-video fixed-video_mobile mr-fadein"><video autoplay loop muted preload="none" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_mobile.mp4" playsinline></video></figure>



<figure class=" fixed-video_desktop mr-fadein  wp-block-video fixed-video_desktop mr-fadein"><video autoplay loop muted preload="none" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_desktop.mp4" playsinline></video></figure>



<h2 class="wp-block-heading" id="mr-dev-is-your-provider-of-developing-tools"><strong>Mr.Dev. is your provider of developing tools!</strong></h2>



<h3 class="  wp-block-heading" id="he-gives-you-a-theme-framework-with-optional-features-and-add-ons-that-extend-the-natural-workflow-of-wordpress"><strong>He gives you a theme framework with optional features and add-ons that extend the natural workflow of WordPress.</strong></h3>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="   wp-block-button"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background wp-element-button" href="https://marcosrego.com/client-area/downloads/?product=mrdevs-framework"><strong>Get it now</strong></a></div>



<div class="   wp-block-button"><a class="wp-block-button__link has-main-background-color-color has-main-text-color-background-color has-text-color has-background wp-element-button" href="#features">Features</a></div>



<div class="   wp-block-button"><a class="wp-block-button__link has-main-background-color-color has-main-text-color-background-color has-text-color has-background wp-element-button" href="#all-framework-features-work-with-any-theme">STARTER THEME</a></div>
</div>



<div style="height:25px" aria-hidden="true" class="  wp-block-spacer"></div>



<div style="height:25px" aria-hidden="true" class="  wp-block-spacer"></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h4 class="  wp-block-heading" id="how"><strong>How?</strong></h4>



<p><strong>This framework focus exclusively on adding <a href="#features">optional functionalities</a> that WordPress doesn&#8217;t bring by default in its interface, avoiding bloating even more the system.</strong></p>



<p>Because those are all optional, you the developer can decide and control which <a href="#features">features</a> are needed on a project basis. This also helps your clients to easily navigate the backend and customize the site with the options that you want them to see.</p>



<div style="height:25px" aria-hidden="true" class="  wp-block-spacer"></div>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h4 class="  wp-block-heading" id="why"><strong>Why?</strong></h4>



<p>WordPress already comes with the blocks editor. When you add a legacy theme or a site builder you increase the bloat of the system.</p>



<p>They usually come full of features <em>(many times repeated ones)</em>, adding extra layers, changing the original workflow and decreasing the overall speed and longevity. <strong>That&#8217;s why it&#8217;s important to have a light framework that focus on <a href="#features">optional extensions</a> only.</strong></p>



<div style="height:25px" aria-hidden="true" class="  wp-block-spacer"></div>
</div>
</div>



<h3 class="  wp-block-heading" id="features"><strong>Which features are available?</strong></h3>



<figure class="   wp-block-gallery has-nested-images columns-1 wp-block-gallery-14 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><a href="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_configuration.jpg"><img loading="lazy" decoding="async" width="1024" height="693" data-id="954" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_configuration-1024x693.jpg" alt="Mr.Dev.&#039;s Framework - Configuration page" class="wp-image-954" title="mrdev framework configuration - Mr.Dev.&#039;s Framework" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_configuration-1024x693.jpg 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_configuration-300x203.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_configuration-768x520.jpg 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_configuration.jpg 1342w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Enable only the options that you need on the configuration page. Including a maintenance mode and the use of Mr.Utils (CSS classes and JS functions).</figcaption></figure>



<figure class="     wp-block-image size-large"><a href="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_styles.jpg"><img loading="lazy" decoding="async" width="1024" height="693" data-id="958" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_styles-1024x693.jpg" alt="Mr.Dev.&#039;s Framework - Styles" class="wp-image-958" title="mrdev framework styles - Mr.Dev.&#039;s Framework" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_styles-1024x693.jpg 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_styles-300x203.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_styles-768x520.jpg 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_styles.jpg 1342w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Optionally use the plugin settings, the customizer or the block editor, to control global colors (with light and dark mode support), fonts, sizes and breakpoints everywhere.</figcaption></figure>



<figure class="     wp-block-image size-large"><a href="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_files.jpg"><img loading="lazy" decoding="async" width="1024" height="693" data-id="956" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_files-1024x693.jpg" alt="Mr.Dev.&#039;s Framework - Files page" class="wp-image-956" title="mrdev framework files - Mr.Dev.&#039;s Framework" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_files-1024x693.jpg 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_files-300x203.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_files-768x520.jpg 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_files.jpg 1342w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Optionally add files or external urls, choose where and when to load each one <em>(on a specific page, posts, blog, category)</em> and edit them directly in WordPress with the default plugins editor.</figcaption></figure>



<figure class="     wp-block-image size-large"><a href="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_media.jpg"><img loading="lazy" decoding="async" width="1024" height="693" data-id="1331" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_media-1024x693.jpg" alt="Mr.Dev.&#039;s Framework - Media" class="wp-image-1331" title="mrdev framework media - Mr.Dev.&#039;s Framework" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_media-1024x693.jpg 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_media-300x203.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_media-768x520.jpg 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_media.jpg 1342w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Optionally create more sizes to your images (scaled or cropped). Those sizes will appear on the srcset and also on the block and classic editors.</figcaption></figure>
</figure>



<h3 class="  wp-block-heading" id="all-framework-features-work-with-any-theme"><strong>All framework features work with any theme!</strong></h3>



<p>But if you want to start from scratch and focus on the features given by the framework, then <strong>Mr.Dev. gives you a boilerplate theme</strong> that you can use.</p>



<p>Despite being a boilerplate, you can develop complete websites without needing to add or edit the base code, that&#8217;s thanks to the features of the Framework together with the block editor.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-2 wp-block-columns-is-layout-flex">
<div class="  wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:30%">
<figure class="    wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://marcosrego.com/wp-content/uploads/2021/11/screenshot-1024x768.png" alt="Mr.Dev.&#039;s Theme Screenshot" class="wp-image-2481" title="screenshot - Mr.Dev.&#039;s Framework" srcset="https://marcosrego.com/wp-content/uploads/2021/11/screenshot-1024x768.png 1024w, https://marcosrego.com/wp-content/uploads/2021/11/screenshot-300x225.png 300w, https://marcosrego.com/wp-content/uploads/2021/11/screenshot-768x576.png 768w, https://marcosrego.com/wp-content/uploads/2021/11/screenshot.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="  wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:70%">
<p>The <a href="https://marcosrego.com/client-area/downloads/?product=theme-mrdevtheme">Mr.Dev&#8217;s Theme</a> is a boilerplate that <strong>works with the default Full Site Editor</strong>. By joining the Framework, you can control the default styles that appear on the FSE and you&#8217;ll be up to date with all the new features that are coming to WordPress.</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="   wp-block-button"><a class="wp-block-button__link has-main-background-color-color has-main-text-color-background-color has-text-color has-background wp-element-button" href="https://marcosrego.com/client-area/downloads/?product=theme-mrdevtheme">DOWNLOAD</a></div>



<div class="   wp-block-button"><a class="wp-block-button__link has-main-background-color-color has-main-text-color-background-color has-text-color has-background wp-element-button" href="https://github.com/marcosrego-web/mrdev-theme#mrdevs-theme" target="_blank" rel="noreferrer noopener">+INFO</a></div>
</div>
</div>
</div>



<div style="height:76px" aria-hidden="true" class="  wp-block-spacer"></div>



<div class="wp-block-buttons is-content-justification-left is-layout-flex wp-container-core-buttons-is-layout-10 wp-block-buttons-is-layout-flex">
<div class="   wp-block-button"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background wp-element-button" href="https://marcosrego.com/client-area/downloads/?product=mrdevs-framework"><strong>Get THE FRAMEWORK</strong></a></div>
</div>



]]></content:encoded>
					
		
		<enclosure url="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_mobile.mp4" length="2539458" type="video/mp4" />
<enclosure url="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_desktop.mp4" length="2424924" type="video/mp4" />

			</item>
		<item>
		<title>Mr.Utils enhances the block editor with 8 extra features</title>
		<link>https://marcosrego.com/blog/mr-utils-block-editor-features/</link>
		
		<dc:creator><![CDATA[Marcos Rego]]></dc:creator>
		<pubDate>Wed, 13 Oct 2021 23:11:57 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Block editor]]></category>
		<category><![CDATA[For clients and authors]]></category>
		<category><![CDATA[For developers]]></category>
		<category><![CDATA[Mr.Utils]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://marcosrego.com/?p=1997</guid>

					<description><![CDATA[On this post, I&#8217;ll guide you on how to use my front-end toolkit Mr.Utils, to scale and get features on the block editor of WordPress. As explained on the previous post, a front-end toolkit might be the best future-proof and optimized solution to this site builder that is still growing. Depending of your website and [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class=""> On this post, I&#8217;ll guide you on how to use my front-end toolkit <strong><a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a></strong>, to scale and get features on the block editor of <a href="https://marcosrego.com/tag/wordpress/" data-type="post_tag" data-id="23">WordPress</a>.</p>



<span id="more-1997"></span>



<p class="">As explained on the <a href="https://marcosrego.com/blog/solve-block-editor-toolkit/" data-type="post" data-id="1878">previous post</a>, a front-end toolkit might be the best future-proof and optimized solution to this site builder that is still growing.</p>



<p class="">Depending of your website and theme configuration, you might already be able to use the editor to change things such as the font-size, margins and paddings. But those changes would be made on each block individually, there&#8217;s currently at the moment of writing, no way to change those properties globally. <strong>Mr.Utils</strong> gives you a way to do that.</p>



<aside class="  wp-block-group sidebar has-main-text-color-color has-aside-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<section class="wp-block-group has-main-text-color-color has-main-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<h3 class="   has-main-text-color-color has-text-color wp-block-heading"><strong>Did you know?</strong></h3>



<figure class="    wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png" alt="Mr.Utils Opengraph Image" class="wp-image-1029" title="mrutils marcosrego opengraph - Mr.Utils enhances the block editor with 8 extra features" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="  has-main-text-color-color has-text-color"><strong><a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a></strong> gives you a set of classes with a clear syntax, such as <em><strong>mr-phone-hide</strong></em> clearly saying to hide an element on a phone, <strong><em>mr-marginright</em></strong> to add a margin on the right side of an element and <strong><a rel="noreferrer noopener" href="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes" data-type="URL" data-id="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes" target="_blank">so much more</a></strong>&#8230;</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="   wp-block-button"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background" href="https://marcosrego.com/client-area/downloads/?product=mrutils"><strong>Get it now (free)</strong></a></div>
</div>
</div></section>
</div></aside>



<h2 class="wp-block-heading"><strong>Installing Mr.Utils to use on the block editor</strong></h2>



<p class="">On  the<strong> <a href="https://github.com/marcosrego-web/mr-utils/wiki#installation" target="_blank" rel="noreferrer noopener">documentation</a></strong> you&#8217;ll find a short and easy explanation on three methods to install <a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a>, by using Mr.Dev.&#8217;s Framework, by installing as a plugin or via manual installation. The most optimized method is using the framework because it allows you to select the type of utilities you want to use, combine and minify them.</p>



<p class=""></p>



<h3 class="  wp-block-heading"><strong>Preview Mr.Utils changes on the block editor (Optional)</strong></h3>



<p class="">Because the block editor is a very visual editor that closely resembles the front-end, you might want to see the changes that Mr.Utils will apply to your blocks, before actually saving the post.</p>



<p class="">If you did the installation as a plugin you don&#8217;t need to do anything else and you can skip to &#8220;<em><a href="#how_to_use_mrutils_features_on_the_block_editor">How to use Mr.Utils features on the block editor</a></em>&#8220;.</p>



<p class="">Otherwise, you can configure it easily by using <a href="https://marcosrego.com/development/mrdev-framework/" data-type="post" data-id="403">Mr.Dev.&#8217;s Framework</a>, or manually if that&#8217;s your thing.</p>



<div style="height:15px" aria-hidden="true" class="  wp-block-spacer"></div>



<h4 class="  wp-block-heading"><strong>Preview changes using Mr.Dev.&#8217;s Framework</strong></h4>



<p class="">On the plugin settings on the configuration tab, you will find the <em>CSS Utilities</em> section. Check the box <strong>Utils Backend</strong>, and you are ready to go.</p>



<p class="">If you want to use utilities on breakpoints, simply select the ones you want on the same group of checkboxes.</p>



<div style="height:15px" aria-hidden="true" class="  wp-block-spacer"></div>



<h4 class="  wp-block-heading"><strong>Manually configuration of the preview</strong></h4>



<p class="">Add the below code into the functions.php file or into a custom plugin.</p>



<pre class="wp-block-code"><code>add_action( 'admin_enqueue_scripts', 'mrutils_admin_styles' );
function mrutils_admin_styles() {
    wp_enqueue_style( 'mrutils_admin', 'https://raw.githubusercontent.com/marcosrego-web/mr-utils/master/css/utils.css', false, '1.0.0' );
    wp_enqueue_style( 'mrutils_admin_backend', 'https://raw.githubusercontent.com/marcosrego-web/mr-utils/master/css/utils_backend.css', false, '1.0.0' );
}</code></pre>



<p class="">If you want to add breakpoints you need to add more &#8220;wp_enqueue_style&#8221; to the above, between the first and last one, this time also indicating the intended media query, like this:</p>



<pre class="wp-block-code"><code>wp_enqueue_style( 'mrutils_admin_phone', 'https://raw.githubusercontent.com/marcosrego-web/mr-utils/master/css/utils_phone.css', false, '1.0.0','(max-width: 768px)' );</code></pre>



<p class="">If you want to avoid external requests:</p>



<ol class="  wp-block-list"><li><a href="https://marcosrego.com/client-area/downloads/?product=mrutils">Download Mr.Utils <em>(free)</em></a> </li><li>Unzip into your website. </li><li>Replace the link on the code above, with the location where you unzipped the folder.</li></ol>



<p class=""></p>



<h2 class="wp-block-heading"><strong>How to use Mr.Utils features on the block editor</strong></h2>



<p class="">If you installed Mr.Utils as a plugin, you&#8217;ll now see the option &#8220;Utilities&#8221; when selecting a block. By using that interface you don&#8217;t need to know the methods explained below.</p>



<figure class="    wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-15 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-full"><a href="https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1.png"><img loading="lazy" decoding="async" width="772" height="250" data-id="2289" src="https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1.png" alt="Mr.Utils options on WordPress block editor" class="wp-image-2289" title="banner 772x250 1 - Mr.Utils enhances the block editor with 8 extra features" srcset="https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1.png 772w, https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1-300x97.png 300w, https://marcosrego.com/wp-content/uploads/2021/10/banner-772x250-1-768x249.png 768w" sizes="auto, (max-width: 772px) 100vw, 772px" /></a><figcaption>Mr.Utils options on WordPress block editor</figcaption></figure>
</figure>



<p class="">If you didn&#8217;t install Mr.Utils as a plugin, most of the methods shown below, will work by adding specific classes into <strong>Advanced > Additional CSS Class(es)</strong> on any block:</p>



<figure class="    wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/09/block-editor-with-frontedn-toolkit-1024x538.png" alt="Block editor with frontend toolkit" class="wp-image-1946" title="block editor with frontedn toolkit - Mr.Utils enhances the block editor with 8 extra features" srcset="https://marcosrego.com/wp-content/uploads/2021/09/block-editor-with-frontedn-toolkit-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/09/block-editor-with-frontedn-toolkit-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/09/block-editor-with-frontedn-toolkit-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/09/block-editor-with-frontedn-toolkit.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="  wp-block-heading"><strong>Global font-sizes</strong></h3>



<p class="">With Mr.Utils you have <strong>7 global font-sizes</strong> and it&#8217;s <strong>possible to change</strong> their values.</p>



<p class="">For example, add the class <strong>mr-fontsize5</strong> into <strong>Advanced &gt; Additional CSS Class(es)</strong> on any block that has text and see it changing sizes.</p>



<p class="">You can also use different sizes depending of the device/breakpoint joining multiple classes, for example:<br><strong>mr-fontsize5 mr-phone-fontsize4</strong><br><strong>mr-desktop-fontsize7 mr-tablet-fontsize5 mr-phone-fontsize6</strong></p>



<p class="">If you want to change the values for the 7 sizes, you can <a href="https://github.com/marcosrego-web/mr-utils/wiki/Variables#how-to-do" target="_blank" data-type="URL" data-id="https://github.com/marcosrego-web/mr-utils/wiki/Variables#how-to-do" rel="noreferrer noopener"><strong>check the documentation explaining how to change variables</strong></a>. It explains how to do it manually or using the Mr.Dev.&#8217;s Framework.</p>



<h3 class="  wp-block-heading"><strong>Global colors</strong> (Mr.Dev.&#8217;s Framework)</h3>



<p class="">For this one feature, Mr.Utils is currently not enough, you&#8217;ll want to use Mr.Dev.&#8217;s Framework to define which will be the global colors that appear on the block editor.</p>



<p class="">Being a global color means that if you select a color and then decide to change the value, all blocks using it will automatically have their colors changed to the new value.</p>



<figure class="  wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-16 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="     wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="693" data-id="958" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_styles-1024x693.jpg" alt="Mr.Dev.&#039;s Framework - Styles" class="wp-image-958" title="mrdev framework styles - Mr.Utils enhances the block editor with 8 extra features" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_styles-1024x693.jpg 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_styles-300x203.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_styles-768x520.jpg 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_styles.jpg 1342w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Use the plugin settings, or optionally use the customizer and block editor, to add global colors, typography, sizes and breakpoints.</figcaption></figure>
</figure>



<h3 class="  wp-block-heading"><strong>Remove margins and paddings of blocks</strong></h3>



<p class="">Removing margins and paddings can be very useful because currently at the moment of writing, some blocks have default margins or paddings that you might not want. It&#8217;s much easier to add a class instead of changing via CSS.</p>



<p class="">With Mr.Utils you can choose the side you want to remove the margin/padding or remove on all sides. Simply add the correspondent class into <strong>Advanced &gt; Additional CSS Class(es</strong>):</p>



<figure class="wp-block-table"><table><tbody><tr><td>mr-nomargin</td><td>mr-nopadding</td></tr><tr><td>mr-nomargintop</td><td>mr-nopaddingtop</td></tr><tr><td> mr-nomarginright</td><td> mr-nopaddingright</td></tr><tr><td> mr-nomarginbottom</td><td> mr-nopaddingbottom</td></tr><tr><td> mr-nomarginleft</td><td> mr-nopaddingleft</td></tr></tbody></table></figure>



<p class="">And you can also remove the margin/padding only on specific devices/breakpoints, for example:</p>



<p class=""><strong>mr-desktop-nomargin<br>mr-phone-nopaddingright</strong></p>



<h3 class="  wp-block-heading"><strong>Add global margins and paddings</strong></h3>



<p class="">Mr.Utils brings the classes <strong>mr-margin</strong> and <strong>mr-padding</strong>, that can also point to specific sides of the block:</p>



<figure class="wp-block-table"><table><tbody><tr><td>mr-margin</td><td>mr-padding</td></tr><tr><td>mr-margintop</td><td>mr-paddingtop</td></tr><tr><td> mr-marginright</td><td> mr-paddingright</td></tr><tr><td> mr-marginbottom</td><td> mr-paddingbottom</td></tr><tr><td> mr-marginleft</td><td> mr-paddingleft</td></tr></tbody></table></figure>



<p class="">And you can also use the margin/padding only on specific devices/breakpoints, for example:</p>



<p class=""><strong>mr-desktop-margin<br>mr-phone-paddingright</strong></p>



<p class="">If you want to change the values for the global margins and paddings, you can <a href="https://github.com/marcosrego-web/mr-utils/wiki/Variables#how-to-do" data-type="URL" data-id="https://github.com/marcosrego-web/mr-utils/wiki/Variables#how-to-do" target="_blank" rel="noreferrer noopener"><strong>check the documentation explaining how to change variables</strong></a>. It explains how to do it manually <strong>or using the Mr.Dev.&#8217;s Framework</strong>.</p>



<h3 class="  wp-block-heading"><strong>Change visibility of a block depending of the device</strong></h3>



<p class="">To show or hide a block, you can use the classes <strong>mr-show</strong> and <strong>mr-hide</strong> respectively.</p>



<p class="">To point to specific devices/breakpoints, all you have to do is to add the device name between the prefix and action. Here are some examples:</p>



<figure class="  wp-block-table is-style-regular"><table><tbody><tr><td class="has-text-align-left" data-align="left">Show on phone only:</td><td><strong>mr-hide mr-phone-show</strong></td></tr><tr><td class="has-text-align-left" data-align="left">Hide on phone:</td><td><strong>mr-phone-hide</strong></td></tr><tr><td class="has-text-align-left" data-align="left">Show on portrait devices:</td><td><strong>mr-landscape-hide</strong></td></tr><tr><td class="has-text-align-left" data-align="left">Hide on desktop and laptop:</td><td><strong>mr-desktop-hide mr-laptop-hide</strong></td></tr></tbody></table></figure>



<figure class="    wp-block-image size-large"><a href="https://marcosrego.com/websites/itemzero/"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/04/marcosrego-itemzero-open-graph-1024x538.png" alt="Itemzero Open Graph Image" class="wp-image-1012" title="marcosrego itemzero open graph - Mr.Utils enhances the block editor with 8 extra features" srcset="https://marcosrego.com/wp-content/uploads/2021/04/marcosrego-itemzero-open-graph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/04/marcosrego-itemzero-open-graph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/04/marcosrego-itemzero-open-graph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/04/marcosrego-itemzero-open-graph.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption> The <a href="https://marcosrego.com/websites/itemzero/" data-type="post" data-id="1">Itemzero Shop</a> has some good examples of showing content depending of the device/breakpoint using <a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a>. </figcaption></figure>



<h3 class="  wp-block-heading"><strong>Change how Columns blocks display on mobile</strong></h3>



<p class="">By default when you set the number of columns on the Columns block, that number will apply on desktop. On mobile the columns will be automatically stacked below each other.</p>



<p class="">But if you only have images or you don&#8217;t have a lot of text in the columns, it could look better with 2 columns on each line.</p>



<p class="">You can do that with Mr.Utils, you can add classes such as <strong>mr-phone-2perline</strong> into <strong>Advanced &gt; Additional Class(es)</strong>.</p>



<p class="">If you installed the toolkit as a plugin it&#8217;s even more friendly: Click on &#8220;Utilities&#8221;, on the phone icon and then on layout you choose 2 as the number of items per line.</p>



<p class=""></p>



<h3 class="  wp-block-heading"><strong>Change the order of blocks depending of the device</strong></h3>



<p class="">Changing the order of blocks is easy with drag and drop but if you want to change the order depending of the device/breakpoint, you&#8217;ll need something more:</p>



<ol class="  wp-block-list"><li><strong>Select all the blocks that will be reordered</strong> and then select the option &#8220;<strong>Group</strong>&#8220;.</li><li>On the <strong>Group Block</strong> go to <strong>Advanced &gt; Additional CSS Class(es)</strong> and add the class <strong>mr-1perline</strong> (You can replace 1 with any number between 0 [infinite] and 12, this would be similar to using columns).</li><li>Then select the first block you want to reorder and on <strong>Advanced &gt; Additional CSS Class(es)</strong> section, add the class <strong>mr-<em>breakpoint</em>-order</strong> followed by a number between -1 and 12 and replacing <em>breakpoint</em> with the device name (desktop, laptop, tablet, phone or another custom breakpoint that exists). Example: <strong>mr-phone-order2</strong>. Do the same for each block inside the group (Repeated numbers are allowed).</li></ol>



<p class=""></p>



<h3 class="  wp-block-heading"><strong>Horizontal scroll list of posts</strong></h3>



<p class="">Using the block &#8220;Latest Posts&#8221;, or any other block that works as a list, you can add the class <strong>mr-swipecontent</strong> or <strong>mr-horizontalscrollcontent</strong> into <strong style="color: var(--main-text-color) ; font-family: var(--text-font, &quot;Arial,Helvetica Neue,Helvetica&quot;); font-size: revert; background-color: var(--main-background-color, #dfdfd0);">Advanced &gt; Additional CSS Class(es)</strong>, to make that list flow horizontally and become scrollable when the amount of items is big.</p>



<figure class="    wp-block-image size-large"><a href="https://marcosrego.com/websites/ressanogarcia/"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/04/ressanogarciaarquitectos-marcosrego-site-opengraph-1024x538.png" alt="Ressano Garcia Arquitectos Open Graph Image" class="wp-image-1813" title="ressanogarciaarquitectos marcosrego site opengraph - Mr.Utils enhances the block editor with 8 extra features" srcset="https://marcosrego.com/wp-content/uploads/2021/04/ressanogarciaarquitectos-marcosrego-site-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/04/ressanogarciaarquitectos-marcosrego-site-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/04/ressanogarciaarquitectos-marcosrego-site-opengraph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/04/ressanogarciaarquitectos-marcosrego-site-opengraph.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption>The website <strong><a href="https://marcosrego.com/websites/ressanogarcia/">Ressano Garcia Arquitectos</a></strong> is a good example of horizontal scrolling lists of posts using <a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a>.</figcaption></figure>



<div style="height:15px" aria-hidden="true" class="  wp-block-spacer"></div>



<p class=""><strong>Those are the 8 features I wanted to share with you!</strong> I&#8217;ll update this post If I add more into <a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">this front-end toolkit</a>.</p>



<h2><b>Comments</b></h2>
<div id="disqus_thread"></div>
<script>
if(mrGetCookie('cookielawinfo-checkbox-functional') == 'yes') {
    var disqus_config = function () {
        this.page.url = (location.protocol+'//'+location.host+location.pathname).replace("/account/", "/");
        this.page.identifier = document.querySelector("article").id.replace("post-", "");
    };
    
    (function() {
    var d = document, s = d.createElement('script');
    s.src = 'https://marcosrego-web.disqus.com/embed.js';
    s.setAttribute('data-timestamp', +new Date());
    (d.head || d.body).appendChild(s);
    })();
} else {
    document.querySelector('#disqus_thread').innerHTML = 'You cannot view or add comments because you did not consent to the use of functional cookies: <a class="  cli_manage_current_consent" style="cursor:pointer;">Manage your consent.</a>';
}
</script>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The block editor with a front-end toolkit is still advised in 2021</title>
		<link>https://marcosrego.com/blog/solve-block-editor-toolkit/</link>
		
		<dc:creator><![CDATA[Marcos Rego]]></dc:creator>
		<pubDate>Wed, 29 Sep 2021 19:01:35 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Block editor]]></category>
		<category><![CDATA[For developers]]></category>
		<category><![CDATA[Mr.Utils]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://marcosrego.com/?p=1878</guid>

					<description><![CDATA[The block editor (aka Gutenberg) is the default site builder of WordPress and it&#8217;s the most optimized and performative you can have on this CMS. But it&#8217;s still growing and currently lacking some features. On this post, I&#8217;ll let you know why a front-end toolkit is currently the best future-proof solution to get some of [&#8230;]]]></description>
										<content:encoded><![CDATA[<span id="more-1878"></span>
<!--noteaser-->



<p class="">The block editor (aka Gutenberg) is the default site builder of WordPress and it&#8217;s the most optimized and performative you can have on this CMS. But it&#8217;s still growing and currently lacking some features.</p>



<p class="">On this post, I&#8217;ll let you know why a front-end toolkit is currently the best future-proof solution to get some of those lacking features right now.</p>



<aside class="  wp-block-group sidebar has-main-text-color-color has-aside-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<section class="wp-block-group has-main-text-color-color has-main-background-color-background-color has-text-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<h3 class="   has-main-text-color-color has-text-color wp-block-heading"><strong>Did you know?</strong></h3>



<figure class="    wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png" alt="Mr.Utils Opengraph Image" class="wp-image-1029" title="mrutils marcosrego opengraph - The block editor with a front-end toolkit is still advised in 2021" srcset="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-1024x538.png 1024w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-300x158.png 300w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph-768x403.png 768w, https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="  has-main-text-color-color has-text-color"><strong><a href="https://marcosrego.com/development/mr-utils/" data-type="post" data-id="473">Mr.Utils</a></strong> gives you a set of classes with a clear syntax, such as <em><strong>mr-phone-hide</strong></em> clearly saying to hide an element on a phone, <strong><em>mr-marginright</em></strong> to add a margin on the right side of an element and <strong><a rel="noreferrer noopener" href="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes" data-type="URL" data-id="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes" target="_blank">so much more</a></strong>&#8230;</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="   wp-block-button"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background" href="https://marcosrego.com/client-area/downloads/?product=mrutils"><strong>Get it now (free)</strong></a></div>
</div>
</div></section>
</div></aside>



<h2 class="wp-block-heading"><strong>Some features might be hidden to you</strong></h2>



<p class="">Before I dive into the use of a front-end toolkit to add some of the lacking features, it&#8217;s best to make sure that they are actually lacking from the block editor.</p>



<p class="">Your theme or plugins might lock some of the new features and in some cases your theme could simply declare support with a short code snippet.</p>



<p class=""><a href="https://developer.wordpress.org/block-editor/how-to-guides/themes/theme-support/" target="_blank" data-type="URL" data-id="https://developer.wordpress.org/block-editor/how-to-guides/themes/theme-support/" rel="noreferrer noopener">On this page of the WordPress documentation</a>, you can find some of the features that are available but need the theme or <a href="https://marcosrego.com/blog/block-editor-features-theme/" data-type="post" data-id="2106">a plugin to declare support</a>.</p>



<p class="">If all the features you need are mentioned on that page, then <a href="https://marcosrego.com/blog/block-editor-features-theme/" data-type="post" data-id="2106">declaring support is in fact the best option</a> (You can use <a href="https://marcosrego.com/development/mrdev-framework/" data-type="post" data-id="403">Mr.Dev.&#8217;s Framework</a> to do that). If they are not, then you might find a better solution by continue to read this post.</p>



<figure class="  wp-block-gallery columns-1 is-cropped wp-block-gallery-17 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://marcosrego.com/wp-content/uploads/2021/09/block-editor-hidden-features.jpg"><img loading="lazy" decoding="async" width="1024" height="437" src="https://marcosrego.com/wp-content/uploads/2021/09/block-editor-hidden-features-1024x437.jpg" alt="block editor hidden features - The block editor with a front-end toolkit is still advised in 2021" data-id="1949" data-full-url="https://marcosrego.com/wp-content/uploads/2021/09/block-editor-hidden-features.jpg" data-link="https://marcosrego.com/?attachment_id=1949" class="wp-image-1949" title="block editor hidden features - The block editor with a front-end toolkit is still advised in 2021" srcset="https://marcosrego.com/wp-content/uploads/2021/09/block-editor-hidden-features-1024x437.jpg 1024w, https://marcosrego.com/wp-content/uploads/2021/09/block-editor-hidden-features-300x128.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/09/block-editor-hidden-features-768x328.jpg 768w, https://marcosrego.com/wp-content/uploads/2021/09/block-editor-hidden-features.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="blocks-gallery-item__caption">Some block editor features might be hidden, such as patterns, and individual paddings, font-sizes, line-height and gradients.</figcaption></figure></li></ul></figure>



<p class=""></p>



<h2 class="wp-block-heading"><strong>You should not use plugins to extend the block editor</strong></h2>



<p class="">The easiest solution for the lacking features would be of course, to get them via a third-party plugin, <strong>but that doesn&#8217;t mean it&#8217;s the best or the most scalable option.</strong></p>



<p class="">Plugins such <a href="https://wordpress.org/plugins/editorplus/" target="_blank" data-type="URL" data-id="https://wordpress.org/plugins/editorplus/" rel="noreferrer noopener">Editor Plus by Extendify</a>, <a href="https://wordpress.org/plugins/kadence-blocks/" target="_blank" data-type="URL" data-id="https://wordpress.org/plugins/kadence-blocks/" rel="noreferrer noopener">Kadence Blocks</a>, <a href="https://wordpress.org/plugins/lazy-blocks/" target="_blank" data-type="URL" data-id="https://wordpress.org/plugins/lazy-blocks/" rel="noreferrer noopener">Lazy Blocks</a> and <a href="https://www.advancedcustomfields.com/resources/blocks/" target="_blank" data-type="URL" data-id="https://www.advancedcustomfields.com/resources/blocks/" rel="noreferrer noopener">ACF Blocks</a> are impressive for sure but a quick look at their changelogs and you&#8217;ll notice they are bloated with features or dependencies that you might not need or that will soon be available by default on the block editor.</p>



<p class="">That leaves a question with difficult answers:<br><strong>What will happen when those new features arrive to WordPress?</strong><br>Will the plugin developers find a way to transfer all the repeated features to the methods of Gutenberg Block Editor? Or will they force everyone to keep the plugin active so their own features keep working?<br>The latter is more likely and would force to have multiple ways to do the exact same things.</p>



<figure class="   wp-block-gallery columns-1 is-cropped wp-block-gallery-18 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://marcosrego.com/wp-content/uploads/2021/09/block-editor-plugins-repeated-features.jpg"><img loading="lazy" decoding="async" width="1005" height="763" src="https://marcosrego.com/wp-content/uploads/2021/09/block-editor-plugins-repeated-features.jpg" alt="Block editor plugins repeated features" data-id="1953" data-full-url="https://marcosrego.com/wp-content/uploads/2021/09/block-editor-plugins-repeated-features.jpg" data-link="https://marcosrego.com/?attachment_id=1953" class="wp-image-1953" title="block editor plugins repeated features - The block editor with a front-end toolkit is still advised in 2021" srcset="https://marcosrego.com/wp-content/uploads/2021/09/block-editor-plugins-repeated-features.jpg 1005w, https://marcosrego.com/wp-content/uploads/2021/09/block-editor-plugins-repeated-features-300x228.jpg 300w, https://marcosrego.com/wp-content/uploads/2021/09/block-editor-plugins-repeated-features-768x583.jpg 768w" sizes="auto, (max-width: 1005px) 100vw, 1005px" /></a><figcaption class="blocks-gallery-item__caption">An example of the block editor adding a center alignment while an extra plugin adds a left alignment.</figcaption></figure></li></ul></figure>



<p class="">Doesn&#8217;t sound serious yet? What if I tell you that, having so many active options and plugins to do the same things will increase the amount of needed scripts, styles on your pages, <strong>decreasing your speed score</strong> that also affects SEO (Search Engine Optimization).</p>



<p class="">Another things to keep in mind are:</p>



<ul class="wp-block-list"><li>Some of those plugins also <strong>change the natural workflow of the editor</strong>: It&#8217;s difficult enough to force users to get used to a new way of working on their websites, imagine having multiple ways.<br>And I know WordPress always had that problem, but now that WordPress is trying to fix that with the block editor, it seems to me some of those plugins are not doing much better for the long-run.</li><li>Some of those plugins are <strong>based on old technologies and do requests to the server</strong>. The essence of the native blocks is the <strong>use of React and to do more on the client-side</strong>, that&#8217;s what makes the native blocks so well optimized compared to other site builders.</li></ul>



<p class="">Don&#8217;t you agree? Let me know in the comments section below.</p>



<p class="">If still you prefer to go with a plugin, choose one that lets you <strong>go back to the default values</strong> and/or that <strong>helps you transition back,</strong> when you don&#8217;t want to rely on that plugin anymore.</p>



<p class=""></p>



<h2 class="wp-block-heading"><strong>What you need on the block editor for now is a middle term solution!</strong></h2>



<h3 class="  wp-block-heading"><strong>Using a front-end toolkit</strong></h3>



<p class="">Get a lightweight and easy to use front-end toolkit, such as <strong><a href="https://marcosrego.com/development/mr-utils/">Mr.Utils</a></strong> (free). It includes classes that are friendly for everyone and can be added on each block &#8220;Advanced&#8221; section.</p>



<p class="">And if that&#8217;s not friendly enough for you or your clients, you can actually install Mr.Utils as a plugin for free. It adds an interface on the block editor that allows to add classes without actually knowing them. But of course, this starts to get closer to the plugins mentioned above, still lighter than them though!</p>



<h3 class="  wp-block-heading"><strong>Using a lightweight framework</strong></h3>



<p class="">Or get a lightweight framework such as <strong><a href="https://marcosrego.com/development/mrdev-framework/">Mr.Dev.&#8217;s Framework</a></strong>, that focus on new features, discontinues the repeated ones <em>(that are already available on the CMS)</em> and even helps you on the transition to the CMS method/feature.</p>



<p class="">The framework also has the option to use an interface on the block editor.</p>



<h3 class="  wp-block-heading"><strong>Solutions overview</strong></h3>



<p class="">Mr.Utils front-end toolkit, Mr.Utils as a plugin and Mr.Dev&#8217;s Framework are much lighter compared to the plugins mentioned above and much easier to scale and transition to future methods.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-3 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="  wp-block-video"><video controls muted poster="https://marcosrego.com/wp-content/uploads/2021/06/mrutils-marcosrego-opengraph.png" preload="none" src="https://marcosrego.com/wp-content/uploads/2021/06/mrutils_desktop.mp4" playsinline></video><figcaption>Video showing Mr.Utils classes and un-minified code for all breakpoints (on August 2021)</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="  wp-block-video"><video controls muted poster="https://marcosrego.com/wp-content/uploads/2021/06/mrdevframework-marcosrego-opengraph.png" preload="none" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_desktop.mp4" playsinline></video><figcaption>Video showing the available options on Mr.Dev.&#8217;s Framework (on August 2021)</figcaption></figure>
</div>
</div>



<h3 class="  wp-block-heading"><strong>What about other front-end toolkits?</strong></h3>



<p class="">Of course you can use other, specially if you already have another installed on your website.<br><a href="https://getbootstrap.com/" target="_blank" data-type="URL" data-id="https://getbootstrap.com/" rel="noreferrer noopener">Bootstrap</a> probably comes to mind, but I feel my <a href="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes" target="_blank" data-type="URL" data-id="https://github.com/marcosrego-web/mr-utils/wiki/Utility-Classes" rel="noreferrer noopener">utility classes</a> are a bit more straightforward and more friendly to explain to non-tech users. They always work the same way <em>prefix-breakpoint-action</em>, such as <em>mr-phone-hide</em> or <em>mr-desktop-nomargin</em> <em>(mr-nomargin for actions on all breakpoints)</em>.</p>



<p class=""></p>



<h2 class="wp-block-heading"><strong>Getting 8 of the lacking features on the block editor</strong></h2>



<p class="">What Mr.Utils / Mr.Dev.&#8217;s Framework add to the block editor is a way to: </p>



<ol class="  wp-block-list"><li><strong>Change to a global font-size.</strong></li><li><strong>Change global color.</strong></li><li><strong>Remove margins and paddings of blocks.</strong></li><li><strong>Add global margins and paddings.</strong></li><li><strong>Change visibility of a block depending of the device.</strong></li><li><strong>Change how Columns blocks display on mobile</strong></li><li><strong>Change order of blocks depending of the device.</strong></li><li><strong>Horizontal scroll list of posts.</strong></li></ol>



<p class=""><a href="https://marcosrego.com/blog/mr-utils-block-editor-features/" data-type="post" data-id="1997"><strong>Check the next post</strong></a> where I go deeper on how to do those <em>actions</em>.</p>



<h2><b>Comments</b></h2>
<div id="disqus_thread"></div>
<script>
if(mrGetCookie('cookielawinfo-checkbox-functional') == 'yes') {
    var disqus_config = function () {
        this.page.url = (location.protocol+'//'+location.host+location.pathname).replace("/account/", "/");
        this.page.identifier = document.querySelector("article").id.replace("post-", "");
    };
    
    (function() {
    var d = document, s = d.createElement('script');
    s.src = 'https://marcosrego-web.disqus.com/embed.js';
    s.setAttribute('data-timestamp', +new Date());
    (d.head || d.body).appendChild(s);
    })();
} else {
    document.querySelector('#disqus_thread').innerHTML = 'You cannot view or add comments because you did not consent to the use of functional cookies: <a class="  cli_manage_current_consent" style="cursor:pointer;">Manage your consent.</a>';
}
</script>
]]></content:encoded>
					
		
		<enclosure url="https://marcosrego.com/wp-content/uploads/2021/06/mrutils_desktop.mp4" length="6043294" type="video/mp4" />
<enclosure url="https://marcosrego.com/wp-content/uploads/2021/06/mrdev-framework_desktop.mp4" length="2424924" type="video/mp4" />

			</item>
		<item>
		<title>Mr.Dev.&#8217;s Widget</title>
		<link>https://marcosrego.com/development/mrdev-widget/</link>
		
		<dc:creator><![CDATA[Marcos Rego]]></dc:creator>
		<pubDate>Thu, 19 Aug 2021 23:50:29 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mr.Dev.]]></category>
		<category><![CDATA[Mr.Dev.'s Widget]]></category>
		<category><![CDATA[Mr.Utils]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://marcosrego.com/?p=574</guid>

					<description><![CDATA[Mr.Dev. is your provider of developing tools! He gives you a powerful WordPress widget to display your content with many customizable layouts and options.]]></description>
										<content:encoded><![CDATA[<span id="more-574"></span>
<!--noteaser-->



<figure class=" fixed-video_mobile mr-fadein  wp-block-video fixed-video_mobile mr-fadein"><video autoplay loop muted preload="none" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdevwidget_phone.mp4" playsinline></video></figure>



<figure class=" fixed-video_desktop mr-fadein  wp-block-video fixed-video_desktop mr-fadein"><video autoplay loop muted preload="none" src="https://marcosrego.com/wp-content/uploads/2021/06/mrdevwidget_desktop.mp4" playsinline></video></figure>



<h2 class="wp-block-heading" id="mr-dev-is-your-provider-of-developing-tools"><strong>Mr.Dev. is your provider of developing tools!</strong></h2>



<h3 class="  wp-block-heading" id="he-gives-you-a-powerful-wordpress-widget-to-display-your-content-with-many-customizable-layouts-and-options"><strong>He gives you a powerful WordPress widget to display your content with many customizable layouts and options.</strong></h3>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="   wp-block-button"><a class="wp-block-button__link has-invert-color-color has-link-color-background-color has-text-color has-background wp-element-button" href="https://marcosrego.com/client-area/downloads/?product=mrdevs-widget"><strong>Get it now (free)</strong></a></div>



<div class="   wp-block-button"><a class="wp-block-button__link has-main-background-color-color has-main-text-color-background-color has-text-color has-background wp-element-button" href="https://marcosrego.com/mrdev-widget-module-themes/">themes &amp; layouts</a></div>



<div class="   wp-block-button"><a class="wp-block-button__link has-main-background-color-color has-main-text-color-background-color has-text-color has-background wp-element-button" href="https://marcosrego.com/mrdev-widget-module-features/">features</a></div>
</div>
]]></content:encoded>
					
		
		<enclosure url="https://marcosrego.com/wp-content/uploads/2021/06/mrdevwidget_desktop.mp4" length="1035711" type="video/mp4" />
<enclosure url="https://marcosrego.com/wp-content/uploads/2021/06/mrdevwidget_phone.mp4" length="8592552" type="video/mp4" />

			</item>
	</channel>
</rss>
