Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

Using different icons for UI Macros / FUJI

EthanVanDoorne
Giga Contributor

How do we change the icons used on the macros? They are all defaulted with the icon-tree-right since the upgrade.

6 REPLIES 6

EthanVanDoorne
Giga Contributor

bump? anybody?


chrisw4
Mega Contributor

Hopefully you've found an answer by now, but you can find a contact sheet of the new icons and their CSS class names at this url: https://INSTANCENAME.service-now.com/styles/retina_icons/retina_icons.html



Details on the new icons here: Icons for g_form.addDecoration() Method



Example UI macro below. To change the icon, you'd change "icon-tree-right" to the desired icon's corresponding class listed in the contact sheet.



<a>  


              <span  


                      id="${jvar_n}"  


                      onclick="showRelatedList('${ref}')"  


                      name="${jvar_n}"  


                      aria-label="${HTML:gs.getMessage('Show related incidents')}"  


                      title="${gs.getMessage('Show related incidents')}"  


                      alt="${gs.getMessage('Show related incidents')}"  


                      class="icon ref-button icon-tree-right btn btn-default btn-ref"  


              ></span>  


      </a>  



Hope this helps!


I believe this post answers the question, as I have updated my icon, though using a custom icon may be a different question in itself.



There is one issue that I'd like to address that the code is like hard-coding an icon link that is always visible no matter if the corresponding field has a value or not.



This is different behavior than what is desired with the <g:reference_decoration> jelly tag in that this tag shows/hides the icon link based on if there is a value in the corresponding reference field or not. The problem is that using this tag seems to only give you the default span back:



<span class="btn btn-default btn-ref icon-tree-right" title="" alt="Alt text here" data-original-title="Alt text here"></span>



just inspecting and changing the class value to btn btn-default btn-ref [icon-name-here] does in fact change the icon to whatever icon you specify according to the retina_icons preview.



Does anyone have a solution to that?


brnunn
Tera Contributor

Hi Daniel,



Luckily for us, Mark Stranger from SNGuru has updated his existing article on UI Macros with a solution for this Fuji issue. I wish I knew how Mark figured this stuff out, but for now I can just say THANK YOU. I get by pretty well on most things but I'm generally struggle with Jelly. I didn't realize we could have an onchange call in a ui macro like below.



First, here is the link to the original article: Open Google Map from a Location Record - ServiceNow Guru



I've modified Mark's reference to a location field and it's elements to just check to see if there is a valid reference value, so this could work on any reference field - the below code can be added at the start of your "<script>":




needsRefresh = false;


          function onChange_show_img(element, original, changed, loading) {


                var s = '${ref}'.split('.');


                var referenceField = s[1];


                if (needsRefresh == false) {


                      needsRefresh = true;


                      return;


                }


                if (changed.length == 0) {


                      $('${jvar_n}').hide();


                      return;


                }


                var locRec = g_form.getReference(referenceField, userReturn);


          }


       


          function userReturn(locRec) {


                var e = $('${jvar_n}');


                if (e)


                      e.show();


                else


                      e.hide();


          }


               


          var l = new GlideEventHandler('onChange_show_img', onChange_show_img, '${ref}');


          g_event_handlers.push(l);