28 lines
1 KiB
JavaScript
28 lines
1 KiB
JavaScript
(function (app) {
|
|
'use strict';
|
|
|
|
function create(schema, ui, path, value, options) {
|
|
options = options || {};
|
|
if (!schema) {
|
|
return app.modules.widgets.makePrimitive({ type: 'string' }, ui, path, value, options);
|
|
}
|
|
const t = schema.type;
|
|
if (t === 'object') {
|
|
return app.modules.object.makeObject(schema, ui, path, value, options);
|
|
}
|
|
if (t === 'array') {
|
|
return app.modules.array.makeArray(schema, ui, path, value, options);
|
|
}
|
|
// Anything else (string, number, integer, boolean, enum) falls through
|
|
// to the primitive widget which dispatches on schema.type / schema.enum.
|
|
return app.modules.widgets.makePrimitive(schema, ui, path, value, options);
|
|
}
|
|
|
|
function mount(rootEl, schema, ui, data) {
|
|
const widget = create(schema, ui, '', data, { fieldName: '', required: false });
|
|
rootEl.appendChild(widget.el);
|
|
return widget;
|
|
}
|
|
|
|
app.modules.render = { create: create, mount: mount };
|
|
})(window.formApp);
|