Skip to main content

Breadcrumb Component


Breadcrumb Component

The Breadcrumb component provides a lightweight global UI component that includes the following features:

  • A JavaScript functions that appends or removes a breadcrumb item.
  • An ability to display removable filtering criteria.

The Breadcrumb component is available in Versions 6.2 and later of Zuora Quotes.

The Breadcrumb component consists of the following:

  • Breadcrumb.component: The Visualforce component to be embedded on your Visualforce page

Breadcrumb component attribute

The Breadcrumb component accepts the following attribute.

name String Yes

Name of the breadcrumb. Used to uniquely identify the breadcrumbn on the Visualforce page.

Breadcrumb support functions 

The Breadcrumb component supports the following Javascript functions.

Function Description
(id, value)
Appends a new Breadcrumb item with the given unique id. The value parameter is the value displayed as the breadcrumb.
Removes a Breadcrumb item identified by the id parameter.

The Breadcrumb component follows the Publish-Subscribe pattern so that you can write your own "Subscriber" to the Topic.BREADCRUMB_ITEM_DELETED when the user deletes an item in the Breadcrumb component.

pubsubz.subscribe(Topic.BREADCRUMB_ITEM_DELETED, function (topics, data) {
  // Implement what to do on the delete event

Sample code

The following Visualforce page code contains a Breadcrumb component instance and buttons to interact with the component.

<apex:page showHeader="true" sidebar="true" title="Testing Breadcrumb">
  <zqu:Breadcrumb name="myTest" />
  <zqu:Breadcrumb name="mySecondTest" />
      <input type="button" id="btn-add-1" value="Add to first breadcrumb" />
      <input type="button" id="btn-add-2" value="Add to second breadcrumb" />
      <input type="button" id="btn-save" value="Save to LocalStorage" />
      <input type="button" id="btn-restore" value="Restore from LocalStorage" />

  <div id="deleted"></div>
  <script type="text/javascript">

  (function (window, document) {
    var btnFirstAdd = document.getElementById('btn-add-1');
    var btnSecondAdd = document.getElementById('btn-add-2');
    var areaDeleted = document.getElementById('deleted');
    var btnSave = document.getElementById('btn-save');
    var btnRestore = document.getElementById('btn-restore');

    // Used to generate a random string
    function makeId(length) {
      var text = '';
      var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
      for (var i = 0; i < length; i++) {
        text += possible.charAt(Math.floor(Math.random() * possible.length));
      return text;
    // Called when one of the buttons are clicked
    function addToBreadcrumb(breadcrumbName) {
      var timeAdded = new Date();
      var text = 'Added at ' + timeAdded.getSeconds() + '"' + timeAdded.getMilliseconds();
      (if (breadcrumbName == "myTest")
        window.breadcrumbs.myTest.append(makeId(15), text, breadcrumbName);
        window.breadcrumbs.mySecondTest.append(makeId(15), text);
    // Print the received data
    function toString(data) {
      var tmp = [];
      for (var prop in data) {
        if (data.hasOwnProperty(prop))
          tmp.push(prop + ': ' + data[prop]);
      return '{ ' + tmp.join('; ') + ' }';

    // Add the event listener to the button
    btnFirstAdd.addEventListener('click', function () {
    }, false);
    btnSecondAdd.addEventListener('click', function () {
    }, false);
    // Subscribe to the deletion event
    pubsubz.subscribe(Topic.BREADCRUMB_ITEM_DELETED, function (topics, data) {
      areaDeleted.innerHTML += 'Deleted: ' + toString(data) + '<br/>';
    btnSave.addEventListener('click', function (e) {
    btnRestore.addEventListener('click', function (e) {

    }(this, this.document));