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-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 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/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-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() : ''}`; } } }; 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" >