123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- /**
- * Extend Customizer Panel
- *
- * @package Astra
- */
- ( function( $ ) {
- var api = wp.customize;
- api.bind( 'pane-contents-reflowed', function() {
- // Reflow sections
- var sections = [];
- api.section.each( function( section ) {
- if (
- 'ast_section' !== section.params.type ||
- 'undefined' === typeof section.params.section
- ) {
- return;
- }
- sections.push( section );
- });
- sections.sort( api.utils.prioritySort ).reverse();
- $.each( sections, function( i, section ) {
- var parentContainer = $( '#sub-accordion-section-' + section.params.section );
- parentContainer.children( '.section-meta' ).after( section.headContainer );
- });
- // Reflow panels
- var panels = [];
- api.panel.each( function( panel ) {
- if (
- 'ast_panel' !== panel.params.type ||
- 'undefined' === typeof panel.params.panel
- ) {
- return;
- }
- panels.push( panel );
- });
- panels.sort( api.utils.prioritySort ).reverse();
- $.each( panels, function( i, panel ) {
- var parentContainer = $( '#sub-accordion-panel-' + panel.params.panel );
- parentContainer.children( '.panel-meta' ).after( panel.headContainer );
- });
- });
- // Extend Panel
- var _panelEmbed = wp.customize.Panel.prototype.embed;
- var _panelIsContextuallyActive = wp.customize.Panel.prototype.isContextuallyActive;
- var _panelAttachEvents = wp.customize.Panel.prototype.attachEvents;
- wp.customize.Panel = wp.customize.Panel.extend({
- attachEvents: function() {
- if (
- 'ast_panel' !== this.params.type ||
- 'undefined' === typeof this.params.panel
- ) {
- _panelAttachEvents.call( this );
- return;
- }
- _panelAttachEvents.call( this );
- var panel = this;
- panel.expanded.bind( function( expanded ) {
- var parent = api.panel( panel.params.panel );
- if ( expanded ) {
- parent.contentContainer.addClass( 'current-panel-parent' );
- } else {
- parent.contentContainer.removeClass( 'current-panel-parent' );
- }
- });
- panel.container.find( '.customize-panel-back' )
- .off( 'click keydown' )
- .on( 'click keydown', function( event ) {
- if ( api.utils.isKeydownButNotEnterEvent( event ) ) {
- return;
- }
- event.preventDefault(); // Keep this AFTER the key filter above
- if ( panel.expanded() ) {
- api.panel( panel.params.panel ).expand();
- }
- });
- },
- embed: function() {
- if (
- 'ast_panel' !== this.params.type ||
- 'undefined' === typeof this.params.panel
- ) {
- _panelEmbed.call( this );
- return;
- }
- _panelEmbed.call( this );
- var panel = this;
- var parentContainer = $( '#sub-accordion-panel-' + this.params.panel );
- parentContainer.append( panel.headContainer );
- },
- isContextuallyActive: function() {
- if (
- 'ast_panel' !== this.params.type
- ) {
- return _panelIsContextuallyActive.call( this );
- }
- var panel = this;
- var children = this._children( 'panel', 'section' );
- api.panel.each( function( child ) {
- if ( ! child.params.panel ) {
- return;
- }
- if ( child.params.panel !== panel.id ) {
- return;
- }
- children.push( child );
- });
- children.sort( api.utils.prioritySort );
- var activeCount = 0;
- _( children ).each( function ( child ) {
- if ( child.active() && child.isContextuallyActive() ) {
- activeCount += 1;
- }
- });
- return ( activeCount !== 0 );
- }
- });
- // Extend Section
- var _sectionEmbed = wp.customize.Section.prototype.embed;
- var _sectionIsContextuallyActive = wp.customize.Section.prototype.isContextuallyActive;
- var _sectionAttachEvents = wp.customize.Section.prototype.attachEvents;
- wp.customize.Section = wp.customize.Section.extend({
- attachEvents: function() {
- if (
- 'ast_section' !== this.params.type ||
- 'undefined' === typeof this.params.section
- ) {
- _sectionAttachEvents.call( this );
- return;
- }
- _sectionAttachEvents.call( this );
- var section = this;
- section.expanded.bind( function( expanded ) {
- var parent = api.section( section.params.section );
- if ( expanded ) {
- parent.contentContainer.addClass( 'current-section-parent' );
- } else {
- parent.contentContainer.removeClass( 'current-section-parent' );
- }
- });
- section.container.find( '.customize-section-back' )
- .off( 'click keydown' )
- .on( 'click keydown', function( event ) {
- if ( api.utils.isKeydownButNotEnterEvent( event ) ) {
- return;
- }
- event.preventDefault(); // Keep this AFTER the key filter above
- if ( section.expanded() ) {
- api.section( section.params.section ).expand();
- }
- });
- },
- embed: function() {
- if (
- 'ast_section' !== this.params.type ||
- 'undefined' === typeof this.params.section
- ) {
- _sectionEmbed.call( this );
- return;
- }
- _sectionEmbed.call( this );
- var section = this;
- var parentContainer = $( '#sub-accordion-section-' + this.params.section );
- parentContainer.append( section.headContainer );
- },
- isContextuallyActive: function() {
- if (
- 'ast_section' !== this.params.type
- ) {
- return _sectionIsContextuallyActive.call( this );
- }
- var section = this;
- var children = this._children( 'section', 'control' );
- api.section.each( function( child ) {
- if ( ! child.params.section ) {
- return;
- }
- if ( child.params.section !== section.id ) {
- return;
- }
- children.push( child );
- });
- children.sort( api.utils.prioritySort );
- var activeCount = 0;
- _( children ).each( function ( child ) {
- if ( 'undefined' !== typeof child.isContextuallyActive ) {
- if ( child.active() && child.isContextuallyActive() ) {
- activeCount += 1;
- }
- } else {
- if ( child.active() ) {
- activeCount += 1;
- }
- }
- });
- return ( activeCount !== 0 );
- }
- });
- })( jQuery );
|