diff --git a/CONFIG.md b/CONFIG.md
index bf00f38..ccb3565 100755
--- a/CONFIG.md
+++ b/CONFIG.md
@@ -253,6 +253,24 @@ class MyCustomRule extends ncformCommon.ValidationRule {
this.$ncformAddRule({name: 'myCustom', rule: MyCustomRule});
```
+- $ncformAllRules()
+
+Get all registered check rules of ncform
+
+```
+// Demo code:
+const allRules = this.$ncformAllRules();
+```
+
+- $ncformAllWidgets()
+
+Get all registered widgets of ncform
+
+```
+// Demo code:
+const allWidgets = this.$ncformAllWidgets();
+```
+
## ncform event
- submit
diff --git a/CONFIG_CN.md b/CONFIG_CN.md
index e6856ca..3c75f52 100644
--- a/CONFIG_CN.md
+++ b/CONFIG_CN.md
@@ -254,6 +254,24 @@ class MyCustomRule extends ncformCommon.ValidationRule {
this.$ncformAddRule({name: 'myCustom', rule: MyCustomRule});
```
+- $ncformAllRules()
+
+取得ncform所有注册的校验规则
+
+```
+// Demo code:
+const allRules = this.$ncformAllRules();
+```
+
+- $ncformAllWidgets()
+
+取得ncform所有注册的表单组件
+
+```
+// Demo code:
+const allWidgets = this.$ncformAllWidgets();
+```
+
## ncform event
- submit
diff --git a/STD-COMP.md b/STD-COMP.md
index 7b65fdc..0d0be55 100755
--- a/STD-COMP.md
+++ b/STD-COMP.md
@@ -266,7 +266,12 @@ If you don't like the cold text description, click on the [interactive version](
disableItemCollapse: false, // Whether to allow items to be folded
itemCollapse: false, // Whether the item is folded by default
addTxt: 'Add', // New display text
- delAllTxt: 'Del All' // Delete all display text
+ delAllTxt: 'Del All', // Delete all display text
+ requiredDelConfirm: false, // Whether the deletion requires confirmation
+ delConfirmText: { // Delete confirmation text
+ item: '',
+ all: ''
+ },
}
```
@@ -280,7 +285,12 @@ If you don't like the cold text description, click on the [interactive version](
collapsed: false, // Whether to fold by default
disableCollapse: false, // Whether to allow folding
addTxt: 'Add', // New display text
- delAllTxt: 'Del All' // Delete all display text
+ delAllTxt: 'Del All', // Delete all display text
+ requiredDelConfirm: false, // Whether the deletion requires confirmation
+ delConfirmText: { // Delete confirmation text
+ item: '',
+ all: ''
+ },
}
```
@@ -293,5 +303,10 @@ If you don't like the cold text description, click on the [interactive version](
tabPosition: 'top', // Optional value:[left | top]
collapsed: false, // Whether to fold by default
disableCollapse: false, // Whether to allow folding
+ requiredDelConfirm: false, // Whether the deletion requires confirmation
+ delConfirmText: { // Delete confirmation text
+ item: '',
+ all: ''
+ },
}
```
diff --git a/STD-COMP_CN.md b/STD-COMP_CN.md
index 2245b90..ffbd305 100644
--- a/STD-COMP_CN.md
+++ b/STD-COMP_CN.md
@@ -266,7 +266,12 @@
disableItemCollapse: false, // 是否允许项折叠
itemCollapse: false, // 项是否默认折叠
addTxt: 'Add', // 新建文字
- delAllTxt: 'Del All' // 删除全部文字
+ delAllTxt: 'Del All', // 删除全部文字
+ requiredDelConfirm: false, // 是否需要删除确认
+ delConfirmText: { // 删除确认文本
+ item: '',
+ all: ''
+ },
}
```
@@ -280,7 +285,12 @@
collapsed: false, // 是否默认折叠
disableCollapse: false, // 是否允许折叠
addTxt: 'Add', // 新建文字
- delAllTxt: 'Del All' // 删除全部文字
+ delAllTxt: 'Del All', // 删除全部文字
+ requiredDelConfirm: false, // 是否需要删除确认
+ delConfirmText: { // 删除确认文本
+ item: '',
+ all: ''
+ },
}
```
@@ -293,5 +303,10 @@
tabPosition: 'top', // 可选值:left / top
collapsed: false, // 是否默认折叠
disableCollapse: false, // 是否允许折叠
+ requiredDelConfirm: false, // 是否需要删除确认
+ delConfirmText: { // 删除确认文本
+ item: '',
+ all: ''
+ },
}
```
diff --git a/packages/ncform-common/src/mixins/vue/layout-array-mixin.js b/packages/ncform-common/src/mixins/vue/layout-array-mixin.js
index e82cbad..0cd3623 100755
--- a/packages/ncform-common/src/mixins/vue/layout-array-mixin.js
+++ b/packages/ncform-common/src/mixins/vue/layout-array-mixin.js
@@ -68,6 +68,11 @@ export default {
disableDel: false,
addTxt: "",
delAllTxt: "",
+ requiredDelConfirm: false,
+ delConfirmText: {
+ item: '',
+ all: ''
+ },
},
i18n: {},
};
@@ -125,12 +130,45 @@ export default {
}
},
- delItem(idx) {
- this.schema.value.splice(idx, 1);
+ delItem(idx, requiredConfirm, confirmText) {
+ if (this.$confirm) { // use element-ui
+ if (requiredConfirm) {
+ this.$confirm(confirmText, '', {
+ type: 'warning'
+ }).then(() => {
+ this.schema.value.splice(idx, 1);
+ })
+ } else {
+ this.schema.value.splice(idx, 1);
+ }
+ } else {
+ if (requiredConfirm) {
+ window.confirm(confirmText) && this.schema.value.splice(idx, 1);
+ } else {
+ this.schema.value.splice(idx, 1);
+ }
+ }
},
- delAllItems() {
- this.schema.value = [];
+ delAllItems(requiredConfirm, confirmText) {
+ if (this.$confirm) { // use element-ui
+ if (requiredConfirm) {
+ this.$confirm(confirmText, '', {
+ type: 'warning'
+ }).then(() => {
+ this.schema.value = [];
+ })
+ } else {
+ this.schema.value = [];
+ }
+ } else {
+ if (requiredConfirm) {
+ window.confirm(confirmText) && (this.schema.value = []);
+ } else {
+ this.schema.value = [];
+ }
+ }
+
},
itemUp(idx) {
diff --git a/packages/ncform-e2e/ncform-theme-elementui/cypress/integration/examples/array.spec.js b/packages/ncform-e2e/ncform-theme-elementui/cypress/integration/examples/array.spec.js
index a53696c..b0bfdfc 100644
--- a/packages/ncform-e2e/ncform-theme-elementui/cypress/integration/examples/array.spec.js
+++ b/packages/ncform-e2e/ncform-theme-elementui/cypress/integration/examples/array.spec.js
@@ -42,6 +42,20 @@ context('Array', () => {
disableItemCollapse: true
}
}
+ },
+ users3: {
+ type: 'array',
+ value: [
+ 'daniel', 'sarah'
+ ],
+ items: {
+ type: 'string'
+ },
+ ui: {
+ widgetConfig: {
+ requiredDelConfirm: true
+ }
+ }
}
}
};
@@ -50,6 +64,8 @@ context('Array', () => {
.invoke('setValue', JSON.stringify(formSchema, null, 2));
common.startRun();
+ cy.get('body').as('body');
+
cy.get('.previewArea').within(() => {
// Declare action elements
cy.get('legend')
@@ -97,6 +113,22 @@ context('Array', () => {
cy.get('button:contains("Delete All")').should('not.exist');
cy.get('.el-icon-remove').should('not.exist');
});
+
+ cy.get('legend')
+ .contains('users3')
+ .parent()
+ .within(() => {
+ cy.get('.el-icon-remove').eq(0).click();
+ cy.get('@body').find('.el-message-box__message').should('have.text', 'Are you sure to delete this item?');
+ cy.get('@body').find('.el-message-box__btns .el-button--primary').click();
+ cy.get('input').its('length').should('equal', 1);
+
+ cy.get('button:contains("Delete All")').click();
+ cy.get('@body').find('.el-message-box__message').should('have.text', 'Are you sure to delete all?');
+ cy.get('@body').find('.el-message-box__btns .el-button--primary').click();
+ cy.get('input').should('not.exist');
+ });
+
// common.submitForm();
});
});
diff --git a/packages/ncform-e2e/ncform-theme-elementui/cypress/integration/examples/table.spec.js b/packages/ncform-e2e/ncform-theme-elementui/cypress/integration/examples/table.spec.js
index 5a6cb47..c2fe9e1 100644
--- a/packages/ncform-e2e/ncform-theme-elementui/cypress/integration/examples/table.spec.js
+++ b/packages/ncform-e2e/ncform-theme-elementui/cypress/integration/examples/table.spec.js
@@ -42,6 +42,25 @@ context('Table', () => {
disableCollapse: true,
}
}
+ },
+ users3: {
+ type: 'array',
+ value: [
+ 'daniel', 'sarah'
+ ],
+ items: {
+ type: 'string'
+ },
+ ui: {
+ widget: 'array-table',
+ widgetConfig: {
+ requiredDelConfirm: true,
+ delConfirmText: {
+ item: 'Sure to delete item',
+ all: 'Sure to delete all'
+ },
+ }
+ }
}
}
};
@@ -50,6 +69,8 @@ context('Table', () => {
.invoke('setValue', JSON.stringify(formSchema, null, 2));
common.startRun();
+ cy.get('body').as('body');
+
cy.get('.previewArea').within(() => {
// Declare action elements
cy.get('legend')
@@ -89,6 +110,21 @@ context('Table', () => {
cy.get('button:contains("Delete All")').should('not.exist');
cy.get('.el-icon-remove').should('not.exist');
});
+
+ cy.get('legend')
+ .contains('users3')
+ .parent()
+ .within(() => {
+ cy.get('.el-icon-remove').eq(0).click();
+ cy.get('@body').find('.el-message-box__message').should('have.text', 'Sure to delete item');
+ cy.get('@body').find('.el-message-box__btns .el-button--primary').click();
+ cy.get('input').its('length').should('equal', 1);
+
+ cy.get('button:contains("Delete All")').click();
+ cy.get('@body').find('.el-message-box__message').should('have.text', 'Sure to delete all');
+ cy.get('@body').find('.el-message-box__btns .el-button--primary').click();
+ cy.get('input').should('not.exist');
+ });
// common.submitForm();
});
});
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 9290e05..3c19c5f 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
@@ -41,6 +41,24 @@ context('Tabs', () => {
disableCollapse: true,
}
}
+ },
+ users3: {
+ type: 'array',
+ value: [
+ 'daniel', 'sarah'
+ ],
+ items: {
+ type: 'string'
+ },
+ ui: {
+ widget: 'array-tabs',
+ widgetConfig: {
+ requiredDelConfirm: true,
+ delConfirmText: {
+ item: 'Sure to delete item'
+ },
+ }
+ }
}
}
};
@@ -49,39 +67,50 @@ context('Tabs', () => {
.invoke('setValue', JSON.stringify(formSchema, null, 2));
common.startRun();
+ cy.get('body').as('body');
+
cy.get('.previewArea').within(() => {
// Declare action elements
cy.get('legend')
- .contains('users1')
- .parent()
- .within(() => {
- cy.get('legend').next().should('not.be.visible');
- cy.get('legend').click();
- cy.get('legend').next().should('be.visible');
+ .contains('users1')
+ .parent()
+ .within(() => {
+ cy.get('legend').next().should('not.be.visible');
+ cy.get('legend').click();
+ cy.get('legend').next().should('be.visible');
- cy.get('.el-icon-plus').click()
- cy.get('.el-tabs__item').its('length').should('equal', 2);
+ cy.get('.el-icon-plus').click()
+ cy.get('.el-tabs__item').its('length').should('equal', 2);
- cy.get('input').eq(0).type('daniel')
- cy.get('.el-tabs__item').eq(1).click();
- cy.get('input').eq(1).type('sarah')
+ cy.get('input').eq(0).type('daniel')
+ cy.get('.el-tabs__item').eq(1).click();
+ cy.get('input').eq(1).type('sarah')
- cy.get('.el-icon-close:visible').click();
- cy.get('.el-tabs__item').its('length').should('equal', 1);
-
- });
+ cy.get('.el-icon-close:visible').click();
+ cy.get('.el-tabs__item').its('length').should('equal', 1);
+ });
cy.get('legend')
- .contains('users2')
- .parent()
- .within(() => {
- cy.get('legend').next().should('be.visible');
- cy.get('legend').click();
- cy.get('legend').next().should('be.visible');
+ .contains('users2')
+ .parent()
+ .within(() => {
+ cy.get('legend').next().should('be.visible');
+ cy.get('legend').click();
+ cy.get('legend').next().should('be.visible');
- cy.get('.el-icon-plus').should('not.exist');
- cy.get('.el-icon-close').should('not.exist');
- });
+ cy.get('.el-icon-plus').should('not.exist');
+ cy.get('.el-icon-close').should('not.exist');
+ });
+
+ cy.get('legend')
+ .contains('users3')
+ .parent()
+ .within(() => {
+ cy.get('.el-icon-close:visible').click();
+ cy.get('@body').find('.el-message-box__message').should('have.text', 'Sure to delete item');
+ cy.get('@body').find('.el-message-box__btns .el-button--primary').click();
+ cy.get('.el-tabs__item').its('length').should('equal', 1);
+ });
// common.submitForm();
});
});
diff --git a/packages/ncform-e2e/ncform/cypress/integration/examples/others.js b/packages/ncform-e2e/ncform/cypress/integration/examples/others.js
index 56af222..863f37f 100644
--- a/packages/ncform-e2e/ncform/cypress/integration/examples/others.js
+++ b/packages/ncform-e2e/ncform/cypress/integration/examples/others.js
@@ -80,4 +80,11 @@ context('Others', () => {
})
})
+ it('$ncformAllWidgets and $ncformAllRules()', () => {
+ cy.window().then(win => {
+ expect(win.Vue.prototype.$ncformAllRules()).to.deep.equal(["contains", "exclusiveMinimum", "ipv6", "maximum", "minimum", "required", "dateTime", "hostname", "maxItems", "minItems", "multipleOf", "tel", "email", "maxLength", "minLength", "number", "uniqueItems", "exclusiveMaximum", "ipv4", "maxProperties", "minProperties", "pattern", "url", "ajax"]);
+ expect(win.Vue.prototype.$ncformAllWidgets()).to.deep.equal(["object", "array", "array-table", "input"]);
+ })
+ })
+
})
diff --git a/packages/ncform-show/examples/components/playground/index.html b/packages/ncform-show/examples/components/playground/index.html
index 01a45cd..9112f88 100755
--- a/packages/ncform-show/examples/components/playground/index.html
+++ b/packages/ncform-show/examples/components/playground/index.html
@@ -30,7 +30,7 @@