From c51644c729d3746c9908177e5c907cad6910bfc8 Mon Sep 17 00:00:00 2001 From: Philippe Pittoli Date: Tue, 6 May 2025 03:56:37 +0200 Subject: [PATCH] A few more abstract functions. --- src/App/Container.purs | 28 ++++++++++++++-------------- src/App/Log.purs | 11 ++++++----- src/Web.purs | 4 +++- src/Web/Basics.purs | 16 ++++++++++++++++ src/Web/Form.purs | 3 --- src/Web/Warning.purs | 9 +++++++++ 6 files changed, 48 insertions(+), 23 deletions(-) delete mode 100644 src/Web/Form.purs create mode 100644 src/Web/Warning.purs diff --git a/src/App/Container.purs b/src/App/Container.purs index 74f3142..e545d51 100644 --- a/src/App/Container.purs +++ b/src/App/Container.purs @@ -316,25 +316,25 @@ render state migration_warning :: forall w. HH.HTML w Action migration_warning = - HH.div [HP.classes [C.notification, C.is_warning]] - [ Web.p """ - ⚠️​ (FR) le service a été migré d'une ancienne base de code récemment. - Le développement se poursuit mais le service devrait être stable, mis à part quelques redémarrages de temps à autre. - Merci de nous contacter si vous voyez une erreur. - """ - , Web.p """ - ⚠️​ (EN) migration from old codebase was performed. - Development is still on-going but the service should be fairly stable. - Reboots will happen on occasion. - Please contact us in case an error occurs. - """ - ] + Web.big_website_warning + [ Web.p """ + ⚠️​ (FR) le service a été migré d'une ancienne base de code récemment. + Le développement se poursuit mais le service devrait être stable, mis à part quelques redémarrages de temps à autre. + Merci de nous contacter si vous voyez une erreur. + """ + , Web.p """ + ⚠️​ (EN) migration from old codebase was performed. + Development is still on-going but the service should be fairly stable. + Reboots will happen on occasion. + Please contact us in case an error occurs. + """ + ] migration_warning_on_email_address :: forall w. HH.HTML w Action migration_warning_on_email_address = case state.user_data of Just (Tuple Nothing _) -> - HH.div [HP.classes [C.notification, C.is_warning]] + Web.big_website_warning [ Web.p """ ⚠️​ MIGRATION (FR): veuillez indiquer une adresse email pour votre compte. Tout compte sans adresse email sera supprimé sous 6 mois. diff --git a/src/App/Log.purs b/src/App/Log.purs index df5baf5..20ea5ed 100644 --- a/src/App/Log.purs +++ b/src/App/Log.purs @@ -1,7 +1,7 @@ +-- | `App.Log` is a simple log component, showing a list of messages. +-- | The list has a fixed size, the older messages are removed. module App.Log where -{- Simple log component, showing the current events. -} - import Prelude (Unit, bind, discard, map, otherwise, pure, ($), (-), (<), (<>)) import Control.Monad.State (class MonadState) @@ -9,7 +9,8 @@ import Data.Array as A import Data.Maybe (Maybe(..)) import Effect.Aff.Class (class MonadAff) import Halogen as H -import Halogen.HTML as HH + +import Web as Web import App.Type.LogMessage @@ -44,9 +45,9 @@ initialState _ = render :: forall m. State -> H.ComponentHTML Action () m render { messages } - = HH.div_ [ render_messages ] + = Web.div [ render_messages ] where - render_messages = HH.ul_ $ map (\msg -> HH.li_ [ HH.text msg ]) messages + render_messages = Web.ul $ map (\msg -> Web.li msg) messages handleQuery :: forall a m. MonadAff m => Query a -> H.HalogenM State Action () Output m (Maybe a) handleQuery = case _ of diff --git a/src/Web.purs b/src/Web.purs index 959a0e9..248d8c3 100644 --- a/src/Web.purs +++ b/src/Web.purs @@ -19,9 +19,10 @@ module Web , module Web.Table , module Web.Tag , module Web.Tile + , module Web.Warning ) where -import Web.Basics (article, article_, code, container, div_content, div_large_content, error_message, explanation, hdiv, hr, p, p_, quote, simple_quote, strong, text, textarea, textarea_, outside_link) +import Web.Basics import Web.Box (box, box_, box_with_tag) import Web.Button (alert_btn, alert_btn_abbr, btn, btn_, btn_abbr, btn_abbr_, btn_add, btn_delete, btn_delete_ro, btn_modify, btn_modify_ro, btn_readonly, btn_ro, btn_save, btn_validation, btn_validation_, cancel_button, delete_btn) import Web.Checkbox (checkbox) @@ -39,3 +40,4 @@ import Web.Tab (fancy_tabs, tab_entry, tabs) import Web.Table (table, table_) import Web.Tag (tag, tag_ro, tags, tag_light_info) import Web.Tile (tile, tile_, tile_danger, tile_warning) +import Web.Warning (big_website_warning) diff --git a/src/Web/Basics.purs b/src/Web/Basics.purs index d153e95..5d5baa9 100644 --- a/src/Web/Basics.purs +++ b/src/Web/Basics.purs @@ -2,6 +2,7 @@ module Web.Basics where import Prelude (($), (<>)) +import DOM.HTML.Indexed as DHI import Halogen.HTML as HH import Halogen.HTML.Events as HE import Halogen.HTML.Properties as HP @@ -20,12 +21,27 @@ p str = HH.p_ [ HH.text str ] p_ :: forall w i. Array HH.ClassName -> String -> HH.HTML w i p_ classes str = HH.p [HP.classes classes] [ HH.text str ] +ul :: forall w i. Array (HH.HTML w i) -> HH.HTML w i +ul content = HH.ul_ content + +li :: forall w i. String -> HH.HTML w i +li content = li_ [] content + +li_ :: forall w i. Array HH.ClassName -> String -> HH.HTML w i +li_ classes content = HH.li [HP.classes classes] [ HH.text content ] + strong :: forall w i. String -> HH.HTML w i strong str = HH.strong_ [ HH.text str ] hr :: forall w i. HH.HTML w i hr = HH.hr_ +div :: forall w i. Array (HH.HTML w i) -> HH.HTML w i +div content = HH.div_ content + +div_ :: forall w i. HH.Node DHI.HTMLdiv w i +div_ = HH.div + div_large_content :: forall w i. Array (HH.HTML w i) -> HH.HTML w i div_large_content content = HH.div [HP.classes [C.is_large, C.content]] content diff --git a/src/Web/Form.purs b/src/Web/Form.purs deleted file mode 100644 index d67036f..0000000 --- a/src/Web/Form.purs +++ /dev/null @@ -1,3 +0,0 @@ -module Web.Form where - - diff --git a/src/Web/Warning.purs b/src/Web/Warning.purs new file mode 100644 index 0000000..3277b85 --- /dev/null +++ b/src/Web/Warning.purs @@ -0,0 +1,9 @@ +module Web.Warning where + +import Halogen.HTML as HH +import Halogen.HTML.Properties as HP + +import CSSClasses as C + +big_website_warning :: forall w i. Array (HH.HTML w i) -> HH.HTML w i +big_website_warning content = HH.div [HP.classes [C.notification, C.is_warning]] content