internachi/blade-alpine-instantsearch

Algolia即时搜索作为Blade/Alpine.js组件

0.5.0 2024-03-12 20:47 UTC

This package is auto-updated.

Last update: 2024-09-12 21:57:06 UTC


README

Latest Stable Release MIT Licensed

这是一个工作中的包,允许您完全使用Laravel Blade组件来实现Algolia InstantSearch

使用方法

组件

并非所有组件都已实现,并且在1.0版本发布之前,大多数UI都可能发生变化。当前的实现是一个概念验证,我们将在接下来的几个月内在一些内部工具中对其进行改进。所有组件都应该在无渲染模式下工作,但UI仅实现了以下内容

  • <x-instantsearch> - 提供配置和上下文的包装器
  • <x-instantsearch::search-box> - 搜索输入
  • <x-instantsearch::hits> - 渲染搜索结果/命中项
  • <x-instantsearch::hit> - 渲染命中项中的特定属性
  • <x-instantsearch::highlight> - 根据输入渲染特定属性的高亮显示
  • <x-instantsearch::numeric-menu> - 通过数值(如价格/投票等)进行过滤
  • <x-instantsearch::refinement-list> - 通过标签/类别等进行过滤
  • <x-instantsearch::pagination> - 分页结果

所有组件尽可能映射到InstantSearch.js(实际上,API的大部分都是自动从JS文档生成的)。目前,最好参考JS文档进行配置。

Alpine

在内部,所有组件都使用Alpine.js v3来处理状态和渲染。例如,搜索框组件使用Alpine的x-model跟踪query值,并使用x-on:input将该值传递给instantsearch的refine()方法。看起来像这样

<input
    type="text"
    placeholder="Search"
    x-model="query"
    @input="refine(query)"
/>

在内部,此包将其自身注入到Blade组件的属性中,以连接到instantsearch实例——其余部分只是Alpine和Blade。

使用现有模板

所有组件都预捆绑了与使用Tailwind CSS的任何项目兼容的模板。如果您想调整特定模板,可以使用以下方式发布自己的版本

php artisan vendor:publish --tag=instantsearch

无渲染模式

如果您更喜欢对每个组件有更细粒度的控制,您可以启用renderless模式,该模式仅连接组件状态,但完全将UI留给您。

您可以通过在每个组件上使用组件的renderless属性来逐个组件地这样做

<x-instantsearch-refinement-list attribute="brand" renderless>
    <!-- Do whatever you want here -->
</x-instantsearch-refinement-list>

或者,您可以通过以下方式发布包配置文件

php artisan vendor:publish --tag=instantsearch

然后启用renderless配置选项,这将使所有组件默认以该模式工作。