@@ -39,19 +39,42 @@ wpWidgets = {
3939 sidebars = $ ( 'div.widgets-sortables' ) ,
4040 isRTL = ! ! ( 'undefined' !== typeof isRtl && isRtl ) ;
4141
42- $ ( '#widgets-right .sidebar-name' ) . click ( function ( ) {
43- var $this = $ ( this ) ,
44- $wrap = $this . closest ( '.widgets-holder-wrap' ) ;
42+ // Handle the widgets containers in the right column.
43+ $ ( '#widgets-right .sidebar-name' )
44+ /*
45+ * Toggle the widgets containers when clicked and update the toggle
46+ * button `aria-expanded` attribute value.
47+ */
48+ . click ( function ( ) {
49+ var $this = $ ( this ) ,
50+ $wrap = $this . closest ( '.widgets-holder-wrap ' ) ,
51+ $toggle = $this . find ( '.handlediv' ) ;
4552
46- if ( $wrap . hasClass ( 'closed' ) ) {
47- $wrap . removeClass ( 'closed' ) ;
48- $this . parent ( ) . sortable ( 'refresh' ) ;
49- } else {
50- $wrap . addClass ( 'closed' ) ;
51- }
53+ if ( $wrap . hasClass ( 'closed' ) ) {
54+ $wrap . removeClass ( 'closed' ) ;
55+ $toggle . attr ( 'aria-expanded' , 'true' ) ;
56+ // Refresh the jQuery UI sortable items.
57+ $this . parent ( ) . sortable ( 'refresh' ) ;
58+ } else {
59+ $wrap . addClass ( 'closed' ) ;
60+ $toggle . attr ( 'aria-expanded' , 'false' ) ;
61+ }
5262
53- $document . triggerHandler ( 'wp-pin-menu' ) ;
54- } ) ;
63+ // Update the admin menu "sticky" state.
64+ $document . triggerHandler ( 'wp-pin-menu' ) ;
65+ } )
66+ /*
67+ * Set the initial `aria-expanded` attribute value on the widgets
68+ * containers toggle button. The first one is expanded by default.
69+ */
70+ . find ( '.handlediv' ) . each ( function ( index ) {
71+ if ( 0 === index ) {
72+ // jQuery equivalent of `continue` within an `each()` loop.
73+ return ;
74+ }
75+
76+ $ ( this ) . attr ( 'aria-expanded' , 'false' ) ;
77+ } ) ;
5578
5679 // Show AYS dialog when there are unsaved widget changes.
5780 $ ( window ) . on ( 'beforeunload.widgets' , function ( event ) {
@@ -86,8 +109,15 @@ wpWidgets = {
86109 }
87110 } ) ;
88111
89- $ ( '#widgets-left .sidebar-name' ) . click ( function ( ) {
90- $ ( this ) . closest ( '.widgets-holder-wrap' ) . toggleClass ( 'closed' ) ;
112+ // Handle the widgets containers in the left column.
113+ $ ( '#widgets-left .sidebar-name' ) . click ( function ( ) {
114+ var $wrap = $ ( this ) . closest ( '.widgets-holder-wrap' ) ;
115+
116+ $wrap
117+ . toggleClass ( 'closed' )
118+ . find ( '.handlediv' ) . attr ( 'aria-expanded' , ! $wrap . hasClass ( 'closed' ) ) ;
119+
120+ // Update the admin menu "sticky" state.
91121 $document . triggerHandler ( 'wp-pin-menu' ) ;
92122 } ) ;
93123
@@ -215,7 +245,7 @@ wpWidgets = {
215245 /**
216246 * Open Sidebar when a Widget gets dragged over it.
217247 *
218- * @param event
248+ * @param { object } event jQuery event object.
219249 */
220250 over : function ( event ) {
221251 var $wrap = $ ( event . target ) . parent ( ) ;
@@ -227,7 +257,9 @@ wpWidgets = {
227257
228258 if ( $wrap . hasClass ( 'closed' ) ) {
229259 wpWidgets . hoveredSidebar = $wrap ;
230- $wrap . removeClass ( 'closed' ) ;
260+ $wrap
261+ . removeClass ( 'closed' )
262+ . find ( '.handlediv' ) . attr ( 'aria-expanded' , 'true' ) ;
231263 }
232264
233265 $ ( this ) . sortable ( 'refresh' ) ;
@@ -236,7 +268,7 @@ wpWidgets = {
236268 /**
237269 * Close Sidebar when the Widget gets dragged out of it.
238270 *
239- * @param event
271+ * @param { object } event jQuery event object.
240272 */
241273 out : function ( event ) {
242274 if ( wpWidgets . hoveredSidebar ) {
@@ -319,7 +351,10 @@ wpWidgets = {
319351 $sidebar = $widget . parent ( ) ;
320352
321353 if ( $sidebar . parent ( ) . hasClass ( 'closed' ) ) {
322- $sidebar . parent ( ) . removeClass ( 'closed' ) ;
354+ $sidebar . parent ( )
355+ . removeClass ( 'closed' )
356+ . find ( '.handlediv' ) . attr ( 'aria-expanded' , 'true' ) ;
357+
323358 $children = $sidebar . children ( '.widget' ) ;
324359
325360 // Make sure the dropped widget is at the top
@@ -622,8 +657,10 @@ wpWidgets = {
622657 $ ( '#' + widgetId ) . hide ( ) ;
623658 }
624659
625- // Open the widgets container
626- sidebar . closest ( '.widgets-holder-wrap' ) . removeClass ( 'closed' ) ;
660+ // Open the widgets container.
661+ sidebar . closest ( '.widgets-holder-wrap' )
662+ . removeClass ( 'closed' )
663+ . find ( '.handlediv' ) . attr ( 'aria-expanded' , 'true' ) ;
627664
628665 sidebar . append ( widget ) ;
629666 sidebar . sortable ( 'refresh' ) ;
@@ -679,11 +716,14 @@ wpWidgets = {
679716 *
680717 * Used when a Widget gets dragged in/out of the Sidebar and never dropped.
681718 *
682- * @param sidebar
719+ * @param { object } event jQuery event object.
683720 */
684- closeSidebar : function ( sidebar ) {
685- this . hoveredSidebar . addClass ( 'closed' ) ;
686- $ ( sidebar . target ) . css ( 'min-height' , '' ) ;
721+ closeSidebar : function ( event ) {
722+ this . hoveredSidebar
723+ . addClass ( 'closed' )
724+ . find ( '.handlediv' ) . attr ( 'aria-expanded' , 'false' ) ;
725+
726+ $ ( event . target ) . css ( 'min-height' , '' ) ;
687727 this . hoveredSidebar = null ;
688728 }
689729} ;
0 commit comments