You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: blog/entries/2025-10-06-refactoring-the-cc-chooser-pt-2/index.html
+13-15Lines changed: 13 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -212,9 +212,8 @@ <h2 id="turning-scope-into-technical-methods">Turning scope into technical metho
212
212
<p>Everything else can be assumed to be unknown (non matching).</p>
213
213
<p>This gives us a starting point to set up a simple state machine, and check
214
214
against routinely at specific events and provide recommendations and/or update
215
-
the interface.
216
-
Reducing the JavaScript footprint and overhead</p>
217
-
<p>Once we no longer needed a complex state management engine because we only have
215
+
the interface.</p>
216
+
<h2id="reducing-the-javascript-footprint-and-overhead">Reducing the JavaScript footprint and overhead</h2><p>Once we no longer needed a complex state management engine because we only have
218
217
14 possible correct “states” we’d like to handle, we could move away from
219
218
the need for a larger more complex state management framework like Vue.js.</p>
220
219
<p>The 2020 beta Chooser utilized Vue.js and its dependency chain, the newer 2025
@@ -240,9 +239,8 @@ <h2 id="turning-scope-into-technical-methods">Turning scope into technical metho
240
239
<p>The state paths and smaller footprint means that we are left with a minimal
241
240
amount of logic required to alter the visual state of the UX, and to allow a
242
241
user to move through the stepper, the attribution fields, and the various
243
-
marking formats and their individual functionalities.
244
-
Embrace native support and semantics</p>
245
-
<p>As the decision stepper is the main interaction element, the new markup was
242
+
marking formats and their individual functionalities.</p>
243
+
<h2id="embrace-native-support-and-semantics">Embrace native support and semantics</h2><p>As the decision stepper is the main interaction element, the new markup was
246
244
first built from there, setting up a semantic form, grouped into fieldsets, and
247
245
labelled accordingly.</p>
248
246
<p>The classes in particular let the markup describe each component in a way that
@@ -255,7 +253,7 @@ <h2 id="turning-scope-into-technical-methods">Turning scope into technical metho
255
253
from which more robust Web Components could be utilized later if such a need
256
254
arose, giving us a stable path of complexity to follow down the line.</p>
257
255
<p>We also opted to avoid the use of popup modals and tabs, and instead leaned on
258
-
<code><summary>/<details></code> elements instead to accomplish similar behavior without
256
+
<code><summary></code>/<code><details></code> elements instead to accomplish similar behavior without
259
257
the
260
258
need for JS based behavior. Once again keeping our JS footprint much smaller.</p>
261
259
<h2id="improving-the-ux">Improving the UX</h2><h3id="reducing-friction">Reducing friction</h3><p>We tried to reduce redundancy and better control friction within the UX
@@ -273,11 +271,12 @@ <h2 id="improving-the-ux">Improving the UX</h2><h3 id="reducing-friction">Reduci
273
271
“Reset” button as well, since moving backwards through the fieldsets will
274
272
reset lower fieldset values automatically. We also get a boost in accessibility
275
273
with its removal, since it’s not advised as a solid use case within
276
-
accessible interfaces, due to it being too easily clicked.</p>
277
-
<p>“The Web would be a happier place if virtually all Reset buttons were
278
-
removed. This button almost never helps users, but often hurts them.” (Reset
279
-
and Cancel Buttons - NN/G)</p>
280
-
<p>We also removed the final Done button and its adjacent shaking behavior. The
274
+
accessible interfaces, <ahref="https://www.nngroup.com/articles/reset-and-cancel-buttons/">due to it being too easily clicked</a>.</p>
275
+
<blockquote><p>“The Web would be a happier place if virtually all Reset buttons were
276
+
removed. This button almost never helps users, but often hurts them.” (<ahref="https://www.nngroup.com/articles/reset-and-cancel-buttons/">Reset
277
+
and Cancel Buttons - NN/G</a>)</p>
278
+
</blockquote>
279
+
<p>We also removed the final "Done" button and its adjacent shaking behavior. The
281
280
“Done” button had an erroneous purpose, since the recommendation was
282
281
already available on the right, and it was unclear why the “Done” button
283
282
would be necessary to reach a final UX state.</p>
@@ -307,9 +306,8 @@ <h3 id="adding-friction">Adding friction</h3><p>To make the UX more usable we al
307
306
<p>We also leaned more on the “Need Help?” section to provide deeper
308
307
explanations rather than adding more information in other areas. This
309
308
section’s newer placement lets it serve as a way to drill down further,
310
-
without having to increase the density of information in the fieldsets.
311
-
Better related UX element binding and separation</p>
312
-
<p>Despite being a rather simple interface the Chooser offers several overlapping
309
+
without having to increase the density of information in the fieldsets.</p>
310
+
<h3id="better-related-ux-element-binding-and-separation">Better related UX element binding and separation</h3><p>Despite being a rather simple interface the Chooser offers several overlapping
313
311
use cases, and as such we tried to find subtle ways to bind distinct areas of
314
312
input to related areas of output either with attention focus, or with some
Copy file name to clipboardExpand all lines: blog/feed.xml
+13-15Lines changed: 13 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -65,9 +65,8 @@ particular recommendation can be accurately made.</p>
65
65
<p>Everything else can be assumed to be unknown (non matching).</p>
66
66
<p>This gives us a starting point to set up a simple state machine, and check
67
67
against routinely at specific events and provide recommendations and/or update
68
-
the interface.
69
-
Reducing the JavaScript footprint and overhead</p>
70
-
<p>Once we no longer needed a complex state management engine because we only have
68
+
the interface.</p>
69
+
<h2 id="reducing-the-javascript-footprint-and-overhead">Reducing the JavaScript footprint and overhead</h2><p>Once we no longer needed a complex state management engine because we only have
71
70
14 possible correct “states” we’d like to handle, we could move away from
72
71
the need for a larger more complex state management framework like Vue.js.</p>
73
72
<p>The 2020 beta Chooser utilized Vue.js and its dependency chain, the newer 2025
@@ -93,9 +92,8 @@ also flexible enough to build out newer features over time.</p>
93
92
<p>The state paths and smaller footprint means that we are left with a minimal
94
93
amount of logic required to alter the visual state of the UX, and to allow a
95
94
user to move through the stepper, the attribution fields, and the various
96
-
marking formats and their individual functionalities.
97
-
Embrace native support and semantics</p>
98
-
<p>As the decision stepper is the main interaction element, the new markup was
95
+
marking formats and their individual functionalities.</p>
96
+
<h2 id="embrace-native-support-and-semantics">Embrace native support and semantics</h2><p>As the decision stepper is the main interaction element, the new markup was
99
97
first built from there, setting up a semantic form, grouped into fieldsets, and
100
98
labelled accordingly.</p>
101
99
<p>The classes in particular let the markup describe each component in a way that
@@ -108,7 +106,7 @@ lean on existing HTML and JS functionality, and also established a foundation
108
106
from which more robust Web Components could be utilized later if such a need
109
107
arose, giving us a stable path of complexity to follow down the line.</p>
110
108
<p>We also opted to avoid the use of popup modals and tabs, and instead leaned on
111
-
<code>&lt;summary&gt;/&lt;details&gt;</code> elements instead to accomplish similar behavior without
109
+
<code>&lt;summary&gt;</code>/<code>&lt;details&gt;</code> elements instead to accomplish similar behavior without
112
110
the
113
111
need for JS based behavior. Once again keeping our JS footprint much smaller.</p>
114
112
<h2 id="improving-the-ux">Improving the UX</h2><h3 id="reducing-friction">Reducing friction</h3><p>We tried to reduce redundancy and better control friction within the UX
@@ -126,11 +124,12 @@ recommendation much more quickly. This change also lets us remove the
126
124
“Reset” button as well, since moving backwards through the fieldsets will
127
125
reset lower fieldset values automatically. We also get a boost in accessibility
128
126
with its removal, since it’s not advised as a solid use case within
129
-
accessible interfaces, due to it being too easily clicked.</p>
130
-
<p>“The Web would be a happier place if virtually all Reset buttons were
131
-
removed. This button almost never helps users, but often hurts them.” (Reset
132
-
and Cancel Buttons - NN/G)</p>
133
-
<p>We also removed the final Done button and its adjacent shaking behavior. The
127
+
accessible interfaces, <a href="https://www.nngroup.com/articles/reset-and-cancel-buttons/">due to it being too easily clicked</a>.</p>
128
+
<blockquote><p>“The Web would be a happier place if virtually all Reset buttons were
129
+
removed. This button almost never helps users, but often hurts them.” (<a href="https://www.nngroup.com/articles/reset-and-cancel-buttons/">Reset
130
+
and Cancel Buttons - NN/G</a>)</p>
131
+
</blockquote>
132
+
<p>We also removed the final "Done" button and its adjacent shaking behavior. The
134
133
“Done” button had an erroneous purpose, since the recommendation was
135
134
already available on the right, and it was unclear why the “Done” button
136
135
would be necessary to reach a final UX state.</p>
@@ -160,9 +159,8 @@ given the chance to fully understand what they are doing by utilizing CC0.</p
160
159
<p>We also leaned more on the “Need Help?” section to provide deeper
161
160
explanations rather than adding more information in other areas. This
162
161
section’s newer placement lets it serve as a way to drill down further,
163
-
without having to increase the density of information in the fieldsets.
164
-
Better related UX element binding and separation</p>
165
-
<p>Despite being a rather simple interface the Chooser offers several overlapping
162
+
without having to increase the density of information in the fieldsets.</p>
163
+
<h3 id="better-related-ux-element-binding-and-separation">Better related UX element binding and separation</h3><p>Despite being a rather simple interface the Chooser offers several overlapping
166
164
use cases, and as such we tried to find subtle ways to bind distinct areas of
167
165
input to related areas of output either with attention focus, or with some
0 commit comments