From 76c101938dae56ca9e4d3f4c5574b5fbbd2ecd8a Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Sun, 2 Mar 2025 12:32:11 +0100 Subject: [PATCH] Extract Materialize FAB controller --- .../controllers/materialize/fab_controller.js | 28 +++++++++++++++++++ assets/index.js | 12 -------- templates/Entry/entry.html.twig | 2 +- 3 files changed, 29 insertions(+), 13 deletions(-) create mode 100644 assets/controllers/materialize/fab_controller.js diff --git a/assets/controllers/materialize/fab_controller.js b/assets/controllers/materialize/fab_controller.js new file mode 100644 index 000000000..2bf24e9fa --- /dev/null +++ b/assets/controllers/materialize/fab_controller.js @@ -0,0 +1,28 @@ +import { Controller } from '@hotwired/stimulus'; +import M from '@materializecss/materialize'; + +export default class extends Controller { + static values = { + edge: { type: String, default: 'left' }, + }; + + connect() { + this.instance = M.FloatingActionButton.init(this.element); + } + + autoDisplay() { + const scrolled = (window.innerHeight + window.scrollY) >= document.body.offsetHeight; + + if (scrolled) { + this.toggleScroll = true; + this.instance.open(); + } else if (this.toggleScroll === true) { + this.toggleScroll = false; + this.instance.close(); + } + } + + disconnect() { + this.instance.destroy(); + } +} diff --git a/assets/index.js b/assets/index.js index 69fad640d..253fad183 100755 --- a/assets/index.js +++ b/assets/index.js @@ -255,25 +255,13 @@ const articleScroll = () => { const s = $(window).scrollTop(); const d = $(document).height(); const c = $(window).height(); - const articleElBottom = articleEl.offset().top + articleEl.height(); const scrollPercent = (s / (d - c)) * 100; $('.progress .determinate').css('width', `${scrollPercent}%`); - const fixedActionBtn = $('.js-fixed-action-btn'); - const toggleScrollDataName = 'toggle-auto'; - if ((s + c) > articleElBottom) { - fixedActionBtn.data(toggleScrollDataName, true); - fixedActionBtn.floatingActionButton('open'); - } else if (fixedActionBtn.data(toggleScrollDataName) === true) { - fixedActionBtn.data(toggleScrollDataName, false); - fixedActionBtn.floatingActionButton('close'); - } }); } }; $(document).ready(() => { - $('.fixed-action-btn').floatingActionButton(); - stickyNav(); articleScroll(); initPreviewText(); diff --git a/templates/Entry/entry.html.twig b/templates/Entry/entry.html.twig index 20a88e7b8..5fa5d8a77 100644 --- a/templates/Entry/entry.html.twig +++ b/templates/Entry/entry.html.twig @@ -330,7 +330,7 @@ {{ entry.content|raw }} -
+