diff --git a/components/renderers/controls/string/string-renderer.spec.ts b/components/renderers/controls/string/string-renderer.spec.ts index 8871d3070..918faafa3 100644 --- a/components/renderers/controls/string/string-renderer.spec.ts +++ b/components/renderers/controls/string/string-renderer.spec.ts @@ -25,4 +25,28 @@ describe('String renderer', () => { let input = angular.element(el[0].getElementsByClassName('jsf-control-string')); expect(input.attr("readonly")).toBeDefined(); })); + + it("should support text-areas if multi option is set", inject(($rootScope, $compile) => { + let scope = $rootScope.$new(); + scope.schema = { + "properties": { + "name": { + "type": "string", + }, + } + }; + scope.uiSchema = { + "type": "Control", + "readOnly": true, + "scope": { "$ref": "#/properties/name" }, + "options": { + "multi": true + } + }; + scope.data = { "vegetarian": true }; + let el = $compile('')(scope); + scope.$digest(); + let input = angular.element(el[0].getElementsByClassName('jsf-control-string')); + expect(input.prop('tagName')).toBe("TEXTAREA"); + })); }); \ No newline at end of file diff --git a/components/renderers/controls/string/string-renderer.ts b/components/renderers/controls/string/string-renderer.ts index 67e489c15..b2a147abb 100644 --- a/components/renderers/controls/string/string-renderer.ts +++ b/components/renderers/controls/string/string-renderer.ts @@ -7,10 +7,18 @@ class StringRenderer implements JSONForms.IRenderer { static inject = ['RenderDescriptionFactory']; render(element: IControlObject, subSchema: SchemaElement, schemaPath: string, services: JSONForms.Services): JSONForms.IRenderDescription { - var control = JSONForms.RenderDescriptionFactory.createControlDescription(schemaPath, services, element); - control['template'] = ` - - `; + let control = JSONForms.RenderDescriptionFactory.createControlDescription(schemaPath, services, element); + + if (element['options'] != null && element['options']['multi']) { + control.template = ` +