UNPKG

@spalger/kibana

Version:

Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic

93 lines (81 loc) 2.63 kB
var _ = require('lodash'); module.exports = function (chrome, internals) { /** * ui/chrome tabs API * * The navbar at the top of the page can be assigned links which will * pile up on the left. Each of these links has several properties that define * how it is rendered, how it looks when it's "active" and what happens when * it's clicked. * * To define a set of tabs, pass setTabs an array of TabSpec objects, * which are just plain objects with the following properties: * * id {string} * a unique value for this tab, should match the first path segment of * routes that are supposed to belong to this tab and is matched against the route * everytime it changes. When clicking the tab for the first time the user will be * sent to the '/${tab.id}' url which you can use to redirect to another url if needed * * title {string} * the text the tab should show * * resetWhenActive {boolean} * when the the tab is considered active, should clicking it * cause a redirect to just the id? * * trackLastPath {boolean} * When this tab is active, should the current path be tracked * and persisted to session storage, then used as the tabs href attribute when the user navigates * away from the tab? * * activeIndicatorColor {string} * css color string that will be used to style the active * indicator applied to tabs which are currently active. */ /** * @param {TabSpec[]} tabSpecs * @return {chrome} */ chrome.setTabs = function (tabSpecs) { internals.tabs.set(tabSpecs); return chrome; }; /** * @param {Object} defaults - defaults used for each tab * @return {chrome} */ chrome.setTabDefaults = function (defaults) { internals.tabs.setDefaults(defaults); return chrome; }; /** * @return {Tab[]} */ chrome.getTabs = function () { return internals.tabs.get(); }; /** * @return {Tab} */ chrome.getActiveTab = function () { return internals.tabs.getActive(); }; /** * @param {any} def - the default value if there isn't any active tab * @return {any} */ chrome.getActiveTabId = activeGetter('id'); /** * @param {any} def - the default value if there isn't any active tab * @return {any} */ chrome.getActiveTabTitle = activeGetter('title'); // create a getter for properties of the active tab function activeGetter(prop) { return function (def) { var active = chrome.getActiveTab(); return !active ? def : active[prop]; }; } };