settings.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. (function($){
  2. FLBuilder.addHook( 'didRenderLayoutJSComplete', function() {
  3. FLBuilder._moduleHelpers.accordion._previewContent();
  4. } );
  5. FLBuilder.registerModuleHelper('accordion', {
  6. init: function()
  7. {
  8. var form = $('.fl-builder-settings'),
  9. labelSize = form.find('select[name=label_size]'),
  10. itemSpacing = form.find('input[name=item_spacing]'),
  11. source = form.find('select[name=source]'),
  12. contentType = form.find('select[name=content_type]'),
  13. icon1 = form.find( 'input[name=label_active_icon]' ),
  14. icon2 = form.find( 'input[name=label_icon]' );
  15. this._flipSettings();
  16. icon1.on( 'change', this._flipSettings );
  17. icon2.on( 'change', this._flipSettings );
  18. labelSize.on('change', this._previewLabelSize);
  19. itemSpacing.on('input', this._previewItemSpacing);
  20. this._setMoreLink();
  21. source.on( 'change', this._setMoreLink );
  22. contentType.on( 'change', this._setMoreLink );
  23. this._previewContent();
  24. },
  25. _setMoreLink: function(e) {
  26. var form = $( '.fl-builder-settings' ),
  27. contentSource = form.find( 'select[name=source]' ).val(),
  28. contentType = form.find( 'select[name=content_type]' ).val(),
  29. excerptLengthField = form.find('#fl-field-excerpt_length'),
  30. excerptMoreTextField = form.find('#fl-field-excerpt_more_text'),
  31. moreLinkField = form.find('#fl-field-more_link'),
  32. moreLinkTextField = form.find('#fl-field-more_link_text'),
  33. showExcerpt = ( 'post' === contentSource && 'post_excerpt' === contentType );
  34. if ( showExcerpt ) {
  35. excerptLengthField.show();
  36. excerptMoreTextField.show();
  37. moreLinkField.show();
  38. moreLinkTextField.show();
  39. } else {
  40. excerptLengthField.hide();
  41. excerptMoreTextField.hide();
  42. moreLinkField.hide();
  43. moreLinkTextField.hide();
  44. }
  45. },
  46. _flipSettings: function() {
  47. var form = $( '.fl-builder-settings' ),
  48. icon1 = form.find( 'input[name=label_icon]' ),
  49. icon2 = form.find( 'input[name=label_active_icon]' );
  50. if ( -1 !== icon1.val().indexOf( 'fad fa') || -1 !== icon2.val().indexOf( 'fad fa') ) {
  51. $('#fl-field-duo_color1').show();
  52. $('#fl-field-duo_color2').show();
  53. } else {
  54. $('#fl-field-duo_color1').hide();
  55. $('#fl-field-duo_color2').hide();
  56. }
  57. },
  58. _previewContent: function()
  59. {
  60. var form = $( '.fl-builder-accordion-settings:visible' );
  61. var preview = FLBuilder.preview;
  62. if ( ! form.length || ! preview || ! preview.elements.node ) {
  63. return;
  64. }
  65. var settings = FLBuilder._getSettings( form );
  66. var content = preview.elements.node.find( '.fl-accordion-content' ).eq( 0 )
  67. if ( 1 != settings.open_first && ! content.is( ':visible' ) ) {
  68. preview.elements.node.find( '.fl-accordion-button' ).eq( 0 ).trigger( 'click' );
  69. }
  70. },
  71. _previewLabelSize: function()
  72. {
  73. var size = $('.fl-builder-settings select[name=label_size]').val(),
  74. wrap = FLBuilder.preview.elements.node.find('.fl-accordion');
  75. wrap.removeClass('fl-accordion-small');
  76. wrap.removeClass('fl-accordion-medium');
  77. wrap.removeClass('fl-accordion-large');
  78. wrap.addClass('fl-accordion-' + size);
  79. },
  80. _previewItemSpacing: function()
  81. {
  82. var spacing = parseInt($('.fl-builder-settings input[name=item_spacing]').val(), 10),
  83. items = FLBuilder.preview.elements.node.find('.fl-accordion-item');
  84. items.attr('style', '');
  85. if(isNaN(spacing) || spacing === 0) {
  86. items.not(':last-child').css({
  87. 'border-bottom': 'none',
  88. 'border-bottom-left-radius': '0',
  89. 'border-bottom-right-radius': '0',
  90. });
  91. items.not(':first-child').css({
  92. 'border-top-left-radius': '0',
  93. 'border-top-right-radius': '0',
  94. });
  95. }
  96. }
  97. });
  98. })(jQuery);