@@ -12,6 +12,8 @@ export abstract class SelectModal<T> extends Modal {
1212 skipButton ?: ButtonComponent ;
1313 submitButton ?: ButtonComponent ;
1414
15+ elementWrapper ?: HTMLDivElement ;
16+
1517 elements : T [ ] ;
1618 selectModalElements : SelectModalElement < T > [ ] ;
1719
@@ -27,18 +29,28 @@ export abstract class SelectModal<T> extends Modal {
2729 this . skipButton = undefined ;
2830 this . submitButton = undefined ;
2931
32+ this . elementWrapper = undefined ;
33+
3034 this . elements = elements ;
3135 this . selectModalElements = [ ] ;
3236
33- this . scope . register ( [ ] , 'ArrowUp' , ( ) => {
37+ this . scope . register ( [ ] , 'ArrowUp' , ( evt ) => {
3438 this . highlightUp ( ) ;
39+ evt . preventDefault ( ) ;
3540 } ) ;
36- this . scope . register ( [ ] , 'ArrowDown' , ( ) => {
41+ this . scope . register ( [ ] , 'ArrowDown' , ( evt ) => {
3742 this . highlightDown ( ) ;
43+ evt . preventDefault ( ) ;
3844 } ) ;
3945 this . scope . register ( [ ] , 'ArrowRight' , ( ) => {
4046 this . activateHighlighted ( ) ;
4147 } ) ;
48+ this . scope . register ( [ ] , ' ' , ( evt ) => {
49+ if ( this . elementWrapper && this . elementWrapper === document . activeElement ) {
50+ this . activateHighlighted ( ) ;
51+ evt . preventDefault ( ) ;
52+ }
53+ } ) ;
4254 this . scope . register ( [ ] , 'Enter' , ( ) => this . submit ( ) ) ;
4355 }
4456
@@ -67,24 +79,17 @@ export abstract class SelectModal<T> extends Modal {
6779 async onOpen ( ) {
6880 const { contentEl} = this ;
6981
70- /*
71- contentEl.id = 'media-db-plugin-modal'
72-
73- contentEl.on('keydown', '#' + contentEl.id, (ev, delegateTarget) => {
74- console.log(ev.key);
75- });
76- */
77-
7882 contentEl . createEl ( 'h2' , { text : this . title } ) ;
7983 contentEl . createEl ( 'p' , { text : this . description } ) ;
8084
8185 contentEl . addClass ( 'media-db-plugin-select-modal' ) ;
8286
83- const elementWrapper = contentEl . createDiv ( { cls : 'media-db-plugin-select-wrapper' } ) ;
87+ this . elementWrapper = contentEl . createDiv ( { cls : 'media-db-plugin-select-wrapper' } ) ;
88+ this . elementWrapper . tabIndex = 0 ;
8489
8590 let i = 0 ;
8691 for ( const element of this . elements ) {
87- const selectModalElement = new SelectModalElement ( element , elementWrapper , i , this , false ) ;
92+ const selectModalElement = new SelectModalElement ( element , this . elementWrapper , i , this , false ) ;
8893
8994 this . selectModalElements . push ( selectModalElement ) ;
9095
@@ -96,11 +101,27 @@ export abstract class SelectModal<T> extends Modal {
96101 this . selectModalElements . first ( ) ?. element . scrollIntoView ( ) ;
97102
98103 const bottomSettingRow = new Setting ( contentEl ) ;
99- bottomSettingRow . addButton ( btn => this . cancelButton = btn . setButtonText ( 'Cancel' ) . onClick ( ( ) => this . close ( ) ) ) ;
104+ bottomSettingRow . addButton ( btn => {
105+ btn . setButtonText ( 'Cancel' ) ;
106+ btn . onClick ( ( ) => this . close ( ) ) ;
107+ btn . buttonEl . addClass ( 'media-db-plugin-button' ) ;
108+ this . cancelButton = btn ;
109+ } ) ;
100110 if ( this . addSkipButton ) {
101- bottomSettingRow . addButton ( btn => this . skipButton = btn . setButtonText ( 'Skip' ) . onClick ( ( ) => this . skip ( ) ) ) ;
111+ bottomSettingRow . addButton ( btn => {
112+ btn . setButtonText ( 'Skip' ) ;
113+ btn . onClick ( ( ) => this . skip ( ) ) ;
114+ btn . buttonEl . addClass ( 'media-db-plugin-button' ) ;
115+ this . skipButton = btn ;
116+ } ) ;
102117 }
103- bottomSettingRow . addButton ( btn => this . submitButton = btn . setButtonText ( 'Ok' ) . setCta ( ) . onClick ( ( ) => this . submit ( ) ) ) ;
118+ bottomSettingRow . addButton ( btn => {
119+ btn . setButtonText ( 'Ok' ) ;
120+ btn . setCta ( ) ;
121+ btn . onClick ( ( ) => this . submit ( ) ) ;
122+ btn . buttonEl . addClass ( 'media-db-plugin-button' ) ;
123+ this . submitButton = btn ;
124+ } ) ;
104125 }
105126
106127 activateHighlighted ( ) {
0 commit comments