workup/resource-navigation-tab

将你的长篇表格和关系组织成结构化的页面。

v1.1.1.002 2022-01-14 14:53 UTC

This package is auto-updated.

Last update: 2024-09-14 21:38:16 UTC


README

将你的长篇表格和关系组织成结构化的页面。

Resource Navigation Tab in Action

安装

您可以通过composer安装此包

composer require workup/resource-navigation-tab

基本用法

首先,将HasResourceNavigationTabTrait特性导入到您的资源中,并使用ResourceNavigationTab对象开始对字段进行分组

use Workup\ResourceNavigationTab\HasResourceNavigationTabTrait;
use Workup\ResourceNavigationTab\ResourceNavigationTab;

class ExampleNovaResource extends Resource {
 
    use HasResourceNavigationTabTrait; // Important!!

    public function fields(Request $request)
    {
        return [
            ResourceNavigationTab::make([
                'label' => 'Information',
                'behaveAsPanel' => true / false,
                'fields' => [
                    Text::make('Name'),
                    Text::make('Age'),
                    HasMany::make('Hobbies')
                ]
            ]),
            ResourceNavigationTab::make([ 'label' => 'Activities' ]),
            ResourceNavigationTab::make([ 'label' => 'Social Interactions' ]),
            ResourceNavigationTab::make([ 'label' => 'Settings' ]),
        ];
    }

}

一旦设置好,导航到您的资源详情视图,应该会显示这张卡片

Resource Navigation Tab in Action

默认情况下,主资源表(带有编辑/删除按钮的表)的标题将与您的选项卡相同,但您可以通过调用->resourceTableTitle('另一个标题')来自定义它

public function fields(Request $request)
{
    return [
        ResourceNavigationTab::make([
            'label' => 'Tab Title', 
            'resourceTableTitle' => 'Resource Table Title'
            'fields' => [...]
        ]),
    ];
}

默认情况下,每个定义的卡片都会显示在每个选项卡上,但您可以选择在特定选项卡被选中时显示哪个卡片

use Workup\ResourceNavigationTab\HasResourceNavigationTabTrait;
use Workup\ResourceNavigationTab\ResourceNavigationTab;
use Workup\ResourceNavigationTab\CardMode;

class ExampleNovaResource extends Resource {
 
    public function fields(Request $request)
    {
        return [
            ResourceNavigationTab::make([ 'label' => 'Profile' ]), // show all the available cards by default
            ResourceNavigationTab::make([ 
                'label' => 'Activities',
                'cardMode' => CardMode::KEEP_ALL | CardMode::EXCLUDE_ALL // show all or remove all cards when this tab is active
            ]),
            ResourceNavigationTab::make([ 
                'label' => 'Preferences',
                'cardMode' => CardMode::ONLY | CardMode::EXCEPT // show or remove only the selected cards
                'cards' => [
                   ClientPerformanceCard::class,
                   ClientProfileCard::class,
                ]
            ]), 
        ];
    }

    public function cards(Request $request)
    {
        return [
            new ClientPerformanceCard(),
            new DailySalesCard(),
            new ClientProfileCard()
        ];
    }

}

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件