<?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>Caolán McNamara, Author at Collabora Online and Collabora Office</title>
	<atom:link href="https://www.collaboraonline.com/blog/author/cmcnamara/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.collaboraonline.com/blog/author/cmcnamara/</link>
	<description>Secure Document Collaboration, Controlled by You</description>
	<lastBuildDate>Thu, 26 Mar 2026 13:01:08 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://www.collaboraonline.com/wp-content/uploads/2023/06/collabora-symbols-600-150x150.png</url>
	<title>Caolán McNamara, Author at Collabora Online and Collabora Office</title>
	<link>https://www.collaboraonline.com/blog/author/cmcnamara/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>New MetricSpinButton implementation</title>
		<link>https://www.collaboraonline.com/blog/new-metricspinbutton-implementation/</link>
					<comments>https://www.collaboraonline.com/blog/new-metricspinbutton-implementation/#respond</comments>
		
		<dc:creator><![CDATA[Caolán McNamara]]></dc:creator>
		<pubDate>Thu, 26 Mar 2026 13:01:08 +0000</pubDate>
				<category><![CDATA[Developer Blog]]></category>
		<guid isPermaLink="false">https://www.collaboraonline.com/?p=56835</guid>

					<description><![CDATA[<p>A “metric” spinbutton is a spinbutton that has an associated unit: cm/inch, points and percentage are common units used. The previous implementation used the standard spinbuttons and overlaid the unit some distance from the trailing edge so it could be seen and not obscure the value. Putting the unit inside the spinbutton edit area wasn’t [&#8230;]</p>
<p>The post <a href="https://www.collaboraonline.com/blog/new-metricspinbutton-implementation/">New MetricSpinButton implementation</a> appeared first on <a href="https://www.collaboraonline.com/">Collabora Online and Collabora Office</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="56835" class="elementor elementor-56835" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-afef36c e-flex e-con-boxed e-con e-parent" data-id="afef36c" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-0c0f29d elementor-author-box--avatar-yes elementor-author-box--name-yes elementor-author-box--biography-yes elementor-author-box--link-no elementor-widget elementor-widget-author-box" data-id="0c0f29d" data-element_type="widget" data-widget_type="author-box.default">
				<div class="elementor-widget-container">
							<div class="elementor-author-box">
							<div  class="elementor-author-box__avatar">
					<img decoding="async" src="https://secure.gravatar.com/avatar/0d61624e78ae802eb0ec72c6f433e812a52575ade788565f09a377fff9a9a5e0?s=300&#038;d=mm&#038;r=g" alt="Picture of Caolán McNamara" loading="lazy">
				</div>
			
			<div class="elementor-author-box__text">
									<div >
						<h4 class="elementor-author-box__name">
							Caolán McNamara						</h4>
					</div>
				
									<div class="elementor-author-box__bio">
											</div>
				
							</div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-e249e51 elementor-widget elementor-widget-text-editor" data-id="e249e51" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									A “metric” spinbutton is a spinbutton that has an associated unit: cm/inch, points and percentage are common units used. The previous implementation used the standard spinbuttons and overlaid the unit some distance from the trailing edge so it could be seen and not obscure the value. Putting the unit inside the spinbutton edit area wasn’t possible.								</div>
				</div>
		<div class="elementor-element elementor-element-591a4be e-con-full e-flex e-con e-child" data-id="591a4be" data-element_type="container">
		<div class="elementor-element elementor-element-3663cb5 e-con-full e-flex e-con e-child" data-id="3663cb5" data-element_type="container">
				<div class="elementor-element elementor-element-394dac6 elementor-widget elementor-widget-image" data-id="394dac6" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
												<figure class="wp-caption">
										<img fetchpriority="high" decoding="async" width="800" height="769" src="https://www.collaboraonline.com/wp-content/uploads/2026/03/New-MetricSpinButton-implementation-001-1024x984.png" class="attachment-large size-large wp-image-56837" alt="" srcset="https://www.collaboraonline.com/wp-content/uploads/2026/03/New-MetricSpinButton-implementation-001-1024x984.png 1024w, https://www.collaboraonline.com/wp-content/uploads/2026/03/New-MetricSpinButton-implementation-001-300x288.png 300w, https://www.collaboraonline.com/wp-content/uploads/2026/03/New-MetricSpinButton-implementation-001-768x738.png 768w, https://www.collaboraonline.com/wp-content/uploads/2026/03/New-MetricSpinButton-implementation-001.png 1378w" sizes="(max-width: 800px) 100vw, 800px" />											<figcaption class="widget-image-caption wp-caption-text">Before</figcaption>
										</figure>
									</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-62a49e3 e-con-full e-flex e-con e-child" data-id="62a49e3" data-element_type="container">
				<div class="elementor-element elementor-element-185737b elementor-widget elementor-widget-image" data-id="185737b" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
												<figure class="wp-caption">
										<img decoding="async" width="800" height="800" src="https://www.collaboraonline.com/wp-content/uploads/2026/03/New-MetricSpinButton-implementation-002-1024x1024.png" class="attachment-large size-large wp-image-56841" alt="" srcset="https://www.collaboraonline.com/wp-content/uploads/2026/03/New-MetricSpinButton-implementation-002-1024x1024.png 1024w, https://www.collaboraonline.com/wp-content/uploads/2026/03/New-MetricSpinButton-implementation-002-300x300.png 300w, https://www.collaboraonline.com/wp-content/uploads/2026/03/New-MetricSpinButton-implementation-002-150x150.png 150w, https://www.collaboraonline.com/wp-content/uploads/2026/03/New-MetricSpinButton-implementation-002-768x767.png 768w, https://www.collaboraonline.com/wp-content/uploads/2026/03/New-MetricSpinButton-implementation-002.png 1376w" sizes="(max-width: 800px) 100vw, 800px" />											<figcaption class="widget-image-caption wp-caption-text">After</figcaption>
										</figure>
									</div>
				</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-af66a68 elementor-widget elementor-widget-text-editor" data-id="af66a68" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>With the new implementation (<a href="https://github.com/CollaboraOnline/online/pull/15022">https://github.com/CollaboraOnline/online/pull/15022</a>) which creates its own spinbutton-alike widget, then after much to and fro with design and testing, we now have a spinbutton with similar behavior and similar accessibility properties as the original but where the units can be shown inside the spinbutton in a more natural way.</p>								</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://www.collaboraonline.com/blog/new-metricspinbutton-implementation/">New MetricSpinButton implementation</a> appeared first on <a href="https://www.collaboraonline.com/">Collabora Online and Collabora Office</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.collaboraonline.com/blog/new-metricspinbutton-implementation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Accordion bits in sidebar</title>
		<link>https://www.collaboraonline.com/blog/accordion-bits-in-sidebar/</link>
					<comments>https://www.collaboraonline.com/blog/accordion-bits-in-sidebar/#respond</comments>
		
		<dc:creator><![CDATA[Caolán McNamara]]></dc:creator>
		<pubDate>Tue, 10 Mar 2026 09:27:08 +0000</pubDate>
				<category><![CDATA[Developer Blog]]></category>
		<guid isPermaLink="false">https://www.collaboraonline.com/?p=56485</guid>

					<description><![CDATA[<p>Among a host of other accessibility enhancements, we have implemented the W3C Accordion Pattern for our expanders, as used in the sidebar and dialogs, where we have a vertical stack of regions each with a heading and associated contents which can be expanded or collapsed. The implemented recommendation is to surround the heading area of the [&#8230;]</p>
<p>The post <a href="https://www.collaboraonline.com/blog/accordion-bits-in-sidebar/">Accordion bits in sidebar</a> appeared first on <a href="https://www.collaboraonline.com/">Collabora Online and Collabora Office</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="56485" class="elementor elementor-56485" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-1e61cc4d e-flex e-con-boxed e-con e-parent" data-id="1e61cc4d" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-25ba6ab elementor-author-box--avatar-yes elementor-author-box--name-yes elementor-author-box--biography-yes elementor-author-box--link-no elementor-widget elementor-widget-author-box" data-id="25ba6ab" data-element_type="widget" data-widget_type="author-box.default">
				<div class="elementor-widget-container">
							<div class="elementor-author-box">
							<div  class="elementor-author-box__avatar">
					<img decoding="async" src="https://secure.gravatar.com/avatar/0d61624e78ae802eb0ec72c6f433e812a52575ade788565f09a377fff9a9a5e0?s=300&#038;d=mm&#038;r=g" alt="Picture of Caolán McNamara" loading="lazy">
				</div>
			
			<div class="elementor-author-box__text">
									<div >
						<h4 class="elementor-author-box__name">
							Caolán McNamara						</h4>
					</div>
				
									<div class="elementor-author-box__bio">
											</div>
				
							</div>
		</div>
						</div>
				</div>
		<div class="elementor-element elementor-element-612a878 e-con-full e-flex e-con e-child" data-id="612a878" data-element_type="container">
		<div class="elementor-element elementor-element-652b94e e-con-full e-flex e-con e-child" data-id="652b94e" data-element_type="container">
				<div class="elementor-element elementor-element-6988f95 elementor-widget elementor-widget-text-editor" data-id="6988f95" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Among a host of other accessibility enhancements, we have implemented the <span class="colour"><u><a href="https://www.w3.org/WAI/ARIA/apg/patterns/accordion/" target="_blank" rel="noopener">W3C Accordion Pattern</a></u></span> for our expanders, as used in the sidebar and dialogs, where we have a vertical stack of regions each with a heading and associated contents which can be expanded or collapsed.</p><p>The implemented recommendation is to surround the heading area of the region with a classic <strong>h</strong> HTML tag, clarify the expand/collapse button with aria-expanded of true/false, and associate it with content region that the button controls.</p>								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-b3bed09 e-con-full e-flex e-con e-child" data-id="b3bed09" data-element_type="container">
				<div class="elementor-element elementor-element-c52973c elementor-widget elementor-widget-image" data-id="c52973c" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="642" height="602" src="https://www.collaboraonline.com/wp-content/uploads/2026/03/Caolan-Accordion-001.png" class="attachment-large size-large wp-image-56487" alt="" srcset="https://www.collaboraonline.com/wp-content/uploads/2026/03/Caolan-Accordion-001.png 642w, https://www.collaboraonline.com/wp-content/uploads/2026/03/Caolan-Accordion-001-300x281.png 300w" sizes="(max-width: 642px) 100vw, 642px" />															</div>
				</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-dcde32a elementor-widget elementor-widget-text-editor" data-id="dcde32a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Once the basic case was implemented it it became clear that we had cases of hierarchical expanders, the most extreme seen in the accessibility checker tool with multiple levels of expanders.</p><p>The natural fit here is that each additional level of the hierarchy is a higher <strong>h</strong> level, h2, h3, etc. But nothing is ever simple, the deeper levels of the hierarchy are created on demand and their full contents don’t exist until expanded, at which time they are updated with additional contents.</p>								</div>
				</div>
		<div class="elementor-element elementor-element-bf1ebf2 e-con-full e-flex e-con e-child" data-id="bf1ebf2" data-element_type="container">
		<div class="elementor-element elementor-element-f85f906 e-con-full e-flex e-con e-child" data-id="f85f906" data-element_type="container">
				<div class="elementor-element elementor-element-320a027 elementor-widget elementor-widget-text-editor" data-id="320a027" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Attempting implementation revealed a preexisting trap where expanders created two elements with the same id causing the level depth tracking to mis-categorize what level the on-demand created expanders should be assigned, resulting in a confusing mixture of h2 headings as children on h3 parents.</p><p>Fixing the latent duplicate id bug resolves the ambiguity and the hierarchical on-demand created case of nested expanders now presents appropriate accessibility information to aid navigation.</p><p>Something of a irony that the most troublesome case of improving the accessibility navigation feature was found in a sidebar dedicated to displaying potential accessibility issues in a document structure.</p>								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-4f23743 e-con-full e-flex e-con e-child" data-id="4f23743" data-element_type="container">
				<div class="elementor-element elementor-element-ee9a880 elementor-widget elementor-widget-image" data-id="ee9a880" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="642" height="866" src="https://www.collaboraonline.com/wp-content/uploads/2026/03/Caolan-Accordion-002.png" class="attachment-large size-large wp-image-56491" alt="" srcset="https://www.collaboraonline.com/wp-content/uploads/2026/03/Caolan-Accordion-002.png 642w, https://www.collaboraonline.com/wp-content/uploads/2026/03/Caolan-Accordion-002-222x300.png 222w" sizes="auto, (max-width: 642px) 100vw, 642px" />															</div>
				</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://www.collaboraonline.com/blog/accordion-bits-in-sidebar/">Accordion bits in sidebar</a> appeared first on <a href="https://www.collaboraonline.com/">Collabora Online and Collabora Office</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.collaboraonline.com/blog/accordion-bits-in-sidebar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
