6
6
FormEventProducer ,
7
7
FormHub ,
8
8
InputForm ,
9
+ MultiButtonElementButton ,
9
10
MultiButtonForm ,
10
11
NormalizedTextContent ,
11
12
triggerEvent ,
@@ -78,6 +79,14 @@ const configureFormMultiButton = (form: MultiButtonForm, args: FormArguments): M
78
79
const element = form . elements [ i ] ;
79
80
if ( element . type === 'button' ) {
80
81
dialogue = dialogue . addButton ( i . toString ( ) , toRawMessage ( args . normalize ( element . text ) ) , element . icon ) ;
82
+ } else if ( element . type === 'divider' ) {
83
+ dialogue = dialogue . addDivider ( ) ;
84
+ } else if ( element . type === 'header' ) {
85
+ dialogue = dialogue . addHeader ( toRawMessage ( args . normalize ( element . text ) ) ) ;
86
+ } else if ( element . type === 'label' ) {
87
+ dialogue = dialogue . addLabel ( toRawMessage ( args . normalize ( element . text ) ) ) ;
88
+ } else {
89
+ assertNever ( element ) ;
81
90
}
82
91
}
83
92
@@ -119,16 +128,19 @@ const configureFormInput = (form: InputForm, args: FormArguments): InputScriptDi
119
128
for ( let i = 0 ; i < form . elements . length ; ++ i ) {
120
129
const element = form . elements [ i ] ;
121
130
if ( element . type === 'slider' ) {
122
- dialogue = dialogue . addElement (
123
- inputSlider (
124
- element . name ?? i . toString ( ) ,
125
- toRawMessage ( args . normalize ( element . text ) ) ,
126
- element . min ,
127
- element . max ,
128
- element . step ,
129
- element . defaultValue
130
- )
131
+ let input = inputSlider (
132
+ element . name ?? i . toString ( ) ,
133
+ toRawMessage ( args . normalize ( element . text ) ) ,
134
+ element . min ,
135
+ element . max ,
136
+ element . step ,
137
+ element . defaultValue
131
138
) ;
139
+ if ( element . tooltip ) {
140
+ input = input . withTooltip ( toRawMessage ( args . normalize ( element . tooltip ) ) ) ;
141
+ }
142
+
143
+ dialogue = dialogue . addElement ( input ) ;
132
144
} else if ( element . type === 'dropdown' ) {
133
145
let dropdown = inputDropdown ( element . name ?? i . toString ( ) , toRawMessage ( args . normalize ( element . text ) ) ) ;
134
146
if ( element . defaultValue ) {
@@ -141,20 +153,39 @@ const configureFormInput = (form: InputForm, args: FormArguments): InputScriptDi
141
153
dropdown = dropdown . addOption ( toRawMessage ( args . normalize ( option . text ) ) , option . value ) ;
142
154
}
143
155
156
+ if ( element . tooltip ) {
157
+ dropdown = dropdown . withTooltip ( toRawMessage ( args . normalize ( element . tooltip ) ) ) ;
158
+ }
159
+
144
160
dialogue = dialogue . addElement ( dropdown ) ;
145
161
} else if ( element . type === 'text' ) {
146
- dialogue = dialogue . addElement (
147
- inputText (
148
- element . name ?? i . toString ( ) ,
149
- toRawMessage ( args . normalize ( element . text ) ) ,
150
- toRawMessage ( args . normalize ( element . placeholder ) ) ,
151
- element . defaultValue
152
- )
162
+ let input = inputText (
163
+ element . name ?? i . toString ( ) ,
164
+ toRawMessage ( args . normalize ( element . text ) ) ,
165
+ toRawMessage ( args . normalize ( element . placeholder ) ) ,
166
+ element . defaultValue
153
167
) ;
168
+ if ( element . tooltip ) {
169
+ input = input . withTooltip ( toRawMessage ( args . normalize ( element . tooltip ) ) ) ;
170
+ }
171
+ dialogue = dialogue . addElement ( input ) ;
154
172
} else if ( element . type === 'toggle' ) {
155
- dialogue = dialogue . addElement (
156
- inputToggle ( element . name ?? i . toString ( ) , toRawMessage ( args . normalize ( element . text ) ) , element . defaultValue )
173
+ let input = inputToggle (
174
+ element . name ?? i . toString ( ) ,
175
+ toRawMessage ( args . normalize ( element . text ) ) ,
176
+ element . defaultValue
157
177
) ;
178
+ if ( element . tooltip ) {
179
+ input = input . withTooltip ( toRawMessage ( args . normalize ( element . tooltip ) ) ) ;
180
+ }
181
+
182
+ dialogue = dialogue . addElement ( input ) ;
183
+ } else if ( element . type === 'label' ) {
184
+ dialogue = dialogue . addLabel ( toRawMessage ( args . normalize ( element . text ) ) ) ;
185
+ } else if ( element . type === 'divider' ) {
186
+ dialogue = dialogue . addDivider ( ) ;
187
+ } else if ( element . type === 'header' ) {
188
+ dialogue = dialogue . addHeader ( toRawMessage ( args . normalize ( element . text ) ) ) ;
158
189
} else {
159
190
assertNever ( element ) ;
160
191
}
@@ -184,7 +215,11 @@ const renderForm = async (player: Player, formHub: FormHub, form: Form, args: Fo
184
215
if ( form . type === 'multi-button' ) {
185
216
const multiButtonForm = form as MultiButtonForm ;
186
217
const selected = parseInt ( response . selected ) ;
187
- return new FormEventProducer ( formHub , multiButtonForm . elements [ selected ] . action , args ) ;
218
+ return new FormEventProducer (
219
+ formHub ,
220
+ ( multiButtonForm . elements [ selected ] as MultiButtonElementButton ) . action ,
221
+ args
222
+ ) ;
188
223
} else if ( form . type === 'dual-button' ) {
189
224
const dualButtonForm = form as DualButtonForm ;
190
225
if ( response . selected === 'top' ) {
0 commit comments