Skip to content

[NODEBB] CSS Style Sheets SelectBox

Locked Solved Customisation
  • In fact , I would loike:

    • The dominant color of each theme in the background of the icon when the mouse is hovered, when the mouse is clicked and when dropdown in the menu.

    • White color of the icon in normal.

    • Black color of the icon when the mouse is hovered, when the mouse is clicked and when dropdown in the menu. (Even choose the color for each theme if possible)

  • @downpw Having looked at this, it will indeed require jQuery. I’m going to look further into this today hopefully.

  • @phenomlab

    Great man 🙂

    On the default theme. All it’s perfect !!!
    That’s why I thought of a CSS problem. Like a variable that I would have forgotten for example

  • @downpw Yes, I saw that. Let me know when the server is available and I’ll have a look.

  • On 1 hour

  • @downpw I’ve been able to get somewhere near this with the below custom function I’ve written

    	    $(window).on('action:ajaxify.end', function(data) {
    	        // Detect if the theme dropdown has been clicked. If it has, change the color to #000000
    	        $("#switcher").on("click", function() {
    	            $("#switcher i").css("color", "#000000");
    	        });
    	        // Detect if the theme dropdown has lost focus (clicked something else). If it has, change the color to #FFFFFF
    	        $("#switcher").on("focusout", function() {
    	            $("#switcher i").css("color", "#ffffff");
    	        });
    	    });
    

    Test it and let me know ? I’ve already added it, so you don’t need to do anything.

  • @phenomlab

    It seems to be better when dropdown 😉
    But when I lost focus, sometimes the icon don’t back again:

    Example here :
    0029c6f2-ae59-48ff-82a7-97e7e92fdb2d-image.png

    EDIT : see, I have recorded a gif

    The problem came on default theme too but it’s normal because it’s a javascript for all the site

    5c31ab54-4d9d-4183-8e97-80abd0850527-image.png https://imgur.com/a/2oSdcC3

  • @downpw thanks. Might need some tweaking to get it 100% but it’s a start. Will have a more detailed look at this as time permits. I’m back at work as of Monday ☺

  • @phenomlab Of course it is a very good basis for work.

  • @downpw Small modification to address the default theme icon bug (displayed white when focus lost, when it should be black)

    // Bugfix theme switcher button when dropdown / Focus / Not focus
    $(window).on('action:ajaxify.end', function(data) {
        var whichTheme = localStorage.getItem("theme");
        if (whichTheme === '') {
            // Assume default theme and set icon color to #000000
            $("#switcher i").css("color", "#000000");
        }
        if (whichTheme !== '') {
            // Assume color theme and set icon color to #ffffff
            $("#switcher i").css("color", "#ffffff");
        }
        // Detect if the theme dropdown has been clicked. If it has, change the color to #000000
        $("#switcher").on("click", function() {
            $("#switcher i").css("color", "#000000");
        });
        // Detect if the theme dropdown has lost focus (clicked something else). If it has, change the color to #FFFFFF
        $("#switcher").on("focusout", function() {
            $("#switcher i").css("color", "#ffffff");
        });
    });
    

    Active now, and should also address the other bug you mentioned.

  • @phenomlab

    I have tested but sorry it’s the same problem.

  • @downpw Can you reload the page and try again.

  • Yeah i delete cache and Ctrl + F5

    The problem come when I don’t click on fa-fw but background.

    Like this :

    95b7fce2-8708-4e32-bdb9-6fbd107ddb5c-image.png

    On fa-fw = No problem

  • @downpw Ok, do the default theme issue is fixed, but you still see the white icon when clicking the background and not the icon itself ?

  • nope it’s the same even on fa-fw and default theme

    but as you are connected you have to see it.

  • @downpw Right. I think I finally have this working 🙂

    I’ve added this into your global CSS - don’t delete it

    .themeon {
        color: #000000 !important;
    }
    .themeoff {
        color: #ffffff !important;
    }
    

    Final modified JS

    // Bugfix theme switcher button when dropdown / Focus / Not focus
    	$(document).ready(function () {
    	// First, detect which theme is in use
        var whichTheme = localStorage.getItem("theme");
        // Is the target dropdown expanded ? Use aria-expanded for this as it populates into the DOM on change making it easier to work with. 
        // If it is expanded, then we set the icon to WHITE with CSS class "themeon"
          if ($('#theme_dropdown').attr('aria-expanded') === "true") {
             $("#switcher i").addClass("themeon");
          }
        // If it is collapsed, then we set the icon to BLACK with CSS class "themeoff"
          if ($('#theme_dropdown').attr('aria-expanded') === "false") {
             $("#switcher i").addClass("themeoff");
          }
          // If we are using the default theme, deploy CSS "themeoff" and set the icon to BLACK
              if (whichTheme === '') {
          // If no other matches, assume the default theme, deploy CSS "themeoff" and set the icon to BLACK
             $("#switcher i").removeClass("themeoff");
        }
    });
    

    According to my testing, this works 🙂

  • clear and simple explanations.
    Perfect 😉

    I don’t know if I should say this but… I love you ha ha 😆

  • @downpw Some last changes to address small bugs. The below CSS has been added

    /* DO NOT DELETE THESE LINES */
    [aria-expanded="true"] a #ticon {
        color: #000000;
    }
    
    .themeon {
        color: #ffffff !important;
    }
    .themeoff {
        color: #000000 !important;
    }
    
    
    

    And also to the mobile block

    /* DO NOT DELETE THESE LINES */
    [aria-expanded="true"] a #ticon {
        color: #ffffff;
    }
    .themeoff {
        color: #ffffff !important;
    }
    

    Finally, a new function

    // When hovering over the #switcher element, target the i class and add 'themeoff'
      $(document).on('mouseenter','#switcher', function() {
    		$('#switcher i').addClass("themeoff");
    });
    // When leaving the however state, target the i class and remove 'themeoff'
      $(document).on('mouseleave','#switcher', function() {
    		$('#switcher i').removeClass("themeoff");
    });
    

    This block should be deleted

    /*
    // Bugfix theme switcher button when dropdown / Focus / Not focus
    	$(document).ready(function () {
    	// First, detect which theme is in use
    	// Tout d'abord, on détecte quel thème est utilisé
        var whichTheme = localStorage.getItem("theme");
        // Is the target dropdown expanded ? Use aria-expanded for this as it populates into the DOM on change making it easier to work with. 
        // If it is expanded, then we set the icon to WHITE with CSS  class "themeon"
        // On utilise "aria-expanded" pour savoir si le menu déroulant est actif/dévelopé car la variable se remplit dans le DOM en cas de changement, ce qui facilite le travail avec.
        // Si le menu est actif/dévelopé, on définit l'icône en BLANC avec la classe CSS "themeon"
          if ($('#theme_dropdown').attr('aria-expanded') === "true") {
             $("#switcher i").addClass("themeon");
          }
        // If it is collapsed, then we set the icon to BLACK with CSS  class "themeoff"
        // S'il est réduit/non actif, nous définissons l'icône sur NOIR avec la classe CSS "themeoff"
          if ($('#theme_dropdown').attr('aria-expanded') === "false") {
              console.log("Theme selector is not active");
             $("#switcher i").addClass("themeoff");
          }
          // If we are using the default theme, deploy CSS "themeoff" and set the icon to BLACK
          // Si on utilise le thème par défaut, on utilise le CSS "themeoff" et on définit l'icône sur NOIR
              if (whichTheme === '') {
          // If no other matches, assume the default theme, deploy CSS  "themeoff" and set the icon to BLACK
          // Si rien ne correspond, on utilise le thème par défaut, on utilise le CSS "themeoff" et on définit l'icône sur NOIR
             $("#switcher i").removeClass("themeoff");
        }
    });
    */
    
  • DownPWundefined DownPW referenced this topic on
  • @phenomlab

    It’s possible to add a reload at the end of the script ?

    Because, I just saw this:

    if certain CSSS variables are declared in one theme and not in the other, when I Switch themes, the CSS was applied but not correctly. If i refresh it’s OK.

    I seem to have 2 solutions:

    • Declare all variables in each theme even if they are not used in others (with or without !important)

    • Reload the page after selecting a theme.

    Or maybe you have another solution.


