@@ -19,7 +19,10 @@ import {
19
19
} from '@spectrum-web-components/base' ;
20
20
import { property } from '@spectrum-web-components/base/src/decorators.js' ;
21
21
import { Focusable } from '@spectrum-web-components/shared/src/focusable.js' ;
22
- import { when } from '@spectrum-web-components/base/src/directives.js' ;
22
+ import {
23
+ classMap ,
24
+ when ,
25
+ } from '@spectrum-web-components/base/src/directives.js' ;
23
26
import '@spectrum-web-components/icons-ui/icons/sp-icon-chevron100.js' ;
24
27
import chevronIconStyles from '@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js' ;
25
28
import chevronIconOverrides from '@spectrum-web-components/icon/src/icon-chevron-overrides.css.js' ;
@@ -28,33 +31,33 @@ import styles from './accordion-item.css.js';
28
31
29
32
const chevronIcon : Record < string , ( ) => TemplateResult > = {
30
33
s : ( ) => html `
31
- < span class ="iconContainer ">
34
+ < span class ="spectrum-Accordion-itemIconContainer ">
32
35
< sp-icon-chevron100
33
- class ="indicator spectrum-UIIcon-ChevronRight75 "
36
+ class ="spectrum-Accordion-itemIndicator spectrum-UIIcon-ChevronRight75 "
34
37
slot ="icon "
35
38
> </ sp-icon-chevron100 >
36
39
</ span >
37
40
` ,
38
41
m : ( ) => html `
39
- < span class ="iconContainer ">
42
+ < span class ="spectrum-Accordion-itemIconContainer ">
40
43
< sp-icon-chevron100
41
- class ="indicator spectrum-UIIcon-ChevronRight100 "
44
+ class ="spectrum-Accordion-itemIndicator spectrum-UIIcon-ChevronRight100 "
42
45
slot ="icon "
43
46
> </ sp-icon-chevron100 >
44
47
</ span >
45
48
` ,
46
49
l : ( ) => html `
47
- < span class ="iconContainer ">
50
+ < span class ="spectrum-Accordion-itemIconContainer ">
48
51
< sp-icon-chevron100
49
- class ="indicator spectrum-UIIcon-ChevronRight200 "
52
+ class ="spectrum-Accordion-itemIndicator spectrum-UIIcon-ChevronRight200 "
50
53
slot ="icon "
51
54
> </ sp-icon-chevron100 >
52
55
</ span >
53
56
` ,
54
57
xl : ( ) => html `
55
- < span class ="iconContainer ">
58
+ < span class ="spectrum-Accordion-itemIconContainer ">
56
59
< sp-icon-chevron100
57
- class ="indicator spectrum-UIIcon-ChevronRight300 "
60
+ class ="spectrum-Accordion-itemIndicator spectrum-UIIcon-ChevronRight300 "
58
61
slot ="icon "
59
62
> </ sp-icon-chevron100 >
60
63
</ span >
@@ -114,20 +117,34 @@ export class AccordionItem extends SizedMixin(Focusable, {
114
117
115
118
protected override render ( ) : TemplateResult {
116
119
return html `
117
- < h3 id ="heading ">
118
- ${ when ( this . size , this . renderChevronIcon ) }
119
- < button
120
- id ="header "
121
- @click =${ this . onClick }
122
- aria-expanded =${ this . open }
123
- aria-controls="content"
124
- ?disabled=${ this . disabled }
120
+ < div
121
+ class =${ classMap ( {
122
+ 'spectrum-Accordion-item' : true ,
123
+ 'is-open' : this . open && ! this . disabled ,
124
+ 'is-disabled' : this . disabled ,
125
+ } ) }
126
+ >
127
+ < h3 id ="heading " class ="spectrum-Accordion-itemHeading ">
128
+ ${ when ( this . size , this . renderChevronIcon ) }
129
+ < button
130
+ id ="header "
131
+ class ="spectrum-Accordion-itemHeader "
132
+ @click =${ this . onClick }
133
+ aria-expanded =${ this . open ? 'true' : 'false' }
134
+ aria-controls="content"
135
+ ?disabled=${ this . disabled }
136
+ >
137
+ ${ this . label }
138
+ </ button >
139
+ </ h3 >
140
+ < div
141
+ id ="content "
142
+ role ="region "
143
+ aria-labelledby ="header "
144
+ class ="spectrum-Accordion-itemContent "
125
145
>
126
- ${ this . label }
127
- </ button >
128
- </ h3 >
129
- < div id ="content " role ="region " aria-labelledby ="header ">
130
- < slot > </ slot >
146
+ < slot > </ slot >
147
+ </ div >
131
148
</ div >
132
149
` ;
133
150
}
0 commit comments