@hdsydsvenskan/forms-utils
v2.1.1
Published
A set of useful utilities for the forms module
Downloads
847
Maintainers
Keywords
Readme
@hdsydsvenskan/forms-utils
A collection of fields, widgets and other useful utils for the forms module.
Usage
const { customFields: fields } = require('@hdsydsvenskan/forms-utils');
const { fields, widgets } = require('forms');
const formDefinition = {
description: customFields.html({
label: 'Description',
html: '<p>This is a HTML description</p>'
}),
items: customFields.multiObject({
label: 'Items',
rowField: {
itemName: fields.string({ label: 'Name' }),
itemValuee: fields.string({ label: 'Value' })
}
})
}API
.fields
.basic– a basic field which can eg. be extended to create more complex fields.html– a HTML field, which doesn't contain any actual form widget, but inserts a piece of HTML in its place instead (specified through ahtmlproperty). Does not interact with any value of the field, neither gets or sets it..multiField– a multi row field for creating complex forms. Repeats a sub-form for every item in an array value + allows adding new items. Needs a piece of client side JS to delete rows and to make adding new rows easier.
.widgets
- Basic – a basic widget which can eg. be extended to create more complex widgets. In itself it just prints the escaped value of the field.
- Image – an image widget which can show a preview thumbnail, linking to the full image, along with a file upload field and a "remove" button
.utils
getUserAttrs()– mimics the one fromformsitselfhtmlEscape()– mimics the one fromformsitselftag()– mimics the one fromformsitself
Promised Forms
promisedFormHandle(form, body)– takes a form definition and a body and handles the form through aPromise– resolving to{ success: true, form },{ error: true, form }or{ empty: true, form }promisedFormHandles(forms, body)– same aspromisedFormHandle, but with multiple form definitions. If any of those definitions returnerror: true, then it will return{ error: true, forms }. If any forms is empty, then it will return{ empty: true, forms }. Else it will return{ success: true, forms }.
Browser JS
Multi Field
Example
import { multiField } from '@hdsydsvenskan/forms-utils/browser/multi-field';
const multiFieldSetup = multiFieldSetup({ dragula });
multiFieldSetup.init();multiField(options)
[options.activateInContext(newRow)]– if provided, then this will be called for every new row added. This enables other pieces of javascript to run on those new rows – adding eg. autocomplete functionality or other interesting things[options.dragula]– if drag and drop capabilities are wanted, then provide a version of Dragula3.x[options.textRemove]– the text to add to the remove buttons. Defaults toRemove.
Returns an object with two methods: initField(elem) and init([context]).
initField(elem) initiates the javascript for a specific multi field setup.
init([context]) initiates the javascript for aöö multi field setups within the context or document.
