Jump to content
Toggle menu
  • 8 articles
  • 75 files
  • 7 users
  • 37.8K edits
Neodyland Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Clickable button/doc: Difference between revisions

From Neodyland Wiki
No edit summary
m 27 revisions imported
 
(3 intermediate revisions by one other user not shown)
Line 2: Line 2:
{{template rating|beta}}
{{template rating|beta}}
{{lua|Module:Arguments|Module:Yesno|Module:Check for unknown parameters|Module:If preview}}
{{lua|Module:Arguments|Module:Yesno|Module:Check for unknown parameters|Module:If preview}}
{{uses templatestyles|Template:Clickable button/styles.css|Template:Clickable button/icons.css}}
{{uses templatestyles|Module:Clickable button/styles.css|Module:Clickable button/icons.css}}
{{mbox|type=message|text='''Shortcuts:'''{{nbsp}}{{mdl|module=Clickable button}}|image=none}}
{{mbox|type=message|text='''Shortcuts:'''{{nbsp}}{{mdl|module=Clickable button}}|image=none}}


Line 10: Line 10:
* Set the weight, size and state of the button (enabled or disabled).
* Set the weight, size and state of the button (enabled or disabled).
* Dummy button creation can be disabled.
* Dummy button creation can be disabled.
'''
 
For more information on appropriate usage of UI buttons, see [[wmdoc:codex/latest/components/demos/button.html|the Codex documentation]].'''
'''For more information on appropriate usage of UI buttons, see [[wmdoc:codex/latest/components/demos/button.html|the Codex documentation]].'''


<ul style="list-style-type: circle;">
<ul style="list-style-type: circle;">
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]] or Category:Name or just 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 = 'quiet',
     weight = 'default',
     size = 'medium',
     size = 'medium',
     icon = 'link',
     icon = 'link-external',
    disabled = true
} )  
} )
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="Template:Clickable button/styles.css" /><templatestyles src="Template:Clickable button/icons.css" /><span class="cdx-button cdx-button--fake-button cdx-button--action-progressive cdx-button--weight-quiet cdx-button--size-medium cdx-button--fake-button--disabled" role="button" aria-disabled="true"><span class="cdx-button__icon cdx-demo-css-icon--link" aria-hidden="true"></span>Go to South Africa</span> [[Category:Pages using disabled dummy button]]</syntaxhighlight>
<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 cdx-button--fake-button--disabled" role="button" aria-disabled="true"><span class="cdx-button__icon cdx-demo-css-icon--link" aria-hidden="true"></span>Go to South Africa</span> [[Category:Pages using disabled dummy button]]</syntaxhighlight>
<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>
And as a result, unless a CSS file is added to give the appropriate class an icon, the icon will not render.
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

Template:Template rating

Template:Uses templatestyles

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

edit

Some 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

edit

Ensure 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 a frame using 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 whether aria-disabled should be true.
  • 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() and renderLink(), 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

edit

Length of visible label

edit

See the Codex button component documentation.


Cookies help us deliver our services. By using our services, you agree to our use of cookies.