Button (TButton)
VueJs reactive <button />
component with configurable classes, variants, and most common events. Friendly with utility-first frameworks like TailwindCSS..
Playground:
Basic example
<t-button>Example button</t-button>
Props
Property | Type | Default value | Description |
---|---|---|---|
value (v-model ) | [String, Number] | null | HTML attribute |
id | String | undefined | HTML attribute |
name | String | undefined | HTML attribute |
disabled | Boolean | undefined | HTML attribute |
readonly | Boolean | undefined | HTML attribute |
autofocus | Boolean | undefined | HTML attribute |
required | Boolean | undefined | HTML attribute |
type | String | undefined | HTML attribute |
tabindex | [String, Number] | undefined | HTML attribute |
text | String | undefined | Text of the button (when no slot used) |
tagName | String | 'button' | HTML Tag to use for the component button or a |
href | String | null | Href attribute for a |
native | Boolean | false | Set to force to render the default button instead for a router-link, inertia-link, etc |
classes | [String, Array, Object] | ... | The default CSS classes |
fixedClasses | [String, Array, Object] | undefined | Fixed CSS classes that will be merged with the active set of classes |
variants | Object | undefined | The different variants of classes the component have |
variant | [String, Object] | undefined | The variant that will be used |
Note: when the href
prop is set it will change the tag name to a
.
Default value of the classes prop:
block px-4 py-2 text-white transition duration-100 ease-in-out bg-blue-500 border border-transparent rounded shadow-sm hover:bg-blue-600 focus:border-blue-500 focus:ring-2 focus:ring-blue-500 focus:outline-none focus:ring-opacity-50 disabled:opacity-50
VueRouter compatibility
This button is compatible with vue-router
, you just need to define the to
prop, if the router-link
or nuxt-link
component is available it will render the component.
RouterLink Props
When the component is rendered as RouterLink you can use the properties of that component:
Property | Type | Default value |
---|---|---|
to | [String, Object] | undefined |
replace | Boolean | false |
append | Boolean | false |
exact | Boolean | false |
activeClass | String | 'router-link-active' |
exactActiveClass | String | 'router-link-exact-active' |
InertiaJs compatibility
This button is compatible with inertia-link
and will be converted if the href
prop is set and the InertiaLink
component is available.
InertiaLink Props
When the component is rendered as RouterLink you can use the properties of that component:
Property | Type | Default value |
---|---|---|
method | String | 'get' |
data | Object | {} |
preserveState | Boolean | false |
preserveScroll | Boolean | false |
event | [String, Array] | 'click' |
only | Array | [] |
Events
Event | Arguments | Description |
---|---|---|
focus | FocusEvent | Emitted when the button is focused |
blur | FocusEvent | Emitted when the button is blurred |
click | MouseEvent | Emitted when the button is clicked |