npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@chgibb/electron-tabs

v0.8.1

Published

Simple tabs for Electron applications

Downloads

4

Readme

electron-tabs

Simple tabs for Electron applications

Electron Tab Demo

Installation

$ npm install --save electron-tabs

Demo

$ npm run demo

Usage

Add the following elements to the app page:

<div class="etabs-tabgroup">
    <div class="etabs-tabs"></div>
    <div class="etabs-buttons"></div>
</div>
<div class="etabs-views"></div>

And call the module in the renderer process:

const TabGroup = require("electron-tabs");

Then you can initialize a tab group and add tabs to it:

let tabGroup = new TabGroup();
let tab = tabGroup.addTab({
    title: "Electron",
    src: "http://electron.atom.io",
    visible: true
});

If you don't want to write your own styles, you can also insert the sample electron-tabs stylesheet in the page header:

<link rel="stylesheet" href="node_modules/electron-tabs/electron-tabs.css">

API

Tab Group

Represents the main tab container.

new TabGroup(options)

options must be an object. The following options are available:

  • tabContainerSelector (default: ".etabs-tabs"): CSS selector to target the element where tabs are inserted.
  • buttonsContainerSelector (default: ".etabs-buttons"): CSS selector to target the element where the "New Tab" button are inserted.
  • viewContainerSelector (default: ".etabs-views"): CSS selector to target the element where the view are inserted.
  • tabClass (default: "etabs-tab"): class to add to tab elements.
  • viewClass (default: "etabs-view"): class to add to webview elements.
  • closeButtonText (default: "&#10006;"): "close tab" button text.
  • newTabButtonText (default: "&#65291;"): "New Tab" button text.
  • newTab (default: undefined): arguments to use when .addTab() is called without parameters. It can be an object or a function which returns an object. It determines the options to use when the "New Tab" button is triggered. If you leave it undefined then the "New Tab" button won't be displayed.
  • ready (default: undefined): a callback function to call once the tab group is ready. The TabGroup instance is passed as the only parameter.

tabGroup.addTab(options)

Add a new tab to the tab group and returns a Tab instance.

  • title: tab title.
  • src: URL to the page which will be loaded into the view. This is actually the same than options.webview.src.
  • badge: optional text to put into a badge, badge will be hidden if it's falsey
  • iconURL: optional URL to the tab icon.
  • icon: optional code for a tab icon. Can be used with symbol libraries (example with Font Awesome: icon: 'fa fa-icon-name'). This attribute is ignored if an iconURL was given.
  • closable (default: true): if set to true the close button won't be displayed and the user won't be able to close the tab. See also tab.close().
  • webviewAttributes: attributes to add to the webview tag. See webview documentation.
  • visible (default: true): set this to false if you don't want to display the tab once it is loaded. If set to false then you will need to call tab.show() to display the tab.
  • active (default: false): set this to true if you want to activate the tab once it is loaded. Otherwise you will need to call tab.activate().
  • ready: a callback function to call once the tab is ready. The Tab instance is passed as the only parameter.

tabGroup.getTab(id)

Retrieve an instance of Tab from its id (return null if not found).

tabGroup.getActiveTab()

Return the currently active tab (otherwise return null).

tabGroup.getTabs()

Return all registered tabs.

tabGroup.eachTab(fn, thisArg)

Loop through the list of tabs in tabGroup and execute the fn function for each tab. fn is called with the following parameters:

  • currentTab: the current tab object.
  • index: the index of the current tab being processed.
  • tabs: the full array of tabs (similar to tabGroup.getTabs()).

thisArg (optional) is the value to use as this when executing fn.

Tab

Instances of Tab are returned by the tabGroup.addTab() method.

tab.setTitle(title)

Set tab title.

tab.getTitle()

Get current tab title.

tab.setBadge(badge)

Set tab badge.

tab.getBadge()

Get current tab badge.

tab.setIcon (iconURL, icon)

Set tab icon (a iconURL or an icon must be given).

tab.getIcon()

Get current tab icon URL / icon.

tab.setPosition(newPosition)

Move tab to the specified position. A negative value is an offset from the right.

To move a tab to the leftmost position:

tab.setPosition(1);

Note: a position of 0 also moves the tab to the leftmost position

To move a tab to the rightmost position:

tab.setPosition(-1);

tab.getPosition(fromRight)

Get the tab position. If fromRight is true the index returned is negative and is the offset from the right.

tab.activate()

Activate this tab. The class "active" is added to the active tab.

tab.show(flag)

Toggle the "visible" class on the tab. tab.hide() is an alias to tab.show(false).

tab.flash(flag)

Toggle the "flash" class on the tab. tab.unflash() is an alias to tab.flash(false).

tab.close(force)

Close the tab (and activate another tab if relevant). When force is set to true the tab will be closed even if it is not closable.

Access webview element

You can access the webview element and use its methods with through the Tab.webview attribute. See webview documentation.

let webview = tab.webview;
webview.loadURL("file://path/to/new/page.html");

Events

The following events are available:

  • tabGroup.on("tab-added", (tab, tabGroup) => { ... });
  • tabGroup.on("tab-removed", (tab, tabGroup) => { ... });
  • tabGroup.on("tab-active", (tab, tabGroup) => { ... });
  • tab.on("webview-ready", (tab) => { ... });
  • tab.on("title-changed", (title, tab) => { ... });
  • tab.on("icon-changed", (icon, tab) => { ... });
  • tab.on("active", (tab) => { ... });
  • tab.on("visible", (tab) => { ... });
  • tab.on("hidden", (tab) => { ... });
  • tab.on("flash", (tab) => { ... });
  • tab.on("unflash", (tab) => { ... });
  • tab.on("close", (tab) => { ... });
  • tab.on("closing", (tab) => { ... });

Drag and drop support

Electron-tabs is compatible with Dragula so you can easily make your tabs draggable.

Install Dragula:

npm install dragula --save

Don't forget to add a link to its stylesheet in the header:

<link rel="stylesheet" href="node_modules/dist/dragula.css">

Then call Dragula in your script once tabGroup is ready:

const TabGroup = require("electron-tabs");
const dragula = require("dragula");

var tabGroup = new TabGroup({
    ready: function (tabGroup) {
        dragula([tabGroup.tabContainer], {
			direction: "horizontal"
		});
    }
});

License

The MIT License (MIT) - Copyright (c) 2016 Thomas Brouard