@@ -51,8 +51,8 @@ function _setupFiltering() {
51
51
chip . addEventListener ( 'click' , ( ) => {
52
52
_closeMenusAndToggle ( ) ;
53
53
chip . classList . toggle ( 'selected' ) ;
54
- const checked = chip . getAttribute ( 'aria-checked' ) ;
55
- chip . setAttribute ( 'aria-checked' , checked === 'true' ? 'false' : 'true' ) ;
54
+ const checked = chip . ariaChecked ;
55
+ chip . ariaChecked = checked === 'true' ? 'false' : 'true' ;
56
56
filterRules ( ) ;
57
57
} ) ;
58
58
} ) ;
@@ -67,7 +67,10 @@ function _setupFiltering() {
67
67
const options = chip . parentElement . querySelectorAll ( '.select-menu button' ) ;
68
68
69
69
function unselectOptions ( ) {
70
- options . forEach ( option => option . classList . remove ( 'selected' ) ) ;
70
+ options . forEach ( option => {
71
+ option . classList . remove ( 'selected' ) ;
72
+ option . ariaSelected = 'false' ;
73
+ } ) ;
71
74
}
72
75
73
76
options . forEach ( option => {
@@ -77,6 +80,7 @@ function _setupFiltering() {
77
80
} else {
78
81
unselectOptions ( ) ;
79
82
option . classList . add ( 'selected' ) ;
83
+ option . ariaSelected = 'true' ;
80
84
chip . classList . add ( 'selected' ) ;
81
85
chip . querySelector ( '.label' ) . textContent = option . querySelector ( '.label' ) . textContent ;
82
86
chip . dataset . filter = option . dataset . filter ;
@@ -132,23 +136,35 @@ function _setupFiltering() {
132
136
}
133
137
134
138
function _closeMenusAndToggle ( menuToToggle = '' ) {
135
- document . querySelectorAll ( '.select-menu' ) . forEach ( menu => {
139
+ document . querySelectorAll ( '.select-chip' ) . forEach ( chip => {
140
+ const menu = chip . parentElement . querySelector ( '.select-menu' ) ;
136
141
if ( menu . id === menuToToggle ) {
137
- menu . classList . toggle ( 'show-menu' ) ;
142
+ if ( menu . classList . contains ( 'show-menu' ) ) {
143
+ menu . classList . remove ( 'show-menu' ) ;
144
+ chip . ariaExpanded = 'false' ;
145
+ } else {
146
+ menu . classList . add ( 'show-menu' ) ;
147
+ chip . ariaExpanded = 'true' ;
148
+ }
138
149
} else {
139
150
// Close all other menus.
140
151
menu . classList . remove ( 'show-menu' ) ;
152
+ chip . ariaExpanded = 'false' ;
141
153
}
142
154
} ) ;
143
155
}
144
156
145
157
function _resetChip ( chip ) {
146
158
chip . classList . remove ( 'selected' ) ;
147
159
if ( chip . classList . contains ( 'filter-chip' ) ) {
148
- chip . setAttribute ( 'aria-checked' , 'false' ) ;
160
+ chip . ariaChecked = 'false' ;
149
161
} else if ( chip . classList . contains ( 'select-chip' ) ) {
150
162
chip . parentElement . querySelectorAll ( '.select-menu button' )
151
- . forEach ( option => option . classList . remove ( 'selected' ) ) ;
163
+ . forEach ( option => {
164
+ option . classList . remove ( 'selected' ) ;
165
+ option . ariaSelected = 'false' ;
166
+ } ) ;
167
+ chip . ariaExpanded = 'false' ;
152
168
chip . querySelector ( '.label' ) . textContent = chip . dataset . title ;
153
169
}
154
170
}
0 commit comments