From c057c723217a47207819b4be65cd4a2ed5d96c4c Mon Sep 17 00:00:00 2001 From: Cillian O'Ruanaidh Date: Fri, 22 Aug 2025 15:53:39 +0100 Subject: [PATCH] Replace ofn-page-alert angular directive --- .../darkswarm/directives/page_alert.js.coffee | 21 ------------ app/views/shared/menu/_alert.html.haml | 4 +-- .../controllers/page_alert_controller.js | 34 +++++++++++++++++++ 3 files changed, 36 insertions(+), 23 deletions(-) delete mode 100644 app/assets/javascripts/darkswarm/directives/page_alert.js.coffee create mode 100644 app/webpacker/controllers/page_alert_controller.js diff --git a/app/assets/javascripts/darkswarm/directives/page_alert.js.coffee b/app/assets/javascripts/darkswarm/directives/page_alert.js.coffee deleted file mode 100644 index d0fadadde7..0000000000 --- a/app/assets/javascripts/darkswarm/directives/page_alert.js.coffee +++ /dev/null @@ -1,21 +0,0 @@ -angular.module('Darkswarm').directive "ofnPageAlert", ($timeout) -> - restrict: 'A' - scope: true - link: (scope, elem, attrs) -> - moveSelectors = [".off-canvas-wrap .inner-wrap", - ".off-canvas-wrap .inner-wrap .fixed", - ".off-canvas-fixed .top-bar", - ".off-canvas-fixed ofn-flash", - ".off-canvas-fixed nav.tab-bar", - ".off-canvas-fixed .page-alert"] - - container_elems = $(moveSelectors.join(", ")) - - # Wait a moment after page load before showing the alert. Otherwise we often miss the - # start of the animation. - $timeout -> - container_elems.addClass("move-up") - , 1000 - - scope.close = -> - container_elems.removeClass("move-up") diff --git a/app/views/shared/menu/_alert.html.haml b/app/views/shared/menu/_alert.html.haml index 787c1258cc..c2bd5e43a5 100644 --- a/app/views/shared/menu/_alert.html.haml +++ b/app/views/shared/menu/_alert.html.haml @@ -1,4 +1,4 @@ -.text-center.page-alert.fixed{ "ofn-page-alert" => true } +.text-center.page-alert.fixed{ "data-controller" => "page-alert" } .alert-box = render 'shared/page_alert' - %a.close{ "ng-click": "close()" } × + %a.close{ "data-action" => "page-alert#close" } × diff --git a/app/webpacker/controllers/page_alert_controller.js b/app/webpacker/controllers/page_alert_controller.js new file mode 100644 index 0000000000..a7bd46dc03 --- /dev/null +++ b/app/webpacker/controllers/page_alert_controller.js @@ -0,0 +1,34 @@ +import { Controller } from "stimulus"; + +export default class extends Controller { + moveSelectors = [".off-canvas-wrap .inner-wrap", + ".off-canvas-wrap .inner-wrap .fixed", + ".off-canvas-fixed .top-bar", + ".off-canvas-fixed ofn-flash", + ".off-canvas-fixed nav.tab-bar", + ".off-canvas-fixed .page-alert"]; + + connect() { + // Wait a moment after page load before showing the alert. Otherwise we often miss the + // start of the animation. + setTimeout(this.#show, 1000); + } + + close() { + this.#moveElements().forEach((element) => { + element.classList.remove("move-up"); + }); + } + + // private + + #moveElements() { + return document.querySelectorAll(this.moveSelectors.join(",")); + } + + #show = () => { + this.#moveElements().forEach((element) => { + element.classList.add("move-up"); + }); + }; +}