How can i create a pup-up menu like the one for choose the shader on materials in unity 2019?

Hi guys, I’m working on an ediotr tool, and I need to create the pop-up menu like the one in the material inspector. Look the image to understand what I mean: Cattura1 hosted at ImgBB — ImgBB
I searched a lot on Internet, but i couldn’t find nothing. I also tried to check the Unity source code on GitHub, but nothing. I hope you can help me.

Thank you in advance!

It took some digging, but I found the shader dropdown implementation in the source reference here.
Using that, I put together a quick custom editor that has its own AdvancedDropdown as an example:
Custom Dropdown Expanded

Custom Dropdown Filter

Custom Dropdown Selected

using System;
using UnityEditor;
using UnityEditor.IMGUI.Controls;
using UnityEngine;

public class EditorWithDropdown : Editor
	private string selectedItemName = null; // the currently selected item
	private AdvancedDropdownState dropdownState = null; // the stored state of the dropdown

	public override void OnInspectorGUI()
		Rect position = EditorGUILayout.GetControlRect();

		// set the dropdown label
		var label = new GUIContent("Custom Dropdown");
		if(selectedItemName != null)
			label = new GUIContent(selectedItemName);

		// draw the dropdown
		if(EditorGUI.DropdownButton(position, label, FocusType.Keyboard))
			var dropdown = new CustomAdvancedDropdown(
				dropdownState, Dropdown_ItemSelected);


    // called from CustomAdvancedDropdown when selection changes
	private void Dropdown_ItemSelected(string item)
		selectedItemName = item;

	private class CustomAdvancedDropdown : AdvancedDropdown
		private Action<string> onItemSelected;

		public CustomAdvancedDropdown(AdvancedDropdownState state, Action<string> onItemSelected)
			: base(state)
			minimumSize = new Vector2(270, 308);
			this.onItemSelected = onItemSelected; // add item selected callback

		// builds the dropdown menu
		protected override AdvancedDropdownItem BuildRoot()
			// create the root element
			AdvancedDropdownItem root = new AdvancedDropdownItem("Root Name");

			// add basic child elements
			root.AddChild(new AdvancedDropdownItem("Item 1"));
			root.AddChild(new AdvancedDropdownItem("Item 2"));
			root.AddChild(new AdvancedDropdownItem("Item 3"));
			root.AddChild(new AdvancedDropdownItem("Item 4"));
			root.AddChild(new AdvancedDropdownItem("Item 5"));
			root.AddChild(new AdvancedDropdownItem("etc."));

			return root;

		// called when an item is selected
		protected override void ItemSelected(AdvancedDropdownItem item)
			// alert item selected

Hopefully this helps! I can’t seem to find any documentation for AdvancedDropdown, but both of the source reference links I provided above give quite a bit of insight.

Good luck!