diff --git a/packages/ncform-e2e/ncform-theme-elementui/cypress/integration/examples/tabs.spec.js b/packages/ncform-e2e/ncform-theme-elementui/cypress/integration/examples/tabs.spec.js
index 3c19c5f..4d354ce 100644
--- a/packages/ncform-e2e/ncform-theme-elementui/cypress/integration/examples/tabs.spec.js
+++ b/packages/ncform-e2e/ncform-theme-elementui/cypress/integration/examples/tabs.spec.js
@@ -79,15 +79,35 @@ context('Tabs', () => {
cy.get('legend').click();
cy.get('legend').next().should('be.visible');
- cy.get('.el-icon-plus').click()
+ cy.get('.el-icon-plus').click();
cy.get('.el-tabs__item').its('length').should('equal', 2);
+ cy.get('.el-tabs__item:last-child').should('have.class', 'is-active');
- cy.get('input').eq(0).type('daniel')
+ // Add two items, now has three items
+ cy.get('.el-icon-plus').click();
+
+ // Delete the first item with selected state, the next item is auto selected
+ cy.get('.el-tabs__item').eq(0).click();
+ cy.get('.el-icon-close').eq(0).click();
+ cy.get('.el-tabs__item:first-child').should('have.class', 'is-active');
+
+ // Delete the last item with selected state, the prev item is auto selected
+ cy.get('.el-icon-plus').click();
+ cy.get('.el-icon-close').eq(2).click();
+ cy.get('.el-tabs__item:last-child').should('have.class', 'is-active');
+
+ // Now has three items
+ cy.get('.el-icon-plus').click();
+
+ // Delete the item after active item, no change
cy.get('.el-tabs__item').eq(1).click();
- cy.get('input').eq(1).type('sarah')
+ cy.get('.el-icon-close').eq(2).click();
+ cy.get('.el-tabs__item:last-child').should('have.class', 'is-active');
+
+ // Delet the item before active item, no change
+ cy.get('.el-icon-close').eq(0).click({ force: true });
+ cy.get('.el-tabs__item:last-child').should('have.class', 'is-active');
- cy.get('.el-icon-close:visible').click();
- cy.get('.el-tabs__item').its('length').should('equal', 1);
});
cy.get('legend')
diff --git a/packages/ncform-theme-elementui/src/components/layout-comps/array-tabs.vue b/packages/ncform-theme-elementui/src/components/layout-comps/array-tabs.vue
index eb8f9d4..de46681 100755
--- a/packages/ncform-theme-elementui/src/components/layout-comps/array-tabs.vue
+++ b/packages/ncform-theme-elementui/src/components/layout-comps/array-tabs.vue
@@ -7,7 +7,7 @@
-
+
@@ -104,6 +104,7 @@
data() {
return {
+ activeName: '0',
defaultConfig: {
tabPosition: 'top',
},
@@ -114,9 +115,25 @@
handleTabsEdit(targetName, action) {
if (action === 'add') {
this.addItem();
+ this.$data.activeName = (this.schema.value.length - 1) + '';
}
if (action === 'remove') {
this.delItem(targetName, this.mergeConfig.requiredDelConfirm, this.mergeConfig.delConfirmText.item || this.$nclang('delItemTips'));
+ this.$nextTick(() => {
+ let tabIdx = parseInt(targetName);
+ if (targetName === this.$data.activeName) { // Remote item is the active item
+ if (tabIdx === 0) { // First item
+ this.$data.activeName = '0'
+ } else {
+ this.$data.activeName = (tabIdx - 1) + '';
+ }
+ } else {
+ let activeIdx = parseInt(this.$data.activeName);
+ if (activeIdx > tabIdx) { // active item at the right side
+ this.$data.activeName = (activeIdx - 1) + '';
+ }
+ }
+ })
}
}
}