This template (like all templates) is within the scope of WikiProject Templates, a group dedicated to improving the maintenance of Wikipedia's templates. This particular template is especially important to the project because it is used in the maintenance of other templates. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.TemplatesWikipedia:WikiProject TemplatesTemplate:WikiProject TemplatesTemplates
Module:Navbox/sandbox is currently set up to serve as the backend for all three templates. This has the advantage of keeping the code and configuration files in one place, so that it's easier to maintain consistency between the three, and allows for nesting one type of navbox inside another using the |type= (or |1_type=) parameter. It also allows replacing a call to {{navbox with columns}} or {{navbox with collapsible groups}} with {{#invoke:navbox|with columns}} or {{#invoke:navbox|with collapsible groups}}.
The downside is that Module:Navbox gets larger and somewhat harder to navigate, but I think the reuse of the helper functions makes it worth it.
Since the default styles (bodystyle, basestyle, titlestyle, etc.) set background colors but do not set text colors, using this template creates Lint Errors. Please fix. Rob Kelk23:14, 30 January 2025 (UTC)[reply]
The backgrounds are specifically defined in the default styles. (That's what's creating the Lint Errors; background colors are specified but text colors are not. In order to stop creating the errors, either both need to be defined or neither need to be defined.) --Rob Kelk20:36, 31 January 2025 (UTC)[reply]
If it's the default styles you're actually complaining about, which are not in fact set by any of the various style parameters as referenced in your initial comment, I refer you to this discussion. Izno (talk) 01:40, 1 February 2025 (UTC)[reply]
Possibly. The documentation is not protected, so if you see a problem with it, and you know how to fix it, please do so. If you are reporting a problem with a specific page, please link to a page with an actual problem. – Jonesey95 (talk) 03:43, 3 February 2025 (UTC)[reply]
I didn't know that I had to specify that it was this page's documentation when talking about this page. Also, I don't know how things were fixed. --`Rob Kelk
This would need to be tested with multiple other configurations e.g. subboxes and groups, and all of those have a reason themselves anyway. Width of 1px is there to ensure certain cells are guaranteed to be the minimum size, and padding is insufficient for e.g. the image cell (and I suspect is there for whitespace between rows). Izno (talk) 16:13, 29 April 2025 (UTC)[reply]
We want to minimize the width of the group cells, and setting their width to 1px does so. Or did so, I'm not sure which. That's why those are set to 1px in those locations. Izno (talk) 16:08, 1 May 2025 (UTC)[reply]
You were mentioned via being quoted, because of your earlier question. (Technically, not a direct quote. A translated version of your comment was attributed to you.) Whatback11 is continuing to mirror the conversation between the Korean and English versions of this discussion. (With translations of each comment.) I'll now be mentioned as well, presumably. FeRDNYC (talk) 09:06, 14 May 2025 (UTC)[reply]
I'm confused. Module:Navbox hasn't changed since January, yet I can find no :css('padding','3px') on line 531, no :css('width','1px') on line 171, and no :css('width','1px') on line 255.
In general principle, though, applying inline styles when generating HTML programmatically is a code smell. Even if those styles are needed, that's what style classes are for. It's as easy to generate a class="" attribute as it is to generate a style="" attribute, and the class="" doesn't screw up your carefully-planned CSS (or interfere with being able to make design updates down the road just by tweaking that CSS).
And if the styles apply in certain specific situations that can only be determined algorithmically, that's fine. (Although it's surprising just how much you can accomplish using pure CSS, thanks to pseudo-classes like :first-child, :nth-of-type, and if you can afford to get really fancy, :has().) But even in code-only situations, it's still better to define a new class to represent those cases, :addClass()that in the code, and apply the styles to the class instead of inline. (We have TemplateStyles for a reason, after all.)
The overuse of inline styles is almost certainly a big part of why there are so many ugly !important rules in the various site and skin CSS files, as designers then try to force the CSS to override style="" attributes. And when it comes to code smells, they don't get much stinkier than !important.
So, IOW — and purely in my opinion (though it's not a particularly humble one, in this instance) — if "the group cells" need to have a width of 1px, and only the code can determine what's a group cell...
Bad
ifi_am_a_group_cell_and_I_have_an_image-- or whateverthenrow:tag('td'):stuffStuff():css('width','1px')
I think the reason this is inline CSS and not classes is that the class names would be just as long as what is added inline, or something to that effect. What they're doing here also doesn't have any particular need to be overwritten by arbitrary other requirements. (I'm not particularly compelled to defend the position.)