Did this solution help you?
Did you find the suggested solution useful? Why not buy me a coffee? It's a nice gesture, and a great way to show your appreciation 💗

Related Topics
  • Whitespace fixes in Nodebb

    Solved Customisation
    18
    7 Votes
    18 Posts
    1k Views

    @Panda Just circling back here with something of an update (which I think you’ll like). I’ve completely restructured the ranking system. There are now less ranks, with a higher point threshold to reach them.

    More importantly, if you reload the site, you’ll notice that the ranks are now icons.

    I also removed the “Author” badge, and made this a single icon, which (to me) looks much better.

  • The best css to customize our logo?

    Solved Customisation
    2
    1 Votes
    2 Posts
    448 Views

    @Sala This should look better

    .sidenav .navbar-brand { padding-top: 0.5rem; padding-bottom: 0.5rem; }

    e5cec20e-be36-4ee8-9129-fd11ad4656ac-image.png

    You can increase the top and bottom padding by increasing the values above.

  • who is read NodeBB

    Customisation
    6
    0 Votes
    6 Posts
    632 Views

    @cagatay You should ask in the NodeBB forums. Perhaps reference this post

    https://discuss.flarum.org/d/23066-who-read

  • [NodeBB] Import custom Font

    Solved Customisation
    12
    3 Votes
    12 Posts
    1k Views

    @cagatay you’ll need to define this in the body tag (or another element if you want greater or more granular targets) - for example

    body { font-family: "Poppins"; font-size: 16px; }

    Essentially, you use the font-size CSS directive.

  • [NODEBB] Scroll Button

    Solved Customisation
    7
    0 Votes
    7 Posts
    860 Views

    @downpw ooops. Forgot that. Thanks for adding.

  • Avatar on Topic Header

    Solved Customisation
    9
    0 Votes
    9 Posts
    658 Views

    @jac said in Avatar on Topic Header:

    @downpw said in Avatar on Topic Header:

    Great Plugin 🙂

    I make it a bit cleaner via this CSS code:

    /*------------------------------------------------------------------*/ /*---------------- nodebb-plugin-browsing-users -----------------*/ /*------------------------------------------------------------------*/ /*Space between the avatar and the RSS icon */ .topic [component="topic/browsing-users"] { margin-bottom: -5px; padding-left: 10px; } /*Space between avatars*/ .pull-left { float: left!important; padding-right: 5px; }

    Do you have a screenshot of how this looks with the CSS change?

    Just added this change, thanks @DownPW 🙂

  • [NodeBB] username cards

    Solved Customisation
    8
    5 Votes
    8 Posts
    941 Views

    @phenomlab

    Aha…nice to know. As always thank you for the reply and information.

  • NodeBB Design help

    Solved Customisation
    8
    2 Votes
    8 Posts
    959 Views

    @riekmedia I’ve applied some new CSS to your site. Can you reload the page and try again ?

    For the record, this is what I added

    #footer { background: #2d343e; border-top: 4px solid #2d343e; font-size: 0.9em; margin-top: 70px; padding: 80px 0 0; position: relative; clear: both; bottom: 0; left: 0; right: 0; z-index: 1000; margin-left: -15px; margin-right: -338px; }

    The /categories page seems a bit messed up, so looking at that currently

    EDIT - issued some override CSS in the CATEGORIES widget

    <!--- CSS fix for overspill on /categories page - DO NOT DELETE --> <style> #footer { margin-right: -45px; } </style>

    That should resolve the /categories issue.