From 395cdfbd3e1c5c6233328f6000d370f45152679a Mon Sep 17 00:00:00 2001 From: daniel-dx Date: Sun, 7 Apr 2019 22:19:18 +0800 Subject: [PATCH 1/5] fix(ncform-common): Improve the format verification of the form schema --- packages/ncform-common/src/ncform-utils.js | 6 +- .../ncform-common/test/unit/ncform-utils.js | 88 +++++++++++++++---- 2 files changed, 75 insertions(+), 19 deletions(-) diff --git a/packages/ncform-common/src/ncform-utils.js b/packages/ncform-common/src/ncform-utils.js index f933183..e5985dc 100755 --- a/packages/ncform-common/src/ncform-utils.js +++ b/packages/ncform-common/src/ncform-utils.js @@ -18,15 +18,15 @@ const ncformUtils = { } catch (err) { throw new Error("fromSchema must be a valid json format", err); } - } else if (formSchema instanceof Object) { + } else if (Object.prototype.toString.call(formSchema) === '[object Object]') { returnSchema = formSchema; } else { throw new Error("fromSchema must be a json object"); } // 验证格式 - if (returnSchema.type !== "object" && returnSchema.type !== "array") { - throw new Error("fromSchema' root field type must be object or array"); + if (returnSchema.type !== "object") { + throw new Error("fromSchema' root field type must be object"); } // 补全数据 diff --git a/packages/ncform-common/test/unit/ncform-utils.js b/packages/ncform-common/test/unit/ncform-utils.js index ffb4d46..26a7add 100755 --- a/packages/ncform-common/test/unit/ncform-utils.js +++ b/packages/ncform-common/test/unit/ncform-utils.js @@ -5,37 +5,93 @@ import ncformUtils from '../../src/ncform-utils.js'; describe('/src/ncform-utils.js', () => { // --- perfectFormSchema - it("perfectFormSchema - 填充对象", () => { + it("perfectFormSchema - Data format check", () => { + // not a valid json string + let formSchema = "{a: 1}"; + assert.throws(ncformUtils.perfectFormSchema.bind(ncformUtils, formSchema), /fromSchema must be a valid json format/); + + // not array + formSchema = []; + assert.throws(ncformUtils.perfectFormSchema.bind(ncformUtils, formSchema), /fromSchema must be a json object/); + + // root node's type is not 'object' + formSchema = { + type: 'array' + }; + assert.throws(ncformUtils.perfectFormSchema.bind(ncformUtils, formSchema), /fromSchema' root field type must be object/); + }); + it("perfectFormSchema - Implicit widget and widgetConfig", () => { let formSchema = { type: 'object', properties: { name: { type: 'string' + }, + note: {}, + age: { + type: 'integer' + }, + grade: { + type: 'number' + }, + audit: { + type: 'boolean' + }, + hobbies: { + type: 'array', + items: { + type: 'string' + } } } }; let newFormSchema = ncformUtils.perfectFormSchema(formSchema); - assert(newFormSchema.globalConfig.style.hasOwnProperty('formCls')); - - formSchema = { + assert.equal(newFormSchema.ui.widget, 'object'); + assert.equal(newFormSchema.properties.hobbies.ui.widget, 'array'); + assert.equal(newFormSchema.properties.name.ui.widget, 'input'); + assert.equal(newFormSchema.properties.name.ui.widgetConfig.type, 'text'); + assert.equal(newFormSchema.properties.note.type, 'string'); + assert.equal(newFormSchema.properties.note.ui.widget, 'input'); + assert.equal(newFormSchema.properties.note.ui.widgetConfig.type, 'text'); + assert.equal(newFormSchema.properties.age.ui.widget, 'input'); + assert.equal(newFormSchema.properties.age.ui.widgetConfig.type, 'number'); + assert.equal(newFormSchema.properties.grade.ui.widget, 'input'); + assert.equal(newFormSchema.properties.grade.ui.widgetConfig.type, 'number'); + assert.equal(newFormSchema.properties.audit.ui.widget, 'radio'); + }); + it("perfectFormSchema - Other fields", () => { + let formSchema = { type: 'object', properties: { name: { - type: 'string', - ui: { - widget: 'myCustom' - } - } - }, - globalConfig: { - style: { - formCls: 'bs-form' + type: 'string' + }, + obj: { + type: 'object' + }, + _link: { + type: 'HTML' } } }; - newFormSchema = ncformUtils.perfectFormSchema(formSchema); - assert(newFormSchema.globalConfig.style.formCls === 'bs-form'); - assert(newFormSchema.properties.name.ui.widget === 'my-custom'); + let newFormSchema = ncformUtils.perfectFormSchema(formSchema); + assert.equal(newFormSchema.ui.showLabel, true); + assert.equal(newFormSchema.ui.showLegend, true); + assert.equal(newFormSchema.ui.noLabelSpace, false); + assert.deepEqual(newFormSchema.globalConfig, { + style: { + formCls: "", + invalidFeedbackCls: "" + }, + validationMsg: {}, + constants: {} + }) + assert.equal(newFormSchema.properties.name.ui.label, 'name'); + assert.equal(newFormSchema.properties.name.ui.showLabel, true); + assert.equal(newFormSchema.properties.name.ui.noLabelSpace, false); + assert.equal(newFormSchema.properties.obj.ui.label, 'obj'); + assert.equal(newFormSchema.properties.obj.ui.showLegend, false); + assert.equal(newFormSchema.properties._link.ui.noLabelSpace, true); }); // --- getModelFromSchema From c054a0a137753315b06f47208cf94da3a7cfe9ce Mon Sep 17 00:00:00 2001 From: "daniel.xiao" Date: Fri, 19 Apr 2019 14:12:16 +0800 Subject: [PATCH 2/5] fix(ncform-theme-elementui): fixed modelVal becomes '0' when the date-picker value is cleared fix #56 --- .../src/components/control-comps/date-picker.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ncform-theme-elementui/src/components/control-comps/date-picker.vue b/packages/ncform-theme-elementui/src/components/control-comps/date-picker.vue index 65e5f1b..af449b9 100755 --- a/packages/ncform-theme-elementui/src/components/control-comps/date-picker.vue +++ b/packages/ncform-theme-elementui/src/components/control-comps/date-picker.vue @@ -123,7 +123,7 @@ export default { methods: { // 你可以通过该方法在modelVal传出去之前进行加工处理,即在this.$emit('input')之前 _processModelVal(newVal){ - return `${new Date(newVal).getTime()}`; + return `${newVal ? new Date(newVal).getTime() : ''}`; } } }; From e5e1cbd4f867f6c83af2e3be3a98471096fc8a5e Mon Sep 17 00:00:00 2001 From: "daniel.xiao" Date: Fri, 19 Apr 2019 17:13:32 +0800 Subject: [PATCH 3/5] docs(ncform): update banner --- packages/ncform/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ncform/README.md b/packages/ncform/README.md index 1655cab..8ff42fe 100644 --- a/packages/ncform/README.md +++ b/packages/ncform/README.md @@ -1,6 +1,6 @@ # ncform -![ncform](https://github.com/ncform/ncform/raw/master/docs/images/preview.png) +![ncform](https://github.com/ncform/ncform/raw/master/docs/images/ncform-banner.gif) ncform, a nice form development way that generates form UIs and their interactions with just configuration. From e175661312a058e50a924cb47fcf21e716f70d09 Mon Sep 17 00:00:00 2001 From: "daniel.xiao" Date: Wed, 24 Apr 2019 15:59:54 +0800 Subject: [PATCH 4/5] fix: fixed the problem of displaying empty options when entering keyword with no matches and directl --- .../examples/components/schema-gen/index.html | 2 +- .../examples/control-comps/checkbox.html | 4 +- .../examples/control-comps/color-picker.html | 4 +- .../examples/control-comps/date-picker.html | 4 +- .../examples/control-comps/input-number.html | 4 +- .../examples/control-comps/input.html | 4 +- .../examples/control-comps/label.html | 4 +- .../examples/control-comps/radio.html | 4 +- .../examples/control-comps/rate.html | 4 +- .../examples/control-comps/select.html | 4 +- .../examples/control-comps/slider.html | 4 +- .../examples/control-comps/textarea.html | 4 +- .../examples/control-comps/upload.html | 4 +- .../examples/debug/object.html | 4 +- .../examples/debug/select.html | 108 ++++++++++++------ .../examples/layout-comps/array-table.html | 4 +- .../examples/layout-comps/array-tabs.html | 4 +- .../examples/layout-comps/array.html | 4 +- .../examples/layout-comps/object.html | 4 +- .../src/components/control-comps/select.vue | 2 +- 20 files changed, 108 insertions(+), 72 deletions(-) diff --git a/packages/ncform-show/examples/components/schema-gen/index.html b/packages/ncform-show/examples/components/schema-gen/index.html index 1607271..f7eeaba 100755 --- a/packages/ncform-show/examples/components/schema-gen/index.html +++ b/packages/ncform-show/examples/components/schema-gen/index.html @@ -14,7 +14,7 @@ margin: 0 20px; } - + - + diff --git a/packages/ncform-theme-elementui/examples/control-comps/color-picker.html b/packages/ncform-theme-elementui/examples/control-comps/color-picker.html index 3120ba3..334a540 100755 --- a/packages/ncform-theme-elementui/examples/control-comps/color-picker.html +++ b/packages/ncform-theme-elementui/examples/control-comps/color-picker.html @@ -8,7 +8,7 @@ - + - + diff --git a/packages/ncform-theme-elementui/examples/control-comps/date-picker.html b/packages/ncform-theme-elementui/examples/control-comps/date-picker.html index 4866b1e..4b3ca63 100755 --- a/packages/ncform-theme-elementui/examples/control-comps/date-picker.html +++ b/packages/ncform-theme-elementui/examples/control-comps/date-picker.html @@ -8,7 +8,7 @@ - + - + diff --git a/packages/ncform-theme-elementui/examples/control-comps/input-number.html b/packages/ncform-theme-elementui/examples/control-comps/input-number.html index fb2e6b1..ba199fd 100755 --- a/packages/ncform-theme-elementui/examples/control-comps/input-number.html +++ b/packages/ncform-theme-elementui/examples/control-comps/input-number.html @@ -8,7 +8,7 @@ - + - + diff --git a/packages/ncform-theme-elementui/examples/control-comps/input.html b/packages/ncform-theme-elementui/examples/control-comps/input.html index b02d659..58c9fc8 100755 --- a/packages/ncform-theme-elementui/examples/control-comps/input.html +++ b/packages/ncform-theme-elementui/examples/control-comps/input.html @@ -8,7 +8,7 @@ - + - + diff --git a/packages/ncform-theme-elementui/examples/control-comps/label.html b/packages/ncform-theme-elementui/examples/control-comps/label.html index aea226c..ff9edd5 100755 --- a/packages/ncform-theme-elementui/examples/control-comps/label.html +++ b/packages/ncform-theme-elementui/examples/control-comps/label.html @@ -8,7 +8,7 @@ - + - + diff --git a/packages/ncform-theme-elementui/examples/control-comps/radio.html b/packages/ncform-theme-elementui/examples/control-comps/radio.html index 74344ca..ffdea33 100755 --- a/packages/ncform-theme-elementui/examples/control-comps/radio.html +++ b/packages/ncform-theme-elementui/examples/control-comps/radio.html @@ -8,7 +8,7 @@ - + - + diff --git a/packages/ncform-theme-elementui/examples/control-comps/rate.html b/packages/ncform-theme-elementui/examples/control-comps/rate.html index 4e9471c..a2de9ec 100755 --- a/packages/ncform-theme-elementui/examples/control-comps/rate.html +++ b/packages/ncform-theme-elementui/examples/control-comps/rate.html @@ -8,7 +8,7 @@ - + - + diff --git a/packages/ncform-theme-elementui/examples/control-comps/select.html b/packages/ncform-theme-elementui/examples/control-comps/select.html index d57e71b..2f9a84e 100755 --- a/packages/ncform-theme-elementui/examples/control-comps/select.html +++ b/packages/ncform-theme-elementui/examples/control-comps/select.html @@ -8,7 +8,7 @@ - + - + diff --git a/packages/ncform-theme-elementui/examples/control-comps/slider.html b/packages/ncform-theme-elementui/examples/control-comps/slider.html index 983fe87..46a8247 100755 --- a/packages/ncform-theme-elementui/examples/control-comps/slider.html +++ b/packages/ncform-theme-elementui/examples/control-comps/slider.html @@ -8,7 +8,7 @@ - + - + diff --git a/packages/ncform-theme-elementui/examples/control-comps/textarea.html b/packages/ncform-theme-elementui/examples/control-comps/textarea.html index ed2352a..3e178ca 100755 --- a/packages/ncform-theme-elementui/examples/control-comps/textarea.html +++ b/packages/ncform-theme-elementui/examples/control-comps/textarea.html @@ -8,7 +8,7 @@ - + - + diff --git a/packages/ncform-theme-elementui/examples/control-comps/upload.html b/packages/ncform-theme-elementui/examples/control-comps/upload.html index 09fd67e..7fdeb1f 100755 --- a/packages/ncform-theme-elementui/examples/control-comps/upload.html +++ b/packages/ncform-theme-elementui/examples/control-comps/upload.html @@ -7,7 +7,7 @@ - + - + diff --git a/packages/ncform-theme-elementui/examples/debug/object.html b/packages/ncform-theme-elementui/examples/debug/object.html index 92d386d..696eea2 100644 --- a/packages/ncform-theme-elementui/examples/debug/object.html +++ b/packages/ncform-theme-elementui/examples/debug/object.html @@ -7,7 +7,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/packages/ncform-theme-elementui/examples/debug/select.html b/packages/ncform-theme-elementui/examples/debug/select.html index 153c5e8..10f8555 100755 --- a/packages/ncform-theme-elementui/examples/debug/select.html +++ b/packages/ncform-theme-elementui/examples/debug/select.html @@ -3,11 +3,12 @@ - + select widget - + @@ -21,13 +22,23 @@ - + + + - + diff --git a/packages/ncform-theme-elementui/src/components/control-comps/select.vue b/packages/ncform-theme-elementui/src/components/control-comps/select.vue index 150bb33..12016b4 100755 --- a/packages/ncform-theme-elementui/src/components/control-comps/select.vue +++ b/packages/ncform-theme-elementui/src/components/control-comps/select.vue @@ -8,7 +8,7 @@ :multiple="mergeConfig.multiple" :filterable="mergeConfig.filterable" :remote="!isLocalSource && !mergeConfig.filterLocal" - :remote-method="remoteMethod" + :remote-method="(!isLocalSource && !mergeConfig.filterLocal) ? remoteMethod : null" :loading="loading" > Date: Wed, 24 Apr 2019 16:18:25 +0800 Subject: [PATCH 5/5] v1.1.2 --- lerna.json | 2 +- packages/ncform-common/package.json | 2 +- packages/ncform-show/package.json | 8 ++++---- packages/ncform-theme-elementui/package.json | 6 +++--- packages/ncform/package.json | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lerna.json b/lerna.json index 8f751eb..254c752 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "packages": [ "packages/*" ], - "version": "1.1.1" + "version": "1.1.2" } diff --git a/packages/ncform-common/package.json b/packages/ncform-common/package.json index 1fb1208..a2040ec 100755 --- a/packages/ncform-common/package.json +++ b/packages/ncform-common/package.json @@ -1,6 +1,6 @@ { "name": "@ncform/ncform-common", - "version": "1.1.0", + "version": "1.1.2", "description": "ncform common", "main": "dist/ncformCommon.min.js", "scripts": { diff --git a/packages/ncform-show/package.json b/packages/ncform-show/package.json index ecf42eb..3e92b23 100755 --- a/packages/ncform-show/package.json +++ b/packages/ncform-show/package.json @@ -1,7 +1,7 @@ { "name": "ncform-show", "private": true, - "version": "1.1.1", + "version": "1.1.2", "description": "ncform show", "author": "daniel.xiao", "keywords": [ @@ -55,9 +55,9 @@ }, "license": "MIT", "dependencies": { - "@ncform/ncform": "^1.1.0", - "@ncform/ncform-common": "^1.1.0", - "@ncform/ncform-theme-elementui": "^1.1.1", + "@ncform/ncform": "^1.1.2", + "@ncform/ncform-common": "^1.1.2", + "@ncform/ncform-theme-elementui": "^1.1.2", "ace-builds": "^1.2.9", "lodash-es": "^4.16.2", "vue": "^2.1.8" diff --git a/packages/ncform-theme-elementui/package.json b/packages/ncform-theme-elementui/package.json index 8b74884..ae405bd 100755 --- a/packages/ncform-theme-elementui/package.json +++ b/packages/ncform-theme-elementui/package.json @@ -1,6 +1,6 @@ { "name": "@ncform/ncform-theme-elementui", - "version": "1.1.1", + "version": "1.1.2", "description": "ncform theme element-ui", "author": "daniel.xiao; kyle.lo;", "main": "dist/ncformStdComps.min.js", @@ -10,7 +10,7 @@ "element-ui" ], "devDependencies": { - "@ncform/ncform": "^1.1.0", + "@ncform/ncform": "^1.1.2", "autoprefixer": "^6.0.2", "axios": "^0.17.1", "babel-core": "^6.26.3", @@ -61,7 +61,7 @@ ], "license": "MIT", "dependencies": { - "@ncform/ncform-common": "^1.1.0", + "@ncform/ncform-common": "^1.1.2", "element-ui": "^2.0.7", "lodash-es": "^4.16.2", "vue": "^2.1.8" diff --git a/packages/ncform/package.json b/packages/ncform/package.json index 94d8de8..f90035f 100755 --- a/packages/ncform/package.json +++ b/packages/ncform/package.json @@ -1,6 +1,6 @@ { "name": "@ncform/ncform", - "version": "1.1.0", + "version": "1.1.2", "description": "ncform, a very nice configuration generation way to develop form ( vue, json-schema, form, generator )", "author": "daniel.xiao", "main": "dist/vueNcform.min.js", @@ -67,7 +67,7 @@ "src" ], "dependencies": { - "@ncform/ncform-common": "^1.1.0", + "@ncform/ncform-common": "^1.1.2", "axios": "^0.18.0", "extend": "^3.0.1", "lodash-es": "^4.16.2",