12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 'use strict';
- var escapeHTML = require('../Utils').escapeHTML;
- var domQuery = require('min-dom').query;
- var entryFieldDescription = require('./EntryFieldDescription');
- var textField = function(options, defaultParameters) {
- // Default action for the button next to the input-field
- var defaultButtonAction = function(element, inputNode) {
- var input = domQuery('input[name="' + options.modelProperty + '"]', inputNode);
- input.value = '';
- return true;
- };
- // default method to determine if the button should be visible
- var defaultButtonShow = function(element, inputNode) {
- var input = domQuery('input[name="' + options.modelProperty + '"]', inputNode);
- return input.value !== '';
- };
- var resource = defaultParameters,
- label = options.label || resource.id,
- dataValueLabel = options.dataValueLabel,
- buttonLabel = (options.buttonLabel || 'X'),
- actionName = (typeof options.buttonAction != 'undefined') ? options.buttonAction.name : 'clear',
- actionMethod = (typeof options.buttonAction != 'undefined') ? options.buttonAction.method : defaultButtonAction,
- showName = (typeof options.buttonShow != 'undefined') ? options.buttonShow.name : 'canClear',
- showMethod = (typeof options.buttonShow != 'undefined') ? options.buttonShow.method : defaultButtonShow,
- canBeDisabled = !!options.disabled && typeof options.disabled === 'function',
- canBeHidden = !!options.hidden && typeof options.hidden === 'function',
- description = options.description;
- resource.html =
- '<label for="activiti-' + escapeHTML(resource.id) + '" ' +
- (canBeDisabled ? 'data-disable="isDisabled" ' : '') +
- (canBeHidden ? 'data-show="isHidden" ' : '') +
- (dataValueLabel ? 'data-value="' + escapeHTML(dataValueLabel) + '"' : '') + '>'+ escapeHTML(label) +'</label>' +
- '<div class="bpp-field-wrapper" ' +
- (canBeDisabled ? 'data-disable="isDisabled"' : '') +
- (canBeHidden ? 'data-show="isHidden"' : '') +
- '>' +
- '<input id="activiti-' + escapeHTML(resource.id) + '" type="text" name="' + escapeHTML(options.modelProperty) + '" ' +
- (canBeDisabled ? 'data-disable="isDisabled"' : '') +
- (canBeHidden ? 'data-show="isHidden"' : '') +
- ' />' +
- '<button class="' + escapeHTML(actionName) + '" data-action="' + escapeHTML(actionName) + '" data-show="' + escapeHTML(showName) + '" ' +
- (canBeDisabled ? 'data-disable="isDisabled"' : '') +
- (canBeHidden ? ' data-show="isHidden"' : '') + '>' +
- '<span>' + escapeHTML(buttonLabel) + '</span>' +
- '</button>' +
- '</div>';
- // add description below text input entry field
- if (description) {
- resource.html += entryFieldDescription(description);
- }
- resource[actionName] = actionMethod;
- resource[showName] = showMethod;
- if (canBeDisabled) {
- resource.isDisabled = function() {
- return options.disabled.apply(resource, arguments);
- };
- }
- if (canBeHidden) {
- resource.isHidden = function() {
- return !options.hidden.apply(resource, arguments);
- };
- }
- resource.cssClasses = ['bpp-textfield'];
- return resource;
- };
- module.exports = textField;
|