/* global FusionApp, FusionPageBuilderApp, fusionBuilderText */ var FusionPageBuilder = FusionPageBuilder || {}; ( function() { jQuery( document ).ready( function() { // Fusion Form Component View. FusionPageBuilder.FormComponentView = FusionPageBuilder.ElementView.extend( { iconWrapper: '', onInit: function() { this.formData = FusionApp.data.postMeta; this.listenTo( window.FusionEvents, 'fusion-rerender-form-inputs', this.reRender ); }, /** * Builds attributes. * * @since 3.1 * @param {Object} values - The values object. * @return {Object} */ buildStyles: function() { return ''; }, elementData: function( values ) { var data = {}, patternFields = [ 'fusion_form_email', 'fusion_form_password', 'fusion_form_phone_number' ]; data.checked = ''; data.required = ''; data.required_label = ''; data.required_placeholder = ''; data.disabled = ''; data[ 'class' ] = ''; data.id = ''; data.placeholder = ''; data.label = ''; data.label_class = ''; data.holds_private_data = 'no'; data.upload_size = ''; data.pattern = ''; if ( 'undefined' === typeof values ) { return data; } data.pattern = 'fusion_form_text' === this.model.get( 'element_type' ) && 'undefined' !== typeof values.pattern && '' !== values.pattern ? this.addPattern( values ) : ''; data.pattern = patternFields.includes( this.model.get( 'element_type' ) ) && 'undefined' !== typeof values.pattern && '' !== values.pattern ? ' pattern="' + this.decodePattern( values.pattern ) + '" ' : ''; if ( 'fusion_form_checkbox' === this.model.get( 'element_type' ) && 'undefined' !== typeof values.checked && values.checked ) { data.checked = ' checked="checked"'; } if ( 'fusion_form_upload' === this.model.get( 'element_type' ) && 'undefined' !== typeof values.upload_size && values.upload_size ) { data.upload_size = ' data-size="' + values.upload_size + '"'; } if ( 'undefined' !== typeof values.required && ( 'yes' === values.required || 'selection' === values.required ) ) { if ( 'selection' !== values.required ) { data.required = ' required="true" aria-required="true"'; } data.required_label = ' *'; data.required_placeholder = '*'; } if ( 'undefined' !== typeof values.disabled && 'yes' === values.disabled ) { data.disabled = ' disabled'; if ( 'undefined' !== typeof values.placeholder && '' !== values.placeholder ) { data.value = values.placeholder; } } data[ 'class' ] = ' class="fusion-form-input"'; if ( 'undefined' !== typeof values.placeholder && '' !== values.placeholder ) { if ( 'fusion_form_dropdown' === this.model.get( 'element_type' ) ) { data.placeholder = values.placeholder + data.required_placeholder; } else { data.placeholder = ' placeholder="' + values.placeholder + data.required_placeholder + '"'; } } if ( 'fusion_form_checkbox' === this.model.get( 'element_type' ) ) { data.label_class = ' class="fusion-form-checkbox-label"'; } if ( 'undefined' !== typeof values.label && '' !== values.label ) { data.label = ''; } data.holds_private_data = ' data-holds-private-data="false"'; if ( 'undefined' !== typeof values.holds_private_data && '' !== values.holds_private_data ) { data.holds_private_data = ' data-holds-private-data="true"'; } return data; }, decodePattern: function( content ) { let decodedPattern = ''; try { if ( FusionPageBuilderApp.base64Encode( FusionPageBuilderApp.base64Decode( content ) ) === content ) { decodedPattern = FusionPageBuilderApp.base64Decode( content ); decodedPattern = _.unescape( decodedPattern ); } } catch ( error ) { console.log( error ); // jshint ignore:line } return decodedPattern; }, checkbox: function( values, type ) { var options = '', elementData, elementName, elementHtml, checkboxClass, html = ''; if ( 'undefined' === typeof values.options || ! values.options ) { return html; } values.options = JSON.parse( FusionPageBuilderApp.base64Decode( values.options ) ); elementData = this.elementData( values ); _.each( values.options, function( option, key ) { var checked = option[ 0 ] ? ' checked ' : '', label = ( 'undefined' !== typeof option[ 1 ] ) ? option[ 1 ].trim() : '', value = ! _.isEmpty( option[ 2 ] ) ? option[ 2 ].trim() : label, // eslint-disable-line no-unused-vars labelId; elementName = ( 'checkbox' === type ) ? values.name + '[]' : values.name; checkboxClass = ( 'floated' === values.form_field_layout ) ? 'fusion-form-' + type + ' option-inline' : 'fusion-form-' + type; labelId = type + '-' + label.replace( ' ', '-' ).toLowerCase() + '-' + key; options += '