diff --git a/README.md b/README.md index d7f19ce1..ae50bd96 100755 --- a/README.md +++ b/README.md @@ -335,11 +335,11 @@ let yourFormLayout = [ ] ``` -To set messages for the entire form, add them to the form options, inside the defautWidgetOptions validationMessages object, like this: +To set messages for the entire form, add them to the form options, inside the defaultWidgetOptions validationMessages object, like this: ```javascript let yourFormOptions = { - defautWidgetOptions: { + defaultWidgetOptions: { validationMessages: { // Put your error messages for the entire form here } diff --git a/src/demo/app/demo.component.html b/src/demo/app/demo.component.html index 637159f1..70c55578 100755 --- a/src/demo/app/demo.component.html +++ b/src/demo/app/demo.component.html @@ -112,7 +112,7 @@

(default = only add if no layout is defined)
- + Show inline fedback? (default = false) diff --git a/src/demo/app/demo.component.ts b/src/demo/app/demo.component.ts index b21d1347..d63786c6 100755 --- a/src/demo/app/demo.component.ts +++ b/src/demo/app/demo.component.ts @@ -63,7 +63,7 @@ export class DemoComponent implements OnInit { loadExternalAssets: true, // Load external css and JavaScript for frameworks returnEmptyFields: false, // Don't return values for empty input fields setSchemaDefaults: true, // Always use schema defaults for empty fields - defautWidgetOptions: { feedback: true }, // Show inline feedback icons + defaultWidgetOptions: { feedback: true }, // Show inline feedback icons }; liveFormData: any = {}; formValidationErrors: any; @@ -245,8 +245,8 @@ export class DemoComponent implements OnInit { toggleFormOption(option: string) { if (option === 'feedback') { - this.jsonFormOptions.defautWidgetOptions.feedback = - !this.jsonFormOptions.defautWidgetOptions.feedback; + this.jsonFormOptions.defaultWidgetOptions.feedback = + !this.jsonFormOptions.defaultWidgetOptions.feedback; } else { this.jsonFormOptions[option] = !this.jsonFormOptions[option]; } diff --git a/src/lib/src/json-schema-form.service.ts b/src/lib/src/json-schema-form.service.ts index 372f51c2..ca4d6514 100755 --- a/src/lib/src/json-schema-form.service.ts +++ b/src/lib/src/json-schema-form.service.ts @@ -100,8 +100,8 @@ export class JsonSchemaFormService { // false = only validate fields after they are touched by user // 'auto' = validate fields with values immediately, empty fields after they are touched widgets: {}, // Any custom widgets to load - defautWidgetOptions: { // Default options for form control widgets - listItems: 1, // Number of list items to initially add to arrays with no default value + defaultWidgetOptions: { // Default options for form control widgets + listItems: 0, // Number of list items to initially add to arrays with no default value addable: true, // Allow adding items to an array or $ref point? orderable: true, // Allow reordering items within an array? removable: true, // Allow removing items from an array or $ref point? @@ -127,7 +127,7 @@ export class JsonSchemaFormService { this.language = language; const validationMessages = language.slice(0, 2) === 'fr' ? frValidationMessages : enValidationMessages; - this.defaultFormOptions.defautWidgetOptions.validationMessages = + this.defaultFormOptions.defaultWidgetOptions.validationMessages = _.cloneDeep(validationMessages); } @@ -244,19 +244,19 @@ export class JsonSchemaFormService { setOptions(newOptions: any) { if (isObject(newOptions)) { const addOptions = _.cloneDeep(newOptions); - // Backward compatibility for 'defaultOptions' (renamed 'defautWidgetOptions') + // Backward compatibility for 'defaultOptions' (renamed 'defaultWidgetOptions') if (isObject(addOptions.defaultOptions)) { - Object.assign(this.formOptions.defautWidgetOptions, addOptions.defaultOptions); + Object.assign(this.formOptions.defaultWidgetOptions, addOptions.defaultOptions); delete addOptions.defaultOptions; } - if (isObject(addOptions.defautWidgetOptions)) { - Object.assign(this.formOptions.defautWidgetOptions, addOptions.defautWidgetOptions); - delete addOptions.defautWidgetOptions; + if (isObject(addOptions.defaultWidgetOptions)) { + Object.assign(this.formOptions.defaultWidgetOptions, addOptions.defaultWidgetOptions); + delete addOptions.defaultWidgetOptions; } Object.assign(this.formOptions, addOptions); // convert disableErrorState / disableSuccessState to enable... - const globalDefaults = this.formOptions.defautWidgetOptions; + const globalDefaults = this.formOptions.defaultWidgetOptions; ['ErrorState', 'SuccessState'] .filter(suffix => hasOwn(globalDefaults, 'disable' + suffix)) .forEach(suffix => { diff --git a/src/lib/src/shared/json-schema.functions.ts b/src/lib/src/shared/json-schema.functions.ts index 7ec27d9c..37aa9f4e 100755 --- a/src/lib/src/shared/json-schema.functions.ts +++ b/src/lib/src/shared/json-schema.functions.ts @@ -411,7 +411,7 @@ export function updateInputOptions(layoutNode, schema, jsf) { // Set all option values in layoutNode.options let newOptions: any = { }; const fixUiKeys = key => key.slice(0, 3).toLowerCase() === 'ui:' ? key.slice(3) : key; - mergeFilteredObject(newOptions, jsf.formOptions.defautWidgetOptions, [], fixUiKeys); + mergeFilteredObject(newOptions, jsf.formOptions.defaultWidgetOptions, [], fixUiKeys); [ [ JsonPointer.get(schema, '/ui:widget/options'), [] ], [ JsonPointer.get(schema, '/ui:widget'), [] ], [ schema, [ diff --git a/src/lib/src/shared/layout.functions.ts b/src/lib/src/shared/layout.functions.ts index 7b6311b3..88044c5e 100755 --- a/src/lib/src/shared/layout.functions.ts +++ b/src/lib/src/shared/layout.functions.ts @@ -225,11 +225,6 @@ export function buildLayout(jsf, widgetLibrary) { ) { newNode.options.listItems = newNode.options.maxItems - newNode.options.tupleItems; - } else if (newNode.options.minItems > - newNode.options.tupleItems + newNode.options.listItems - ) { - newNode.options.listItems = - newNode.options.minItems - newNode.options.tupleItems; } if (!nodeDataMap.has('maxItems')) { nodeDataMap.set('maxItems', newNode.options.maxItems); @@ -454,7 +449,7 @@ export function buildLayout(jsf, widgetLibrary) { dataType: 'object', items: fullLayout, name: '', - options: _.cloneDeep(jsf.formOptions.defautWidgetOptions), + options: _.cloneDeep(jsf.formOptions.defaultWidgetOptions), recursiveReference: true, required: false, type: 'section', @@ -599,7 +594,9 @@ export function buildLayoutFromSchema( if (!newNode.options.minItems && isInputRequired(jsf.schema, schemaPointer)) { newNode.options.minItems = 1; } - if (!hasOwn(newNode.options, 'listItems')) { newNode.options.listItems = 1; } + if (!hasOwn(newNode.options, 'listItems')) { + newNode.options.listItems = jsf.formOptions.defaultWidgetOptions.listItems; + } newNode.options.tupleItems = isArray(schema.items) ? schema.items.length : 0; if (newNode.options.maxItems <= newNode.options.tupleItems) { newNode.options.tupleItems = newNode.options.maxItems; @@ -608,10 +605,6 @@ export function buildLayoutFromSchema( newNode.options.tupleItems + newNode.options.listItems ) { newNode.options.listItems = newNode.options.maxItems - newNode.options.tupleItems; - } else if (newNode.options.minItems > - newNode.options.tupleItems + newNode.options.listItems - ) { - newNode.options.listItems = newNode.options.minItems - newNode.options.tupleItems; } if (!nodeDataMap.has('maxItems')) { nodeDataMap.set('maxItems', newNode.options.maxItems);