95 lines
2.6 KiB
JavaScript
95 lines
2.6 KiB
JavaScript
var FusionPageBuilder = FusionPageBuilder || {};
|
|
|
|
( function() {
|
|
|
|
jQuery( document ).ready( function() {
|
|
// Fusion Form Time View.
|
|
FusionPageBuilder.fusion_form_time = FusionPageBuilder.FormComponentView.extend( {
|
|
|
|
/**
|
|
* Modify template attributes.
|
|
*
|
|
* @since 3.1
|
|
* @param {Object} atts - The attributes object.
|
|
* @return {Object}
|
|
*/
|
|
filterTemplateAtts: function( atts ) {
|
|
var attributes = {};
|
|
|
|
// Create attribute objects;
|
|
attributes.styles = this.buildStyles( atts.values );
|
|
attributes.html = this.generateFormFieldHtml( this.generateTimeField( atts.values ) );
|
|
|
|
return attributes;
|
|
},
|
|
|
|
generateTimeField: function( values ) {
|
|
var elementData,
|
|
elementHtml,
|
|
html = '',
|
|
input_type = 'type="time"';
|
|
|
|
elementData = this.elementData( values );
|
|
|
|
this.generateTooltipHtml( values, elementData );
|
|
|
|
if ( 'custom' === values.picker || 'desktop' === values.picker ) {
|
|
input_type = 'type="text"';
|
|
}
|
|
|
|
elementHtml = '<input id="time-' + this.model.get( 'cid' ) + '" ' + input_type + ' data-type="' + values.picker + '" data-clock="' + values.clock + '" name="' + values.name + '" ' + elementData.holds_private_data + elementData[ 'class' ] + elementData.required + elementData.placeholder + '/>';
|
|
|
|
elementHtml = this.generateIconHtml( values, elementHtml );
|
|
|
|
html = this.generateLabelHtml( html, elementHtml, elementData.label );
|
|
|
|
return html;
|
|
},
|
|
|
|
onRender: function() {
|
|
this.afterPatch();
|
|
},
|
|
|
|
beforePatch: function() {
|
|
var picker;
|
|
if ( 'function' === typeof jQuery( '#fb-preview' )[ 0 ].contentWindow.flatpickr ) {
|
|
picker = jQuery( '#fb-preview' )[ 0 ].contentWindow.flatpickr( '#time-' + this.model.get( 'cid' ), {} );
|
|
if ( picker && 'function' === typeof picker.destroy ) {
|
|
picker.destroy();
|
|
}
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Runs after view DOM is patched.
|
|
*
|
|
* @since 2.0
|
|
* @return {void}
|
|
*/
|
|
afterPatch: function() {
|
|
var self = this;
|
|
setTimeout( function() {
|
|
var $item = jQuery( '#fb-preview' )[ 0 ].contentWindow.jQuery( self.$el.find( 'input[type="time"]' ) ),
|
|
type = $item.attr( 'data-type' ),
|
|
useMobile = 'custom' === type,
|
|
fullClock = 'full' === $item.attr( 'data-clock' );
|
|
|
|
// Native, do not init.
|
|
if ( 'native' === type || 'function' !== typeof $item.flatpickr ) {
|
|
return;
|
|
}
|
|
$item.flatpickr( {
|
|
allowInput: true,
|
|
disableMobile: useMobile,
|
|
enableTime: true,
|
|
noCalendar: true,
|
|
dateFormat: 'H:i',
|
|
time_24hr: fullClock
|
|
} );
|
|
}, 200 );
|
|
}
|
|
|
|
} );
|
|
} );
|
|
}( jQuery ) );
|