Download the PHP package jibaymcs/tabbed without Composer

On this page you can find all versions of the php package jibaymcs/tabbed. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package tabbed

Tabbed - In-app tab system for FilamentPHP v5

Latest Version on Packagist Total Downloads

A FilamentPHP v5 plugin that brings IDE/browser-style tabs to your panel. Open resource pages (Edit, View, Create, List) in tabs, switch between them instantly without losing state, and organize your workflow with drag & drop, renaming, and context menus.

Features

Installation

Add the plugin's views to your custom theme CSS file:

Setup

Register the plugin in your PanelProvider:

Usage

Option 1: Automatic with trait

Add HasTabbedActions to your Resource to automatically include the "Open in tab" action on every table row:

Option 2: Manual action

Add OpenInTabAction manually in your table configuration for more control:

Option 3: Row click

Make clicking a table row open the record in a tab instead of navigating to the edit page:

Action options

Opening a related record (openFor)

OpenInTabAction opens the page of the record bound to its surrounding context — the row's record on a table, the page's record on an infolist Section, etc. That's almost always what you want.

But when the action lives inside the page of one model and you want it to open a related model, the bound record (the parent) and the target record are different. Without help, the action would call $parent->getKey() and try to open the target page with the parent's id — which 404s silently because that id doesn't exist in the target table.

The openFor() callback solves this. It receives the Filament-injected parent record and returns the actual record whose page should open. From that point on, every downstream callback (tabName, hoverCardContent, tabColor, …) receives the resolved record — so you can write attribute reads naturally without manually walking the relation each time.

When to use it: any time the action's target resource is different from the page/row's resource. Typical example — a "View contact" button in the Contact section of a Ticket infolist:

When NOT to use it: when the action sits on a row of the target resource's table, or in any context where the bound $record is already the model you want to open. The default behaviour is correct — openFor adds no value and just adds noise.

Edge cases:

Per-tab permissions

Control what users can do with individual tabs. Accepts bool or a Closure receiving $record for conditional logic:

Per-tab permissions combine with global settings (allowReorder, allowRename, etc.) on TabbedPlugin. The global setting is the master switch: if it's off, the per-tab setting is ignored. If the global is on, the per-tab closure decides.

Tab colors

Customize tab appearance per action. Accepts Filament Color palettes, hex values, or any CSS color string:

Hover cards

Display a rich tooltip when hovering over a tab. The content is fully customizable and has access to the $record:

Available positions: Top, TopStart, TopEnd, Bottom, BottomStart, BottomEnd, Left, Right.

Security note: Hover card content is rendered as raw HTML (x-html). If you include user-provided data, make sure to escape it with e() or htmlspecialchars() to prevent XSS vulnerabilities.

The hover card stays visible when moving the cursor from the tab to the card. It also works on overflow dropdown items.

JavaScript events

You can open/close tabs programmatically from anywhere:

Events dispatched by the plugin:

Event Payload Description
tabbed:tab-opened { tab } A tab was opened
tabbed:tab-closed { tab } A tab was closed
tabbed:tab-activated { tabId } A tab was activated
tabbed:tab-deactivated { tabId } Active tab was toggled off
tabbed:all-closed All tabs were closed

Configuration

Plugin options

Configure via fluent methods in your PanelProvider:

Keyboard shortcuts

Enable keyboard shortcuts for power-user navigation. Disabled by default to avoid unexpected behavior.

Default shortcuts:

Action Shortcut
Next tab Ctrl+Alt+Right
Previous tab Ctrl+Alt+Left
Close active tab Alt+W
Reopen last closed Alt+Shift+T

Shortcuts are ignored when an input, textarea, or select is focused. They use Alt as the primary modifier to avoid conflicts with browser shortcuts (Ctrl+Tab, Ctrl+W, etc.).

Closed tabs are stored in a session-only history stack (max 10). You can also reopen them via the right-click context menu ("Reopen closed tab").

Performance: Lazy loading & destroy inactive

By default, all open tabs have their Livewire components created immediately. For better performance with many tabs:

A loading spinner appears in the tab panel while the Livewire component loads, and a small loading indicator is shown on the tab itself.

Dropdown mode

Replace the full tab bar with a compact dropdown button:

Clicking the button opens a dropdown listing all tabs with icons, active indicator, close buttons, and hover cards. All existing features (lazy load, middle-click, persistence) work in dropdown mode.

Dirty state & close confirmation

The plugin detects unsaved changes in tab forms. When a form field is modified, an orange dot appears on the tab. If confirmation is enabled, closing a dirty tab shows a Filament-style modal instead of closing immediately.

The dirty state resets automatically after a successful save (save or create Livewire calls). The confirmation modal also appears for "Close others" and "Close all" context menu actions when dirty tabs are involved.

Redirect interception

By default, saving a form inside a tab stays in the tab instead of following Filament's redirect (which would navigate away from the tab system). This works for both Edit and Create pages:

Notifications and other Livewire effects are preserved — only the redirect is blocked.

Pinned tabs

Right-click a tab and select "Pin" to pin it. Pinned tabs are visually distinct (primary background + pin icon) and anchored to the left of the tab bar.

Pinned tab protections:

The close button (x) still works on pinned tabs — pinning protects against bulk close, not individual close. Pin state is persisted in localStorage.

Tab search

When the overflow dropdown (or dropdown mode menu) contains 5 or more tabs, a search field appears at the top. Type to filter tabs by name in real time (case-insensitive, partial match). Use arrow keys to navigate results and Enter to activate the highlighted tab. Escape clears the search, or closes the menu if the search is already empty.

Tab duplication

Right-click a tab and select "Duplicate" to open the same resource/page/record in a new tab. The duplicate opens right after the original with a numbered suffix (e.g. "User #5 (2)"). Colors, hover card, and other settings are copied from the original.

Config file

Publish the config file for project-wide defaults:

Plugin fluent methods take priority over config file values.

Tab bar position

The tab bar can be placed at any Filament render hook position:

The tab bar is rendered at the chosen position, while the tab content panels always render inside <main class="fi-main">.

Changelog

Please see CHANGELOG for more information on what has changed recently.

Credits

License

The MIT License (MIT). Please see License File for more information.


All versions of tabbed with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
filament/filament Version ^5.0
spatie/laravel-package-tools Version ^1.15.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package jibaymcs/tabbed contains the following files

Loading the files please wait ...