diff options
author | Yorhel <git@yorhel.nl> | 2022-06-15 11:10:39 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2022-06-15 11:10:39 +0200 |
commit | 53ea1351acf6f3e3762a3a42bdd624a5de6e1407 (patch) | |
tree | 70972db4d00c165caa91a7476bf49399a2ac8201 /elm | |
parent | 99c79e7bee627be2c24ae99482df61bf94944c00 (diff) |
User.Edit: Add live preview when changing skin selection
Diffstat (limited to 'elm')
-rw-r--r-- | elm/User/Edit.elm | 9 | ||||
-rw-r--r-- | elm/User/Edit.js | 7 |
2 files changed, 14 insertions, 2 deletions
diff --git a/elm/User/Edit.elm b/elm/User/Edit.elm index dfc85049..bcdeb6fd 100644 --- a/elm/User/Edit.elm +++ b/elm/User/Edit.elm @@ -1,4 +1,4 @@ -module User.Edit exposing (main) +port module User.Edit exposing (main) import Bitwise exposing (..) import Set @@ -28,6 +28,8 @@ main = Browser.element , subscriptions = always Sub.none } +port skinChange : String -> Cmd msg + type Tab = Profile | Preferences type alias PassData = @@ -242,7 +244,10 @@ update msg model = ({ model | tab = t, invalidDis = True }, Task.attempt (always InvalidEnable) (Ffi.elemCall "reportValidity" "mainform" |> Task.andThen (\_ -> Process.sleep 100))) InvalidEnable -> ({ model | invalidDis = False }, Cmd.none) Admin m -> ({ model | admin = Maybe.map (updateAdmin m) model.admin }, Cmd.none) - Prefs m -> ({ model | prefs = Maybe.map (updatePrefs m) model.prefs }, Cmd.none) + Prefs m -> + let np = Maybe.map (updatePrefs m) model.prefs + s = Maybe.map (\x -> x.skin) >> Maybe.withDefault "" + in ({ model | prefs = np }, if (s np) /= (s model.prefs) then skinChange (s np) else Cmd.none) Pass m -> ({ model | pass = Maybe.map (updatePass m) model.pass, passNeq = False }, Cmd.none) Username s -> ({ model | nusername = s }, Cmd.none) diff --git a/elm/User/Edit.js b/elm/User/Edit.js new file mode 100644 index 00000000..df5b3d32 --- /dev/null +++ b/elm/User/Edit.js @@ -0,0 +1,7 @@ +wrap_elm_init('User.Edit', function(init, opt) { + var app = init(opt); + app.ports.skinChange.subscribe(function(skin) { + var sheet = document.querySelector('link[rel=stylesheet]'); + sheet.href = sheet.href.replace(/[^\/]+\.css/, skin+'.css'); + }); +}); |