bezhansalleh/filament-panel-switch

轻松在您的Filament面板之间切换

1.0.6 2024-08-07 23:51 UTC

This package is auto-updated.

Last update: 2024-09-07 23:59:30 UTC


README

Panel Switch

FILAMENT 8.x Packagist Tests Passing Code Style Passing Downloads

目录

面板切换

Filament面板切换插件为使用FilamentPHP构建的应用程序提供了一个强大且可定制的组件,用于在面板之间切换。

Demo Demo Demo

安装

您可以通过composer安装此包

composer require bezhansalleh/filament-panel-switch

安装后,插件将与Filament无缝集成,无需进一步设置。尽管插件开箱即用,但它旨在进行定制。请查看下面的配置部分以获取详细的定制选项。

配置

在服务提供者的启动方法中使用configureUsing方法开始您的自定义配置

use BezhanSalleh\PanelSwitch\PanelSwitch;

PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {
    // Custom configurations go here
});

设计或样式

默认情况下,插件使用Filament的Modal Blade组件作为面板切换菜单的现代设计。但您可以使用simple()方法将其更改为简单设计。

  • 现代

    • 模态标题
      为面板切换器设置自定义模态标题。默认情况下,模态标题设置为切换面板
          use BezhanSalleh\PanelSwitch\PanelSwitch;
      
          PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {
              $panelSwitch->modalHeading('Available Panels');
          });
    • 模态宽度
      默认情况下,模态宽度设置为screen,但您可以使用Modal Blade组件的可用选项。
          use BezhanSalleh\PanelSwitch\PanelSwitch;
      
          PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {
              $panelSwitch->modalWidth('sm');
          });
    • 滑动覆盖
      您可以使用slideOver()方法打开一个slide-over对话框,而不是模态框。
          use BezhanSalleh\PanelSwitch\PanelSwitch;
      
          PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {
              $panelSwitch->slideOver();
          });
  • 简单

    simple()方法将面板切换菜单转换为下拉列表,使用户可以直接从列表中切换面板。
        use BezhanSalleh\PanelSwitch\PanelSwitch;
    
        PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {
            $panelSwitch->simple();
        });

标签

使用labels()方法,您可以为每个面板提供文本表示。数组的键应该是有效的面板ID,值可以是普通字符串或Laravel的可翻译字符串

use BezhanSalleh\PanelSwitch\PanelSwitch;

PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {
    $panelSwitch
        ->labels([
            'admin' => 'Custom Admin Label',
            'general_manager' => __('General Manager')
        ]);
});

图标/图片

使用icons()方法定义可用面板的图标/图片,它接受一个数组。数组的键应该是有效的面板ID。如果使用图片而不是图标,请将$asImage参数设置为true,数组值应该是图片路径,即有效的URL

  • 图标
use BezhanSalleh\PanelSwitch\PanelSwitch;

PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {    
    $panelSwitch->icons([
        'validPanelId1' => 'heroicon-o-square-2-stack',
        'validPanelId2' => 'heroicon-o-star',
    ], $asImage = false);
});
  • 图片
use BezhanSalleh\PanelSwitch\PanelSwitch;

PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {    
    $panelSwitch->icons([
        'validPanelId1' => 'https://raw.githubusercontent.com/bezhanSalleh/filament-panel-switch/3.x/art/banner.jpg',
        'validPanelId2' => 'https://raw.githubusercontent.com/bezhanSalleh/filament-panel-switch/3.x/art/banner.jpg',
    ], $asImage = true);
});

图标/图片大小

使用iconSize()方法设置图标/图片的大小。默认大小为128px。提供的值将乘以4,然后用作图标/图片的大小。

use BezhanSalleh\PanelSwitch\PanelSwitch;

PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {   
    // This would result in an icon/image size of 128 pixels.
    $panelSwitch->iconSize(32);  
});

可见性

默认情况下,该包检查用户是否可以访问面板;如果可以,则切换将可见。您可以进一步自定义是否显示面板切换。

use BezhanSalleh\PanelSwitch\PanelSwitch;

PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) { 
    $panelSwitch
        ->visible(fn (): bool => auth()->user()?->hasAnyRole([
            'admin',
            'general_manager',
            'super_admin',
        ]));
});

谁可以切换面板?

在您希望一组用户能看到面板但不能切换面板的情况下,您可能需要这样的选项。您可以通过使用 canSwitchPanels() 方法来实现。

use BezhanSalleh\PanelSwitch\PanelSwitch;

PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {
    $panelSwitch
        ->canSwitchPanels(fn (): bool => auth()->user()?->can('switch_panels'));
});

面板排除

默认情况下,所有可用的面板都将列在面板切换菜单中。但您可以使用 excludes() 方法排除其中一些。

PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {
    $panelSwitch->excludes([
        'saas'
    ]);
});

放置

您可以选择面板切换菜单应放置的位置。默认情况下,面板切换菜单通过 'panels::global-search.before' 钩子 渲染。但您也可以将其更改为其他可用的 Filament 渲染钩子 之一。

use BezhanSalleh\PanelSwitch\PanelSwitch;

PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {
    $panelSwitch->renderHook('panels::global-search.after');
});

使用

面板切换插件 具有流畅的 API,因此您可以将方法链接在一起,一次配置所有内容。

use BezhanSalleh\PanelSwitch\PanelSwitch;

PanelSwitch::configureUsing(function (PanelSwitch $panelSwitch) {
    $panelSwitch
        ->heading('Available Panels')
        ->modalWidth('sm')
        ->slideOver()
        ->icons([
            'admin' => 'heroicon-o-square-2-stack',
            'app' => 'heroicon-o-star',
        ])
        ->iconSize(16)
        ->labels([
            'admin' => 'Admin Panel',
            'app' => 'SaaS Application'
        ]);
        
});

主题化

默认情况下,插件使用默认的 Filament 主题,但您可以通过将视图路径添加到您的 tailwind.config.js 文件中的 panels' content 数组中来自定义它。

export default {
    content: [
        // ...
        './vendor/bezhansalleh/filament-panel-switch/resources/views/panel-switch-menu.blade.php',
    ],
    // ...
}

可选地,您可以使用以下方式发布视图:

php artisan vendor:publish --tag="filament-panel-switch-views"

测试

composer test

变更日志

请参阅 变更日志 了解最近发生了什么变化。

贡献

如果您想为此包做出贡献,您可能希望在一个真实的 Filament 项目中测试它。

  • 将此仓库 Fork 到您的 GitHub 账户。
  • 在本地创建一个 Filament 应用。
  • 将您的 Fork 克隆到 Filament 应用根目录中。
  • /filament-panel-switch 目录中,为您的修复创建一个分支,例如 fix/error-message.

在您的应用的 composer.json: 中安装包。

"require": {
    "bezhansalleh/filament-panel-switch": "dev-fix/error-message as main-dev",
},
"repositories": [
    {
        "type": "path",
        "url": "filament-panel-switch"
    }
]

现在,运行 composer update。

安全漏洞

请查看 我们的安全策略 了解如何报告安全漏洞。

致谢

许可证

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。