Module:Clickable button/doc: Difference between revisions
More actions
No edit summary |
m 27 revisions imported |
||
| (One intermediate revision by one other user not shown) | |||
| Line 35: | Line 35: | ||
| nocat = <!-- `true` to not auto-categorize. --> | | nocat = <!-- `true` to not auto-categorize. --> | ||
<!-- Others --> | <!-- Others --> | ||
| category = <!-- Category name e.g., [[Category:Name]] | | category = <!-- Category name e.g., Category:Name or Name or [[Category:Name]] --> | ||
| class = <!-- Custom CSS class --> | | class = <!-- Custom CSS class without quotation marks --> | ||
| style = <!-- Custom CSS styling --> | | style = <!-- Custom CSS styling without quotation marks --> | ||
<!-- Legacy arguments --> | <!-- Legacy arguments --> | ||
| color = <!-- blue | red --> | | color = <!-- blue | red --> | ||
}}</syntaxhighlight> | }}</syntaxhighlight> | ||
| Line 55: | Line 55: | ||
label = 'Go to South Africa', | label = 'Go to South Africa', | ||
action = 'progressive' | action = 'progressive' | ||
weight = ' | weight = 'default', | ||
size = 'medium', | size = 'medium', | ||
icon = 'link', | icon = 'link-external', | ||
} ) | |||
} ) | |||
return buttonWikitext</syntaxhighlight> | return buttonWikitext</syntaxhighlight> | ||
<div style="text-align:center;">{{#invoke:Clickable button|main|link = South Africa| | |||
label = Go to South Africa| | |||
action = progressive| | |||
weight = default| | |||
size = medium| | |||
icon = link-external}}</div> | |||
and the value of <code class="mw-highlight mw-highlight-lang-lua"><span class="nv">buttonWikitext</span></code> would be: | and the value of <code class="mw-highlight mw-highlight-lang-lua"><span class="nv">buttonWikitext</span></code> would be: | ||
<syntaxhighlight lang=wikitext><templatestyles src=" | <syntaxhighlight lang=wikitext><<templatestyles src="Module:Cdx-button/styles.css" /><templatestyles src="Module:Cdx-button/icons.css" /><span class="cdx-button cdx-button--fake-button cdx-button--action-progressive cdx-button--weight-quiet cdx-button--size-medium" role="button" aria-disabled="false"><span class="cdx-button__icon cdx-demo-css-icon--link-external" aria-hidden="true"></span>Go to South Africa</span></syntaxhighlight> | ||
Function <code class="mw-highlight mw-highlight-lang-lua"><span class="nf">_main</span></code> would output: | Function <code class="mw-highlight mw-highlight-lang-lua"><span class="nf">_main</span></code> would output: | ||
<syntaxhighlight lang=wikitext><span class="cdx-button cdx-button--fake-button cdx-button--action-progressive cdx-button--weight-quiet cdx-button--size-medium | <syntaxhighlight lang=wikitext><span class="cdx-button cdx-button--fake-button cdx-button--action-progressive cdx-button--weight-quiet cdx-button--size-medium" role="button" aria-disabled="false"><span class="cdx-button__icon cdx-demo-css-icon--link-external" aria-hidden="true"></span>Go to South Africa</span></syntaxhighlight> | ||
As a result, unless a CSS file is added to give the appropriate class an icon, the icon will not render. | |||
== Implementation == | == Implementation == | ||
=== Length of visible label <span id="Button label length"></span> === | === Length of visible label <span id="Button label length"></span> === | ||
See [[wmdoc:codex/latest/components/demos/button.html|the Codex button component documentation]]. | |||
<includeonly> | <includeonly> | ||
<!-- Categories go here. --> | <!-- Categories go here. --> | ||
</includeonly> | </includeonly> | ||
Latest revision as of 17:55, 12 August 2026
Generates wikitext for clickable Codex button. Renders the button component from the Codex design system for Wikimedia. Includes helper functions for URL parsing and cleaning, adding tracking categories. Intended for use in templates and other modules. Implements Template:Clickable button and others. Supports legacy parameters.
- Options to include an icon or create an icon-only button.
- Target a URL or a wikilink
- Set the weight, size and state of the button (enabled or disabled).
- Dummy button creation can be disabled.
For more information on appropriate usage of UI buttons, see the Codex documentation.
- Inserts two CSS files. Module:Clickable button/styles.css is required and makes minor tweaks for word-wrapping if the visible label is too long, centering or aligning button left or right, and minimum widths as is needed for icon-only buttons and labels containing two characters or less.
- The second CSS file, Module:Clickable button/icons.css, is prepended to the button's HTML only if an icon is used.
- Supports legacy parameters from previous templates.
Usage in wikitext
editSome arguments are case-insensitive.
{{#invoke:Clickable button|main
| 1 = <!-- Alias for wikilink -->
| 2 = <!-- Alias for label -->
| label = <!-- Button visible text label -->
| link = <!-- Target wikilink -->
| url = <!-- Target external URL -->
<!-- Inputs action, weight, size, and icon are case-insensitive -->
| action = <!-- progressive | destructive | default: default. -->
| weight = <!-- primary | quiet | default: normal. -->
| size = <!-- small | large | default: medium. Automatically chooses size based on line-height and device. -->
| icon = <!-- Name of icon, stored in [[Module:Clickable button/icons.css]] e.g., search -->
| disabled = <!-- `true` or any other true value like `1` or `yes`. -->
| aria-label = <!-- [[w:ARIA]] label for accessibility DOM tree. -->
| nocat = <!-- `true` to not auto-categorize. -->
<!-- Others -->
| category = <!-- Category name e.g., Category:Name or Name or [[Category:Name]] -->
| class = <!-- Custom CSS class without quotation marks -->
| style = <!-- Custom CSS styling without quotation marks -->
<!-- Legacy arguments -->
| color = <!-- blue | red -->
}}
Usage in other modules
editEnsure you know what to expect from the function you call from another module.
function p.main(frame)emits TemplateStyles for the CSS files with the wikitext, and pre-processes the arguments in aframeusing Module:Arguments, e.g. ignore blank values'', and trim trailing whitespace.function p._main(arguments)Parses the arguments such as lowercase appropriate arguments, account for use of legacy parameters and decides whetheraria-disabledshould betrue.function p.url(url, [label])is available, not for button creation, but as an adaption of Module:URL to clean and normalise a URL string and optionally generate a label.- The module's other functions, such as
makeLinkData()andrenderLink(), are localised/local to the module and would need to be made global first to be accessible to other modules.
To call p.main() for example, use:
local createButton = require( 'Module:Clickable button/sandbox' )
buttonWikitext = createButton.main( {
link = 'South Africa',
label = 'Go to South Africa',
action = 'progressive'
weight = 'default',
size = 'medium',
icon = 'link-external',
} )
return buttonWikitext
and the value of buttonWikitext would be:
<<templatestyles src="Module:Cdx-button/styles.css" /><templatestyles src="Module:Cdx-button/icons.css" /><span class="cdx-button cdx-button--fake-button cdx-button--action-progressive cdx-button--weight-quiet cdx-button--size-medium" role="button" aria-disabled="false"><span class="cdx-button__icon cdx-demo-css-icon--link-external" aria-hidden="true"></span>Go to South Africa</span>
Function _main would output:
<span class="cdx-button cdx-button--fake-button cdx-button--action-progressive cdx-button--weight-quiet cdx-button--size-medium" role="button" aria-disabled="false"><span class="cdx-button__icon cdx-demo-css-icon--link-external" aria-hidden="true"></span>Go to South Africa</span>
As a result, unless a CSS file is added to give the appropriate class an icon, the icon will not render.
Implementation
editLength of visible label
editSee the Codex button component documentation.