| 1 |
module.exports = elementor.modules.controls.Repeater.extend( { |
| 2 |
onBeforeRender() { |
| 3 |
this.$el.hide(); |
| 4 |
}, |
| 5 |
|
| 6 |
updateMap( fields ) { |
| 7 |
const self = this, |
| 8 |
savedMapObject = {}; |
| 9 |
|
| 10 |
self.collection.each( function( model ) { |
| 11 |
savedMapObject[ model.get( 'remote_id' ) ] = model.get( 'local_id' ); |
| 12 |
} ); |
| 13 |
|
| 14 |
self.collection.reset(); |
| 15 |
|
| 16 |
fields.forEach( function( field ) { |
| 17 |
const model = { |
| 18 |
remote_id: field.remote_id, |
| 19 |
remote_label: field.remote_label, |
| 20 |
remote_type: field.remote_type ? field.remote_type : '', |
| 21 |
remote_required: field.remote_required ? field.remote_required : false, |
| 22 |
local_id: savedMapObject[ field.remote_id ] ? savedMapObject[ field.remote_id ] : '', |
| 23 |
}; |
| 24 |
|
| 25 |
self.collection.add( model ); |
| 26 |
} ); |
| 27 |
|
| 28 |
self.render(); |
| 29 |
}, |
| 30 |
|
| 31 |
onRender() { |
| 32 |
elementor.modules.controls.Base.prototype.onRender.apply( this, arguments ); |
| 33 |
|
| 34 |
const self = this; |
| 35 |
|
| 36 |
self.children.each( function( view ) { |
| 37 |
const localFieldsControl = view.children.last(), |
| 38 |
options = { |
| 39 |
'': '- ' + __( 'None', 'elementor' ) + ' -', |
| 40 |
}; |
| 41 |
let label = view.model.get( 'remote_label' ); |
| 42 |
|
| 43 |
if ( view.model.get( 'remote_required' ) ) { |
| 44 |
label += '<span class="elementor-required">*</span>'; |
| 45 |
} |
| 46 |
|
| 47 |
self.elementSettingsModel.get( 'form_fields' ).models.forEach( function( model, index ) { |
| 48 |
// If it's an email field, add only email fields from thr form |
| 49 |
const remoteType = view.model.get( 'remote_type' ); |
| 50 |
|
| 51 |
if ( 'text' !== remoteType && remoteType !== model.get( 'field_type' ) ) { |
| 52 |
return; |
| 53 |
} |
| 54 |
|
| 55 |
options[ model.get( 'custom_id' ) ] = model.get( 'field_label' ) || 'Field #' + ( index + 1 ); |
| 56 |
} ); |
| 57 |
|
| 58 |
localFieldsControl.model.set( 'label', label ); |
| 59 |
localFieldsControl.model.set( 'options', options ); |
| 60 |
localFieldsControl.render(); |
| 61 |
|
| 62 |
view.$el.find( '.elementor-repeater-row-tools' ).hide(); |
| 63 |
view.$el.find( '.elementor-repeater-row-controls' ) |
| 64 |
.removeClass( 'elementor-repeater-row-controls' ) |
| 65 |
.find( '.elementor-control' ) |
| 66 |
.css( { |
| 67 |
paddingBottom: 0, |
| 68 |
} ); |
| 69 |
} ); |
| 70 |
|
| 71 |
self.$el.find( '.elementor-button-wrapper' ).remove(); |
| 72 |
|
| 73 |
if ( self.children.length ) { |
| 74 |
self.$el.show(); |
| 75 |
} |
| 76 |
}, |
| 77 |
} ); |
| 78 |
|