Tab 1 content
diff --git a/src/components/KTabs/KTabs.cy.ts b/src/components/KTabs/KTabs.cy.ts
index e2dcdb7acf..8f1503f18a 100644
--- a/src/components/KTabs/KTabs.cy.ts
+++ b/src/components/KTabs/KTabs.cy.ts
@@ -74,6 +74,27 @@ describe('KTabs', () => {
})
})
+ // handles disabled item correctly
+
+ it('disables the tab item when `disabled` is true', () => {
+ const tabs = [
+ { hash: '#pictures', title: 'Pictures' },
+ { hash: '#movies', title: 'Movies', disabled: true },
+ { hash: '#books', title: 'Books' },
+ ]
+
+ mount(KTabs, {
+ props: {
+ tabs,
+ },
+ })
+
+ cy.get('.tab-item .tab-link').eq(1).should('have.class', 'disabled')
+ cy.get('.tab-item').eq(1).click().then(() => {
+ cy.wrap(Cypress.vueWrapper.emitted()).should('not.have.property', 'change')
+ })
+ })
+
describe('slots', () => {
it('provides the #hash slot content', () => {
const picturesSlot = 'I love pictures'
diff --git a/src/components/KTabs/KTabs.vue b/src/components/KTabs/KTabs.vue
index 14d54a522b..dfef60894d 100644
--- a/src/components/KTabs/KTabs.vue
+++ b/src/components/KTabs/KTabs.vue
@@ -9,18 +9,18 @@
:id="`${tab.hash.replace('#','')}-tab`"
:key="tab.hash"
class="tab-item"
- :class="{ active: activeTab === tab.hash, disabled: tab.disabled }"
+ :class="{ active: activeTab === tab.hash }"
>
{{ tab.title }}
@@ -155,6 +155,11 @@ watch(() => props.modelValue, (newTabHash) => {
color: var(--kui-color-text, $kui-color-text);
outline: none;
}
+
+ &.disabled {
+ color: var(--kui-color-text-disabled, $kui-color-text-disabled);
+ cursor: not-allowed;
+ }
}
&.active {
@@ -164,15 +169,6 @@ watch(() => props.modelValue, (newTabHash) => {
color: var(--kui-color-text, $kui-color-text);
}
}
-
- &.disabled {
- cursor: not-allowed;
-
- .tab-link {
- color: var(--kui-color-text-disabled, $kui-color-text-disabled);
- pointer-events: none;
- }
- }
}
}
}