@@ -657,6 +657,8 @@ instance (SupportsHydrationDomBuilder t m) => DomBuilder t (HydrationDomBuilderT
657 (checkedChangedByUI, triggerCheckedChangedByUI) <- newTriggerEvent
657 (checkedChangedByUI, triggerCheckedChangedByUI) <- newTriggerEvent
658 (checkedChangedBySetChecked, triggerCheckedChangedBySetChecked) <- newTriggerEvent
658 (checkedChangedBySetChecked, triggerCheckedChangedBySetChecked) <- newTriggerEvent
660+ (fileChange, triggerFileChange) <- newTriggerEvent
660 -- Expected initial value from config
662 -- Expected initial value from config
661 let v0 = _inputElementConfig_initialValue cfg
663 let v0 = _inputElementConfig_initialValue cfg
@@ -697,10 +699,12 @@ instance (SupportsHydrationDomBuilder t m) => DomBuilder t (HydrationDomBuilderT
697 Input.setChecked domInputElement newChecked
699 Input.setChecked domInputElement newChecked
698 when (newChecked /= oldChecked) $ liftIO $ triggerCheckedChangedBySetChecked newChecked
700 when (newChecked /= oldChecked) $ liftIO $ triggerCheckedChangedBySetChecked newChecked
700−-- files <- holdDyn mempty <=< wrapDomEvent domInputElement (`on` Events.change) $ do
702+ liftJSM $ domInputElement `on` Events.change $ do
701−-- mfiles <- Input.getFiles domInputElement
703+ mfiles <- Input.getFiles domInputElement
702−-- let getMyFiles xs = fmap catMaybes . mapM (FileList.item xs) . flip take [0..] . fromIntegral =<< FileList.getLength xs
704+ let getMyFiles xs = fmap catMaybes . mapM (FileList.item xs) . flip take [0..] . fromIntegral =<< FileList.getLength xs
703−-- maybe (return []) getMyFiles mfiles
705+ liftIO . triggerFileChange =<< maybe (return []) getMyFiles mfiles
705 checked' <- holdDyn (_inputElementConfig_initialChecked cfg) $ leftmost
709 checked' <- holdDyn (_inputElementConfig_initialChecked cfg) $ leftmost
706 [ checkedChangedBySetChecked
710 [ checkedChangedBySetChecked
@@ -716,6 +720,8 @@ instance (SupportsHydrationDomBuilder t m) => DomBuilder t (HydrationDomBuilderT
716 , valueChangedByUI
720 , valueChangedByUI
723+ files <- holdDyn mempty fileChange
719 return $ InputElement
725 return $ InputElement
720 { _inputElement_value = v
726 { _inputElement_value = v
721 , _inputElement_checked = checked
727 , _inputElement_checked = checked
@@ -723,8 +729,8 @@ instance (SupportsHydrationDomBuilder t m) => DomBuilder t (HydrationDomBuilderT
723 , _inputElement_input = valueChangedByUI
729 , _inputElement_input = valueChangedByUI
724 , _inputElement_hasFocus = hasFocus
730 , _inputElement_hasFocus = hasFocus
725 , _inputElement_element = e
731 , _inputElement_element = e
726− , _inputElement_raw = undefined -- domInputElement
732+ , _inputElement_raw = undefined -- TODO domInputElement
727− , _inputElement_files = undefined -- files
733+ , _inputElement_files = files
730 {-# INLINABLE textAreaElement #-}
736 {-# INLINABLE textAreaElement #-}