UNPKG

comindware.core.ui

Version:

Comindware Core UI provides the basic components like editors, lists, dropdowns, popups that we so desperately need while creating Marionette-based single-page applications.

176 lines (172 loc) 6.29 kB
export default function() { // Step 1. Create model const model = new Backbone.Model({ boolean: true, dropdown: 'id.2', membersBubble: [], memberSelect: null, number: 42, radioGroup: 'id.2', reference: null, textArea: 'Multiline text...\n...Rocks!', text: 'What a beautiful text', avatar: null, date: '2015-07-20T00:00:00Z', dateTime: '2015-07-20T10:46:37Z', duration: 'P14DT4H15M', mention: 'Type @ to get suggestions...', multiSelect: [], password: '', time: '2015-07-20T10:46:37Z' }); // Step 2. Create form schema const formSchema = { boolean: { type: 'Boolean', title: 'Boolean', validators: ['required'], required: true // to display the asterisk left from title }, dropdown: { type: 'Datalist', title: 'Dropdown', enabled: false, validators: ['required'], required: true, // to display the asterisk left from title collection: [{ id: 'id.1', text: 'Item 1' }, { id: 'id.2', text: 'Item 2' }] }, membersBubble: { type: 'MembersBubble', title: 'MembersBubble', validators: ['required'], required: true // to display the asterisk left from title }, memberSelect: { type: 'MemberSelect', title: 'MemberSelect', validators: ['required'], required: true // to display the asterisk left from title }, number: { type: 'Number', title: 'Number', helpText: 'This text is really helpful', validators: ['required'], required: true // to display the asterisk left from title }, radioGroup: { type: 'RadioGroup', title: 'RadioGroup', validators: ['required'], required: true, // to display the asterisk left from title radioOptions: [{ id: 'id.1', displayText: 'Option 1' }, { id: 'id.2', displayText: 'Option 2' }] }, reference: { type: 'Datalist', title: 'Datalist', validators: ['required'], required: true, // to display the asterisk left from title controller: new Core.form.editors.reference.controllers.DemoReferenceEditorController() }, textArea: { type: 'TextArea', title: 'TextArea', validators: ['required'], required: true // to display the asterisk left from title }, text: { type: 'Text', title: 'Text', validators: ['required'], required: true // to display the asterisk left from title }, avatar: { type: 'Avatar', title: 'Avatar', validators: ['required'], required: true, // to display the asterisk left from title fullName: 'Foo Bar', autoUpload: true, refreshPreviewAfterUpload: true, controller: new Core.form.editors.avatar.controllers.DemoAvatarEditorController({ defaultURL: '/resources/images/defaultAvatar.png' }) }, date: { type: 'Date', title: 'Date', validators: ['required'], required: true // to display the asterisk left from title }, dateTime: { type: 'DateTime', title: 'DateTime', validators: ['required'], required: true // to display the asterisk left from title }, duration: { type: 'Duration', title: 'Duration', validators: ['required'], required: true // to display the asterisk left from title }, mention: { type: 'Mention', title: 'Mention', validators: ['required'], required: true // to display the asterisk left from title }, multiSelect: { type: 'MultiSelect', title: 'MultiSelect', validators: ['required'], required: true, // to display the asterisk left from title collection: [{ id: 'id.1', text: 'Item 1' }, { id: 'id.2', text: 'Item 2' }] }, password: { type: 'Password', title: 'Password', validators: ['required'], required: true // to display the asterisk left from title }, time: { type: 'Time', title: 'Time', validators: ['required'], required: true // to display the asterisk left from title } }; // Step 3. Build form layout const view = new Core.layout.Form({ model, schema: formSchema, content: new Core.layout.VerticalLayout({ rows: [ Core.layout.createFieldAnchor('boolean'), Core.layout.createFieldAnchor('dropdown'), Core.layout.createFieldAnchor('membersBubble'), Core.layout.createFieldAnchor('memberSelect'), Core.layout.createFieldAnchor('number'), Core.layout.createFieldAnchor('radioGroup'), Core.layout.createFieldAnchor('reference'), Core.layout.createFieldAnchor('textArea'), Core.layout.createFieldAnchor('text'), Core.layout.createFieldAnchor('avatar'), Core.layout.createFieldAnchor('date'), Core.layout.createFieldAnchor('dateTime'), Core.layout.createFieldAnchor('duration'), Core.layout.createFieldAnchor('mention'), Core.layout.createFieldAnchor('multiSelect'), Core.layout.createFieldAnchor('password'), Core.layout.createFieldAnchor('time'), new Core.layout.Button({ text: 'Validate', handler() { view.form.validate(); } }) ] }) }); return view; }