@@ -206,13 +206,14 @@ activeDeploymentWidget clickedEv dname dDyn' = do
206206 el "br" blank
207207 text $ coerce dname <> " staging?"
208208 void $ deleteEndpoint (constDyn $ Right $ dname) delEv
209− blank
210209 let route = DashboardRoute :/ Just dname
211210 setRoute $ route <$ domEvent Click linkEl
212− blank
213211
214212archivedDeploymentsWidget
215− :: MonadWidget t m
213+ ::
214+ ( MonadWidget t m
215+ , RouteToUrl (R Routes) m
216+ , SetRoute t (R Routes) m )
216217 => Event t ClickedElement
217218 -> Dynamic t
218219 (Map DeploymentName
@@ -229,7 +230,7 @@ archivedDeploymentsWidget clickedEv dsDyn = do
229230 let emptyDyn' = L.null <$> dsDyn
230231 emptyDyn <- holdUniqDyn emptyDyn'
231232 dyn_ $ emptyDyn <&> \case
232− False -> void $ list dsDyn (archivedDeploymentWidget clickedEv)
233+ False -> void $ listWithKey dsDyn (archivedDeploymentWidget clickedEv)
233234 True -> emptyTableBody $ noDeploymentsWidget
234235
235236tableHeader :: MonadWidget t m => m ()
@@ -250,14 +251,18 @@ tableHeader = do
250251 elClass "span" "visuallyhidden" $ text "Menu"
251252
252253archivedDeploymentWidget
253− :: MonadWidget t m
254+ ::
255+ ( MonadWidget t m
256+ , RouteToUrl (R Routes) m
257+ , SetRoute t (R Routes) m )
254258 => Event t ClickedElement
259+ -> DeploymentName
255260 -> Dynamic t (DeploymentFullInfo, Dynamic t (Maybe DeploymentStatus))
256261 -> m ()
257−archivedDeploymentWidget clickedEv dDyn' = do
262+archivedDeploymentWidget clickedEv dname dDyn' = do
258263 dDyn <- holdUniqDyn $ fst <$> dDyn'
259264 dyn_ $ ffor dDyn $ \DeploymentFullInfo{..} -> do
260− el "tr" $ do
265+ (linkEl, _) <- el' "tr" $ do
261266 el "td" $ do
262267 text $ coerce $ deployment ^. field @"name"
263268 divClass "status status--archived" $ text "Archived"
@@ -277,12 +282,13 @@ archivedDeploymentWidget clickedEv dDyn' = do
277282 ( "class" =: "drop__handler"
278283 <> "type" =: "button"
279284 <> "id" =: elId) $ text "Actions"
280− body = elAttr "button"
281− ( "class" =: "action action--delete"
282− <> "type" =: "button") $ do
283− text "Restore from archive"
284− pure never
285− dropdownWidget' clickedEv btn body
285+ body = do
286+ btnArcEv <- buttonClass "action action--delete" "Restore from archive"
287+ pure btnArcEv
288+ btnEv <- dropdownWidget' clickedEv btn body
289+ void $ restoreEndpoint (constDyn $ Right $ dname) btnEv
290+ let route = DashboardRoute :/ Just dname
291+ setRoute $ route <$ domEvent Click linkEl
286292
287293overridesWidget :: MonadWidget t m => EnvPairs -> m ()
288294overridesWidget envs = divClass "listing" $ do