PHPackages                             armincms/nova-tab - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. armincms/nova-tab

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

armincms/nova-tab
=================

A Laravel Nova tool.

4.0.2(6y ago)873.4k↓33.3%11MITPHPPHP &gt;=7.1.0

Since Oct 21Pushed 6y ago2 watchersCompare

[ Source](https://github.com/armincms/nova-tab)[ Packagist](https://packagist.org/packages/armincms/nova-tab)[ RSS](/packages/armincms-nova-tab/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (2)DependenciesVersions (10)Used By (1)

Nova Tab
========

[](#nova-tab)

Field's Grouping by the tab.

##### Table of Contents

[](#table-of-contents)

- [Install](#install)
- [Quick Start](#quick-start)
- [Usage](#quick-usage)
- [Multiple Tabs](#multiple-tabs)
- [Using With Panel](#using-with-panel)
- [Relations](#relations)
- [Missed Tabs](#missed-tabs)

Install
-------

[](#install)

```
composer require armincms/nova-tab
```

Quick Start
-----------

[](#quick-start)

First create your tab like follow.

```
Tab::make('tab-name', [
  'first-group-name' => 'First Group Label',
  'second-group-name' => 'Second Group Label',
  'fourth-group' => [
    // group fields
  ],
  'fifth-group' => function() {
    return [
      // group fields
    ];
  }
])->fullwidth();

```

Then, to insert each field into the created tab; pass the `name` and the `group name`into the `withTab` macro method.for example:

```
  Text::make('Name')->withTab('tab-name', 'first-group-name');
  Text::make('Gender')->withTab('tab-name', 'second-group-name');

```

Usage
-----

[](#usage)

First create your tab like follow. Then; for define tab `field's`, you can use the `group` method.

```
Tab::make('tab-name', function($tab) {

    // pass fields by callback
    $tab->group('first-tab-name', function($group) {
      return [

        // define your tab fields

      ];
    });

    // pass fields by array
    // active your tab by `active` method
    $tab->group('active-tab', [

        // define your tab fields

    ])->active();

    // custom label tab
    $tab->group('custom-label-tab', function($group) {
      // or inside the group
      $group->label('My Custom Label');

      return [

        // define your tab fields

      ];
    })->label('My Custom Label');

  // full width tab by call `fullwidth` method
})->fullwidth();

```

### Ative Tab:

[](#ative-tab)

By default we'll active the first tab. if you want customize the `active tab`, it's availabe by call the `active` method on the tab `group`.

### Tab Label

[](#tab-label)

It's possible to customize the `tab label's` by passing the label string through the `label` method on the `group`.

### Full Width Tab

[](#full-width-tab)

If you want jsutify the tab for fill screen; you can call `fullWidth` method on the `Tab::class`

#### Attention 1: you can add any `field` and `relation-field` into the tab.

[](#attention-1-you-can-add-any-field-and-relation-field-into-the-tab)

#### Attention 2: it's impossible to add `Panel` into the tab.

[](#attention-2-its-impossible-to-add-panel-into-the-tab)

#### Attention 3: It's possible to add the `tab` into the `Panel`.

[](#attention-3-its-possible-to-add-the-tab-into-the-panel)

- base example:

```
    use Armincms\Tab\Tab;

    /**
     * Get the fields displayed by the resource.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function fields(Request $request)
    {
        return Tab::make('general', function($tab) {
          $tab->group('general', [
              ID::make()->sortable(),

              Select::make('Tag')->options(function() {
                  return ['*' => 'all'];
              })->default('*'),
          ])->label(__('General'));

          $tab->group('SEO', [
              Text::make('Title'),
          ])->active();

          $tab->group('Relations', [
              MorphToMany::make('Tag'),
          ])->label('Relations');
        })->toArray();
    }

```

- Fullwidth tab example:

```
    use Armincms\Tab\Tab;

    /**
     * Get the fields displayed by the resource.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function fields(Request $request)
    {
        return Tab::make('general', function($tab) {
          $tab->group('general', [$this, 'generalFields'])->label(__('General'));

          $tab->group('SEO', [
              Text::make('Title'),
          ])->active();

          $tab->group('Relations', [
              MorphToMany::make('Tag'),
          ])->label('Relations');
        })->fullwidth()->toArray();
    }

    public function generalFields()
    {
      return $this->merge([
        ID::make()->sortable(),
        Select::make('Tag')->options(function() {
            return ['*' => 'all'];
        })->default('*'),
      ]);
    }

```

Multiple Tabs
-------------

[](#multiple-tabs)

You can add multiple tab into `form` and `detail` page. for this situation; just needs making different name for different tabs.

#### Attention 1: You can't add same` relation-field` in different tabs.it just work with one of them.

[](#attention-1-you-cant-add-same-relation-field-in-different-tabsit-just-work-with-one-of-them)

```

    use Armincms\Tab\Tab;

    /**
     * Get the fields displayed by the resource.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function fields(Request $request)
    {
        return [
            Tab::make('first-tab', function($tab) {
                $tab->group('general', [$this, 'generalFields'])->label(__('General'));

                $tab->group('SEO', [
                    Text::make('Title'),
                ])->active();

                $tab->group('Relations', [
                    MorphToMany::make('Tag'),
                ])->label('Relations');
            }),
            Tab::make('second-tab', function($tab) {
                $tab->group('general', [
                    ID::make()->sortable(),

                    Select::make('Tag')->options(function() {
                        return ['*' => 'all'];
                    })->default('*'),
                ])->label(__('General'));

                $tab->group('SEO', [
                    Text::make('Title'),
                ])->active();

                $tab->group('Relations', [
                    MorphToMany::make('Category'),
                ])->label('Relations');
            }),
        ];
    }

    public function generalFields()
    {
      return $this->merge([
        ID::make()->sortable(),
        Select::make('Tag')->options(function() {
            return ['*' => 'all'];
        })->default('*'),
      ]);
    }

```

Using With Panel
----------------

[](#using-with-panel)

You can add tab into `Panel` but you never can add `Panel` into tab.

```

    use Armincms\Tab\Tab;

    /**
     * Get the fields displayed by the resource.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function fields(Request $request)
    {
        return [
            new Panel('First Panel', [
                Tab::make('general', function($tab) {
                    $tab->group('general', [
                        ID::make()->sortable(),

                        Select::make('Tag')->options(function() {
                            return ['*' => 'all'];
                        })->default('*'),
                    ])->label(__('General'));

                    $tab->group('SEO', [
                        Text::make('Title'),
                    ])->active();

                    $tab->group('Relations', [
                        MorphToMany::make('Tag'),
                    ])->label('Relations');
                }),
            ]),
    }

```

Relations
---------

[](#relations)

```

    use Armincms\Tab\Tab;

    /**
     * Get the fields displayed by the resource.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function fields(Request $request)
    {
        return [
            new Panel('My Panel', [
                Tab::make('general', function($tab) {
                    $tab->group('Author', [
                        ID::make()->sortable(),

                        BelogsTo::make('User'),
                    ])->label(__('General'));

                    $tab->group('Relations', [
                        MorphToMany::make('Tag'),
                    ])->label('Relations');
                }),
            ])
        ];
    }

```

Missed Tabs
-----------

[](#missed-tabs)

If some fields missing in the tab, with macro method `withTab` you can add the missed field into the tab. like following example:

```
  Text::make('FieldName')->withTab('tab-name', 'group-name')

```

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity33

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~18 days

Recently: every ~35 days

Total

9

Last Release

2255d ago

Major Versions

0.4.0 → 4.0.12020-01-02

### Community

Maintainers

![](https://www.gravatar.com/avatar/188c6af1615930311adb86de0f0f1e9241b3306d8f7680c385caa6aa0810ca48?d=identicon)[zareismail](/maintainers/zareismail)

---

Top Contributors

[![zareismail](https://avatars.githubusercontent.com/u/23401061?v=4)](https://github.com/zareismail "zareismail (22 commits)")

---

Tags

laraveltabnovaarmincms

### Embed Badge

![Health badge](/badges/armincms-nova-tab/health.svg)

```
[![Health](https://phpackages.com/badges/armincms-nova-tab/health.svg)](https://phpackages.com/packages/armincms-nova-tab)
```

###  Alternatives

[optimistdigital/nova-multiselect-field

A multiple select field for Laravel Nova.

3403.5M7](/packages/optimistdigital-nova-multiselect-field)[armincms/json

A Laravel Nova field.

25149.4k3](/packages/armincms-json)[genealabs/laravel-overridable-model

Provide a uniform method of allowing models to be overridden in Laravel.

92398.0k2](/packages/genealabs-laravel-overridable-model)[armincms/many-to-many

A Laravel Nova field.

2574.7k3](/packages/armincms-many-to-many)[inspheric/nova-defaultable

Default values for Nova fields when creating resources and running resource actions.

51174.8k1](/packages/inspheric-nova-defaultable)[murdercode/nova4-tinymce-editor

Boost your Laravel Nova with the TinyMCE editor.

17165.2k](/packages/murdercode-nova4-tinymce-editor)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
