@@ -19,44 +19,39 @@ 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
26
29
import styles from './accordion-item.css.js' ;
27
30
28
31
const chevronIcon : Record < string , ( ) => TemplateResult > = {
29
32
s : ( ) => html `
30
- < span class ="iconContainer ">
31
- < sp-icon-chevron100
32
- class ="indicator spectrum-UIIcon-ChevronRight75 "
33
- slot ="icon "
34
- > </ sp-icon-chevron100 >
35
- </ span >
33
+ < sp-icon-chevron100
34
+ class ="spectrum-Accordion-itemIndicator spectrum-UIIcon-ChevronRight75 "
35
+ slot ="icon "
36
+ > </ sp-icon-chevron100 >
36
37
` ,
37
38
m : ( ) => html `
38
- < span class ="iconContainer ">
39
- < sp-icon-chevron100
40
- class ="indicator spectrum-UIIcon-ChevronRight100 "
41
- slot ="icon "
42
- > </ sp-icon-chevron100 >
43
- </ span >
39
+ < sp-icon-chevron100
40
+ class ="spectrum-Accordion-itemIndicator spectrum-UIIcon-ChevronRight100 "
41
+ slot ="icon "
42
+ > </ sp-icon-chevron100 >
44
43
` ,
45
44
l : ( ) => html `
46
- < span class ="iconContainer ">
47
- < sp-icon-chevron100
48
- class ="indicator spectrum-UIIcon-ChevronRight200 "
49
- slot ="icon "
50
- > </ sp-icon-chevron100 >
51
- </ span >
45
+ < sp-icon-chevron100
46
+ class ="spectrum-Accordion-itemIndicator spectrum-UIIcon-ChevronRight200 "
47
+ slot ="icon "
48
+ > </ sp-icon-chevron100 >
52
49
` ,
53
50
xl : ( ) => html `
54
- < span class ="iconContainer ">
55
- < sp-icon-chevron100
56
- class ="indicator spectrum-UIIcon-ChevronRight300 "
57
- slot ="icon "
58
- > </ sp-icon-chevron100 >
59
- </ span >
51
+ < sp-icon-chevron100
52
+ class ="spectrum-Accordion-itemIndicator spectrum-UIIcon-ChevronRight300 "
53
+ slot ="icon "
54
+ > </ sp-icon-chevron100 >
60
55
` ,
61
56
} ;
62
57
@@ -108,25 +103,44 @@ export class AccordionItem extends SizedMixin(Focusable, {
108
103
}
109
104
110
105
protected renderChevronIcon = ( ) : TemplateResult => {
111
- return chevronIcon [ this . size || 'm' ] ( ) ;
106
+ return html `
107
+ < span class ="spectrum-Accordion-itemIconContainer ">
108
+ ${ chevronIcon [ this . size || 'm' ] ( ) }
109
+ </ span >
110
+ ` ;
112
111
} ;
113
112
114
113
protected override render ( ) : TemplateResult {
115
114
return html `
116
- < h3 id ="heading ">
117
- ${ when ( this . size , this . renderChevronIcon ) }
118
- < button
119
- id ="header "
120
- @click =${ this . onClick }
121
- aria-expanded =${ this . open }
122
- aria-controls="content"
123
- ?disabled=${ this . disabled }
115
+ < div
116
+ class =${ classMap ( {
117
+ 'spectrum-Accordion-item' : true ,
118
+ 'is-open' : this . open && ! this . disabled ,
119
+ 'is-disabled' : this . disabled ,
120
+ } ) }
121
+ role ="presentation"
122
+ >
123
+ < h3 id ="heading " class ="spectrum-Accordion-itemHeading ">
124
+ < button
125
+ id ="header "
126
+ class ="spectrum-Accordion-itemHeader "
127
+ @click =${ this . onClick }
128
+ aria-expanded =${ this . open ? 'true' : 'false' }
129
+ aria-controls="content"
130
+ ?disabled=${ this . disabled }
131
+ >
132
+ ${ this . label }
133
+ </ button >
134
+ ${ when ( this . size , this . renderChevronIcon ) }
135
+ </ h3 >
136
+ < div
137
+ id ="content "
138
+ role ="region "
139
+ aria-labelledby ="header "
140
+ class ="spectrum-Accordion-itemContent "
124
141
>
125
- ${ this . label }
126
- </ button >
127
- </ h3 >
128
- < div id ="content " role ="region " aria-labelledby ="header ">
129
- < slot > </ slot >
142
+ < slot > </ slot >
143
+ </ div >
130
144
</ div >
131
145
` ;
132
146
}
0 commit comments