jQuery(document).ready(function ($) { let blogmineWidgets = { init: function () { this.initColorPicker(); this.addImage(); this.removeImage(); this.bindEvents(); this.accordion(); }, accordion:function () { $('.uf-accordion-heading').on('click', function (e) { e.preventDefault() var parent = $(this).parent('.uf-accordion-wrapper') var body = $(parent).find('.uf-accordion-body') if ($(parent).hasClass('open')) { $(body).slideUp('fast') $(parent).removeClass('open').addClass('close') } else { $(body).slideDown('fast') $(parent).removeClass('close').addClass('open') } }) }, initColorPicker: function () { $(".widget:has(.color-picker) .color-picker").wpColorPicker({ change: function (event, ui) { $(event.target).val(ui.color.toString()); $(event.target).trigger("change"); }, }); }, addImage: function () { jQuery(document).on( "click", ".upload_image_button", function (event) { event.preventDefault(); var file_frame; var _that = jQuery(this); // Create the media frame. file_frame = wp.media.frames.downloadable_file = wp.media({ title: _that.attr("data-uploader-title-txt"), button: { text: _that.attr("data-uploader-btn-txt"), }, multiple: false, }); // When an image is selected, run a callback. file_frame.on("select", function () { var attachment = file_frame .state() .get("selection") .first() .toJSON(); var attachment_thumbnail = attachment.sizes.thumbnail || attachment.sizes.full; _that.prev().trigger("change").val(attachment.id); var image_html = ''; _that .closest(".image-field") .find(".image-preview") .html(image_html); _that.next().show(); }); // Finally, open the modal. file_frame.open(); } ); }, removeImage: function () { jQuery(document).on("click", ".remove_image_button", function () { var _this = jQuery(this); _this.closest(".image-field").find(".image-preview").html(" "); _this.siblings(".img").trigger("change").val(""); _this.hide(); return false; }); }, bindEvents: function () { $(document).on( "widget-updated widget-added", blogmineWidgets.reinit_controls ); }, reinit_controls: function () { blogmineWidgets.initColorPicker(); }, }; $(function () { blogmineWidgets.init(); }); });