@@ -210,6 +210,42 @@ export const vModelSelect: ModelDirective<HTMLSelectElement> = {
210210 }
211211}
212212
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+
213249function setSelected ( el : HTMLSelectElement , value : any ) {
214250 const isMultiple = el . multiple
215251 if ( isMultiple && ! isArray ( value ) && ! isSet ( value ) ) {
0 commit comments