@@ -210,6 +210,42 @@ export const vModelSelect: ModelDirective<HTMLSelectElement> = {
210
210
}
211
211
}
212
212
213
+ export const vModelDetails : ModelDirective < HTMLDetailsElement > = {
214
+ created ( el , _ , vnode ) {
215
+ addEventListener ( el , 'toggle' , ( ) => {
216
+ el . _assign ( el . open )
217
+ } )
218
+ el . _assign = getModelAssigner ( vnode )
219
+ } ,
220
+ mounted ( el , { value } ) {
221
+ el . open = value
222
+ } ,
223
+ beforeUpdate ( el , _binding , vnode ) {
224
+ el . _assign = getModelAssigner ( vnode )
225
+ } ,
226
+ updated ( el , { value } ) {
227
+ el . open = value
228
+ }
229
+ }
230
+
231
+ export const vModelDialog : ModelDirective < HTMLDialogElement > = {
232
+ created ( el , _ , vnode ) {
233
+ addEventListener ( el , 'close' , ( ) => {
234
+ el . _assign ( false )
235
+ } )
236
+ el . _assign = getModelAssigner ( vnode )
237
+ } ,
238
+ mounted ( el , { value } ) {
239
+ el . open = value
240
+ } ,
241
+ beforeUpdate ( el , _binding , vnode ) {
242
+ el . _assign = getModelAssigner ( vnode )
243
+ } ,
244
+ updated ( el , { value } ) {
245
+ el . open = value
246
+ }
247
+ }
248
+
213
249
function setSelected ( el : HTMLSelectElement , value : any ) {
214
250
const isMultiple = el . multiple
215
251
if ( isMultiple && ! isArray ( value ) && ! isSet ( value ) ) {
0 commit comments