mt1sk / livewire-multiselect
Livewire 多选组件
v1.0.1
2022-09-05 09:53 UTC
Requires
- php: >=7.4
- illuminate/database: ^7.0|^8.0|^9.0
- illuminate/support: ^7.0|^8.0|^9.0
- livewire/livewire: ^2.4
README
需求
安装
您可以通过 composer 安装此包
composer require mt1sk/livewire-multiselect
使用方法
1) 将 LivewireMultiselect\HasSelect 特性添加到您的组件中
class Index extends Component { use LivewireMultiselect\HasSelect;
2) 向您的组件添加选择监听器
protected $listeners = ['select'];
3) 向您的组件添加可用的选项和已选选项的变量
// for selected options - multiple public ?array $teamFilter = null; // for selected option - single public int|string|null $teamFilter = null; // available options public ?Collection $teams = null;
4) 将选择添加到您的页面中
<livewire:multiselect parentId="{{ $this->id }}" name="teamFilter" label="name" :selected="$teamFilter" title="{{ __('Teams') }}" :options="$teams" :multiselect="true" styles="w-full"></livewire:multiselect>
事件
多选组件会触发一个 select 事件,该事件由 HasSelect 特性捕获,并将值设置到您的组件中的适当变量。
此特性还会在您的组件中调用(如果存在)selected 函数,并传递选择名称和已选项目。您可以在组件中定义一个 selected 方法来响应更改
仅在 :simpleForm="false" 时有效
多选
public function selected(string $name, array $value) { if ($name === 'teamFilter') { // do something } }
选择
public function selected(string $name, int|string|null $value)
属性
附加功能
您可以通过在组件中调用来刷新已选项目
// reset component variables $this->reset('teamFilter'); $this->anotherFilter = [2,3]; // reset options on all component selects $this->emitTo('multiselect', 'refresh', $this); // you can also do something like this, // BUT ALL NOT PASSED SELECTS, WITHIN THE COMPONENT, WILL BE RESET TO EMPTY. $this->emitTo('multiselect', 'refresh', ['id' => $this->id, 'teamFilter' => [2]]);
您也可以刷新可用的选项
$teams = $this->teams->take(3); // $teams - available options // 'teamFilter' - select name // $this->id - component id(parentId) $this->emitTo('multiselect', 'refreshOptions', $teams, 'teamFilter', $this->id);
自定义
您可以通过发布其视图来自定义选择的外观
php artisan vendor:publish --tag=multiselect:views
许可
MIT 许可证 (MIT)。请参阅许可文件以获取更多信息。