bezhansalleh / filament-panel-switch
轻松在您的Filament面板之间切换
Requires
- php: ^8.1
- filament/filament: ^3.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- spatie/laravel-ray: ^1.26
README
目录
面板切换
Filament面板切换插件为使用FilamentPHP构建的应用程序提供了一个强大且可定制的组件,用于在面板之间切换。
安装
您可以通过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)。请参阅 许可文件 了解更多信息。