How to hide dropdown field value in the request form for End User ?



image avatar

Renaud Croix

Most Engaged Newbie of the Year - 2021

Publicado 25 de nov. de 2021

Hello,

I would like to hide a specific dropdown field value in the request form for End User ?

How to proceed ?

 

Thank you


9

25

25 comentários

Hello Nicole,

 

The latest version of Zendesk Guide templates (V4) is based on React and it is using the Garden components. Basically you will need to re-implement this logic within react to filter out those options that you need to hide before passing the data to the drop-down component. This approach is cleaner and also offers many other possibilities of customization.

 

I hope that this information helps.

 

Best regards, Alfredo

0


Not sure if anyone has suggestions here. I have coding that hid two forms from the dropdown when submitting a new request. This has worked previously, but was just notified that the options are now appearing again. I know ZD has been going through quite a few updates recently, I'm wondering if the code was somehow affected. What I currently have in use: 

 

  //hide form from dropdown selector
var tagsToRemove = ['[form a]', '[form b]'] 
function removeTagsWeDontWant() {
$('.nesty-panel').on('DOMNodeInserted', function(e){
for(var i in tagsToRemove) {
$('li#' + tagsToRemove[i]).remove();
}
});
};
removeTagsWeDontWant();  
  
  $('.nesty-panel').on('DOMNodeInserted', function(e){
    $(this).children('ul').children().remove('#[form a]');
		$(this).children('ul').children().remove('#[form B]');
	});
});

 

 

Does anyone have thoughts on this or can possibly help get these two forms hidden again? Thanks!

0


Here is an example on how you can modify the props component in the new_request_page.hbs to remove values from the dropdown:

const props = {
    requestForm: {
        ...{{json new_request_form}},
        ticket_form_field: {
            ...{{json new_request_form.ticket_form_field}},
            options: {{json new_request_form.ticket_form_field.options}}.filter(option => {
                // Define the values for "Issue" and "Feedback" to keep
                const valuesToKeep = [
                    20621452630546, // Issue
                    21326079695122  // Feedback
                ];
                return valuesToKeep.includes(option.value);
            })
        }
    },
    newRequestPath: {{json (page_path 'new_request')}},
    parentId: {{json parent.id}},
    parentIdPath: {{json parent.url}},
    locale: {{json help_center.locale}},
    baseLocale: {{json help_center.base_locale}},
    hasAtMentions: {{json help_center.at_mentions_enabled}},
    userRole: {{json user.role}},
    brandId: {{json brand.id}},
    wysiwyg: true,
    answerBotModal: {
        answerBot: {{json answer_bot}},
        hasRequestManagement: {{json help_center.request_management_enabled}},
        isSignedIn: {{json signed_in}},
        helpCenterPath: {{json (page_path 'help_center')}},
        requestsPath: {{json (page_path 'requests')}},
        requestPath: {{json (page_path 'request' id=answer_bot.request_id)}}
    },
};

You can log the object to find the values you want to keep and add additional logic based on which the dropdown is being filtered.,

// Log the requestForm JSON object to the console
console.log("new_request_form:", props.requestForm);

0


Hello Dustin,

 

Version 4 of templates is based on React and basically you need to code the logic prior rendering the component, so totally a new implementation. The new version receives the form, fields and options as an object which provides the data to the React component. This new approach will give you much more flexibility in customizing your form and even you can use your own components.

 

I hope that this information helps.

 

Best regards, Alfredo

1


I was able to get this to work in earlier versions of the Copenhagen template but with the latest version it looks like they are using dropdown combo boxes and list boxes to display the options and it is no longer using the ul or li options.  Has anyone found a fix for the version 4 template with these changes?   1263169183150 

 

0


Hey, all —
It came to my attention that there has not been any official comment on this from Zendesk Product. This kind of specific, granular control is definitely a good example of where we want to take our permissions over time, but not something in the roadmap at the moment. 

0


Dear Zendesk Product team,

We would also like to express the need to hide a specific dropdown field values in the request form for end users. 

Best regards,

Elif

0


Hi Sanskar,
 
It looks like you're looking to create conditional ticket fields. You can create a ticket field that's dependent on another ticket field's options/response. The options available for your end-user or customer will be dependent on what they choose or select for the value on a different field.  
 
We have a full guide that you can use for reference: Creating conditional ticket fields

I hope that helps!
 

0


Hello!
Is there any way, by which we can make dynamic dependent forms on zendesk? 
To explain my use case better,
Suppose there are two custom fields of tagger type. Now, if I select an option in the first custom field, the second custom field shows/updates options corresponding to the option selected in the first field.

0


Hi 1263213666949

Thanks for helping and providing the code. 

I was wrecking my brain trying to get this to work before I stumbled onto your code. 

For anyone coming along now just to be clear here's what I done to get it working. 

In the script.js file of my theme go to the bottom of the page and add. 

// For this funtion to work i needed to call it in my script.js file first.
  $(document).ready(function() {
    hideDemoOptionForAnonymous();
  });

// This will hide the option with the id demo_field if the user is anonymous.
function hideDemoOptionForAnonymous() {
  if (HelpCenter.user.role === "anonymous") {
    Array.prototype.forEach.call(document.querySelectorAll(".nesty-panel"), function(tagsElement) {
      if (tagsElement !== null) {
        var fieldDisableTagsObserver = new MutationObserver(function(mutations) {
          mutations.forEach(function(mutation) {
            if (mutation.type == 'childList') {
              if (mutation.addedNodes.length >= 1) {
                for (var i = 0; i < mutation.addedNodes.length; i++) {
                var demoFieldToRemove = document.querySelector("li#standard_request");
                  if (demoFieldToRemove !== null) {
                    demoFieldToRemove.remove();
                  }
                }
              }
            }
          });
        });
        fieldDisableTagsObserver.observe(tagsElement, {childList: true});
      }
    });
  }
}

Another thing to note:

In order to find the option id's you need to enable emulate a focused page in the console, you can google this or

open console in chrome

click the three dots top right

more tools - rendering

click on emulate a focused page

once you turn on emulate you can open the dropdown and it will stay open so you can hoover over the options and read the id. 

example: you can see the id for this option is standard_request.

0


Entrar para comentar.

Não encontrou o que estava procurando?

Nova publicação