@@ -8,6 +8,10 @@ import {getTypeFromDocName, updateDocumentInOpenSCD} from "../compas/foundation.
8
8
import { getElementByName , getOpenScdElement , styles } from './foundation.js' ;
9
9
import { addVersionToCompasWizard } from "../compas/CompasUploadVersion.js" ;
10
10
import { compareWizard } from "../compas/CompasCompareDialog.js" ;
11
+ import { MultiSelectedEvent } from "@material/mwc-list/mwc-list-foundation" ;
12
+
13
+ // Save the selection for the current document.
14
+ let selectedVersionsOnCompasVersionsEditor : Set < number > = new Set ( ) ;
11
15
12
16
/** An editor [[`plugin`]] for selecting the `Substation` section. */
13
17
export default class CompasVersionsPlugin extends LitElement {
@@ -21,6 +25,18 @@ export default class CompasVersionsPlugin extends LitElement {
21
25
@property ( )
22
26
scls ! : Element [ ] ;
23
27
28
+ constructor ( ) {
29
+ super ( ) ;
30
+
31
+ // Add event to get a notification when a new document is opened.
32
+ getOpenScdElement ( ) . addEventListener ( 'open-doc' , this . resetSelection ) ;
33
+ }
34
+
35
+ resetSelection ( ) {
36
+ // When a new document is loaded the selection will be reset.
37
+ selectedVersionsOnCompasVersionsEditor = new Set ( ) ;
38
+ }
39
+
24
40
firstUpdated ( ) : void {
25
41
if ( ! this . docId ) {
26
42
this . scls = [ ] ;
@@ -55,11 +71,9 @@ export default class CompasVersionsPlugin extends LitElement {
55
71
56
72
private getSelectedVersions ( ) : Array < string > {
57
73
const selectedVersions : Array < string > = [ ] ;
58
- this . shadowRoot ! . querySelectorAll ( 'mwc-check-list-item' )
59
- . forEach ( checkListItem => {
60
- if ( checkListItem . selected ) {
61
- selectedVersions . push ( checkListItem . value ) ;
62
- }
74
+ const listItems = this . shadowRoot ! . querySelectorAll ( 'mwc-check-list-item' ) ;
75
+ selectedVersionsOnCompasVersionsEditor . forEach ( index => {
76
+ selectedVersions . push ( listItems . item ( index ) . value ) ;
63
77
} ) ;
64
78
return selectedVersions ;
65
79
}
@@ -148,7 +162,10 @@ export default class CompasVersionsPlugin extends LitElement {
148
162
< div id ="containerCompasVersions ">
149
163
< section tabindex ="0 ">
150
164
< h1 > ${ translate ( 'compas.versions.title' ) } </ h1 >
151
- < mwc-list multi >
165
+ < mwc-list multi
166
+ @selected =${ ( evt : MultiSelectedEvent ) => {
167
+ selectedVersionsOnCompasVersionsEditor = evt . detail . index ;
168
+ } } >
152
169
${ this . scls . map ( ( item , index , items ) => {
153
170
let element = getElementByName ( item , SDS_NAMESPACE , "Name" ) ;
154
171
if ( element === null ) {
@@ -159,7 +176,8 @@ export default class CompasVersionsPlugin extends LitElement {
159
176
if ( items . length - 1 === index ) {
160
177
return html `< mwc-check-list-item value ="${ version } "
161
178
tabindex ="0 "
162
- graphic ="icon ">
179
+ graphic ="icon "
180
+ .selected =${ selectedVersionsOnCompasVersionsEditor . has ( index ) } >
163
181
${ name } (${ version } )
164
182
< span slot ="graphic ">
165
183
< mwc-icon @click =${ ( ) => {
@@ -170,7 +188,8 @@ export default class CompasVersionsPlugin extends LitElement {
170
188
}
171
189
return html `< mwc-check-list-item value ="${ version } "
172
190
tabindex ="0 "
173
- graphic ="icon ">
191
+ graphic ="icon "
192
+ .selected =${ selectedVersionsOnCompasVersionsEditor . has ( index ) } >
174
193
${ name } (${ version } )
175
194
< span slot ="graphic ">
176
195
< mwc-icon @click =${ ( ) => {
0 commit comments