UNPKG

@coreui/vue-pro

Version:

UI Components Library for Vue.js

53 lines (48 loc) 1.28 kB
import { defineComponent, h, inject, Ref } from 'vue' const CTab = defineComponent({ name: 'CTab', props: { /** * Toggle the disabled state for the component. * * @since 5.4.0 */ disabled: Boolean, /** * Item key. */ itemKey: { type: [Number, String], required: true, }, }, setup(props, { slots }) { const activeItemKey = inject('activeItemKey') as Ref<number | string> const id = inject('id') const setActiveItemKey = inject('setActiveItemKey') as (key: number | string) => void const isActive = () => props.itemKey === activeItemKey.value return () => h( 'button', { class: [ 'nav-link', { active: isActive(), }, ], id: `${props.itemKey}-tab-${id}`, role: 'tab', tabindex: isActive() ? 0 : -1, type: 'button', 'aria-controls': `${props.itemKey}-tab-panel-${id}`, 'aria-selected': isActive(), disabled: props.disabled, onClick: () => setActiveItemKey(props.itemKey), onFocus: () => setActiveItemKey(props.itemKey), }, slots.default && slots.default(), ) }, }) export { CTab }