艾卡沃斯/wireui-smart-table

简单而高效、完全可配置的组件,适用于所有 CRUD 操作。一个 Laravel - Livewire 组件,可以利用 Tailwind 和 WireUI 直观地以表格(或创建/更新/删除表单)的形式展示模型数据,同时保持最小化组件配置,并保持完全可扩展、可扩展和可配置的能力。它还提供可选的内置智能表单,简化所有 CRUD 操作。

1.0.6 2024-07-26 08:27 UTC

This package is auto-updated.

Last update: 2024-09-26 16:27:02 UTC


README

Latest Stable Version License Total Downloads PHP Version Require

git 仓库

简单而高效、完全可配置的组件,适用于所有 CRUD 操作。一个 Laravel - Livewire - WireUI 组件,可以利用 Tailwind 和 WireUI 直观地以表格(或创建/更新/删除表单)的形式展示模型数据,同时保持最小化组件配置,并保持完全可扩展、可扩展和可配置的能力。它还提供可选的内置智能表单,简化所有 CRUD 操作。

  1. 功能
  2. 实际示例
  3. 安装
  4. 示例用法
  5. 可用配置
    i. 表格
    ii. 表单
  6. 事件 & 监听器
    i. 表格
    ii. 表单

功能

  1. 自动检测列模型(除枚举外)
  2. 根据列类型使用文本、选择、数字输入等进行搜索列
  3. 按列升/降/空排序/分组
  4. 分页
  5. 列可见性
  6. 添加/编辑/删除对象表单
  7. 状态保存
  8. 上下文菜单(右键点击)

实际示例

  1. 仅通过提供模型类即可自动创建表格

<livewire:wire-ui-smart-table
    table_core_db_model="WireUiSmartTable\\Models\\TestModel"
    table_features_use_fillable="false"
    table_columns_enums='{"test_enum":"WireUiSmartTable\\\\Enums\\\\TestEnum::cases"}'
/>

Auto created table with the above code

  1. 仅通过提供模型类即可自动创建表单

<livewire:wire-ui-smart-form
    form_core_db_model="WireUiSmartTable\\Models\\TestModel"
    form_columns_enums='{"test_enum":"WireUiSmartTable\\\\Enums\\\\TestEnum::cases"}'
/>

Auto created table with the above code

安装

按照以下步骤将软件包安装到您的 Laravel 项目中

不要忘记 WireUI 安装说明,请参阅 https://v1.wireui.dev/docs/get-started#installation

  1. composer require iakovos/wireui-smart-table
  2. 安装 Tailwind CSS(请参阅 https://tailwind.org.cn/docs/installation
  3. npm install livewire-sortable --save-dev(请参阅 https://github.com/livewire/sortable
  4. 在您的包中导入 livewire-sortable(app.js)
    import 'livewire-sortable'
    // 或者。
    require('livewire-sortable')
  5. 在根文档模板的 livewire 和 WireUI 脚本之后添加 @stack('wire-ui-smart-scripts')

示例用法

对于具有 1 个枚举属性的模型的最简单示例用法是


<livewire:wire-ui-smart-table
    table_core_db_model="App\\Models\\User"
    table_columns_enums='{"department_type":"App\\\\Enums\\\\DepartmentTypes::cases"}'
/>

或者更简洁


<livewire:wire-ui-smart-table
    table_core_db_model="$mymodel"
    table_columns_enums='{{ json_encode($enums) }}'
/>

可用配置

您组件所需的唯一配置是 livewire 属性 table_core_db_modeltable_columns_enums(如果有)。智能表会自动检测模型上的所有列和关系,并显示具有列、过滤器、排序、分页、可见性和分组(以后将添加更多)的表格

所有模板都可以通过更改到所需变量模板的路径或发布模板并对其进行更改来更改。

如果您想显示某些列或进一步配置,这里列出了所有配置选项(所有选项都是 livewire 组件属性)

表格配置

必需

livewire 属性名称定义
table_core_db_model表格使用的主体模型,例如 App\Models\User
table_columns_enums(如果有)声明列作为枚举,path\to\a\class::cases 应返回枚举的可用情况,例如 {"User.column_name":"path\\\\to\\\\a\\\\enum\\\\class::cases"}

可选/自动检测

livewire 属性名称定义
table_columns_columns您希望显示的列。例如 table_columns_columns='["id","name","relationName.id","relationName.some_column"]'
table_columns_booleans布尔类型的列名平面数组,例如 ["column_1","relation.column_2"]
table_columns_integers数值类型的列名平面数组,例如 ["column_1","relation.column_2"]
table_columns_datetimes应与日期选择器过滤一起出现的列平面数组,例如 ["column_1","relation.column_2"]
table_relations_files包含文件关系名称的平面数组。关系必须是HasMany类型,文件模型应至少包含以下列:name, path, size, category
builder_filters用于对行进行硬过滤的函数,例如 builder_filters="App\\Http\\Controllers\\UserResourceController::applyLogicFilters",定义如下 function applyLogicFilters($builder):Builder 必须返回builder
table_relations_filters一个关联数组,定义了为给定列下拉菜单添加过滤器的函数,例如 table_relations_filters={"broker_id":"App\\\\Http\\\\Controllers\\\\UserResourceController::applyColumnFilters"} 定义如下 function applyColumnFilters($column_name, $builder):Builder 必须返回builder
table_features_use_fillable如果未定义列,则使用laravel fillable(如果为false,则从模式中找到所有列)
table_features_search搜索状态变量
table_features_columns_visibility可见状态变量
table_features_replaces大多数(如果不是所有)情况下,列名不友好。智能表将自动将列名 "relationName.some_column" 转换为 "Relation Name Some Column",但以防万一还不够,您可以按所需方式声明列,例如 {"relationName.some_column":"My new column"}
table_features_group_properties用于分组的列名平面数组
table_settings_default_datetime_format表格上使用的日期时间格式。默认为 'd-m-Y'
table_settings_default_datepicker_format日期选择器上使用的日期时间格式。默认为 'DD-MM-YYYY'
table_settings_enable_groups启用或禁用请求中的组。默认为 true
table_settings_show_clear_filter显示或隐藏清除过滤器按钮。默认为 true
table_settings_show_loading显示或隐藏加载旋转器。默认为 true
table_settings_show_filters显示或隐藏列过滤器。默认为 true
table_settings_enable_joined_groups允许或不使用多个列进行分组。默认为 false
table_settings_save_state按账户/模型在数据库上持久化当前表格状态。默认为 true
table_templates_top_toolbox包括实际表格上方所有顶部部分的模板及其组件
table_templates_top_right_buttons用于表格顶部右侧行操作的按钮模板
table_templates_header_row包括所有 th 头
table_templates_filters_style选择过滤器样式,对每个表格列或下拉菜单,有效值="dropdown" 或 "table",默认为 table
table_templates_filters_row包含所有头过滤器的表格行,在表风格的情况下
table_templates_filters_integer整数列过滤器的模板
table_templates_filters_enum枚举列过滤器的模板
table_templates_filters_datetime日期时间列过滤器的模板
table_templates_filters_boolean布尔列过滤器的模板
table_templates_filters_string字符串列过滤器的模板
table_templates_filters_select_multiple关系过滤器的模板
table_templates_data_group_row表格组的模板
table_templates_data_row表格行的模板
table_templates_cell_id_checkbox包含选择行复选框的第一个单元格的模板
table_templates_cell_checkbox布尔单元格的模板
table_templates_cell_array包含多个值的单元格模板,例如 m2m 关系
table_templates_cell_string字符串单元格的模板
table_templates_context_menu当右键单击行时用作上下文菜单的按钮模板

表单配置

必需

livewire 属性名称定义
form_core_db_model表格使用的主体模型,例如 App\Models\User
form_columns_enums(如果有)声明列作为枚举,path\to\a\class::cases 应返回枚举的可用情况,例如 {"User.column_name":"path\\\\to\\\\a\\\\enum\\\\class::cases"}

可选/自动检测

livewire 属性名称定义
form_features_replaces大多数(如果不是所有)情况下,列名不友好。智能表将自动将列名 "relationName.some_column" 转换为 "Relation Name Some Column",但以防万一还不够,您可以按所需方式声明列,例如 {"relationName.some_column":"My new column"}
form_features_use_fillable使用模型可填充字段,否则从模式检测列
表单列列您希望显示的列。例如 table_columns_columns='["id","name","relationName.id","relationName.some_column"]'
表单列布尔值布尔类型的列名平面数组,例如 ["column_1","relation.column_2"]
表单列整数数值类型的列名平面数组,例如 ["column_1","relation.column_2"]
表单列日期时间应显示为日期选择器的列的平面数组
表单列文本应显示为文本区域的列的平面数组
表单关系文件包含文件关系名称的平面数组。关系必须是HasMany类型,文件模型应至少包含以下列:name, path, size, category
表单默认列跨度要使用的网格列数默认为4
表单列跨度每个属性的列名=>网格列跨度的关联数组,默认为1
表单列隐藏要隐藏的列名的平面数组
表单关系隐藏要隐藏的关系的平面数组
表单枚举选项包含枚举值的数组数组的关联数组(如果已定义表单列枚举则不需要)
表单属性在自动检测或json反序列化后由组件使用的列
表单设置布局类型表单布局类型默认为"单",但将在不久的将来支持"选项卡"布局
表单创建规则创建新项目时使用的验证规则
表单更新规则编辑项目时使用的验证规则
表单创建事件在创建对象之前应调用的函数,例如 form_events_creating="App\\Livewire\\Calendar::creatingNewChecklist" 必须返回项目本身
表单创建后事件创建对象后应调用的函数 必须返回项目本身
表单更新事件在更新对象之前应调用的函数 必须返回项目本身
表单更新后事件更新对象后应调用的函数 必须返回项目本身
表单删除事件在删除对象之前应调用的函数
表单删除后事件删除对象后应调用的函数
模板布局单新增用于添加表单的模板
模板布局单编辑用于编辑表单的模板
模板关系文件用于文件关系的模板
模板属性布尔值用于布尔属性的模板
模板属性日期时间用于日期时间属性的模板
模板属性枚举用于枚举属性的模板
模板属性整数用于整数属性的模板
模板属性多选用于多对多关系属性的模板
模板属性单选用于单选关系和枚举属性的模板

事件和监听器

1. 表格

事件名称定义
refresh刷新表格
setSelectedIds(array $ids)在表格上设置选定的/检查的id,例如 [5=>true, 17=>true]
rowClicked($id)表示已点击具有 $id 的行

2. 表单

事件名称定义
openSmartForm显示表单
rowClicked($id)表示已点击具有 $id 的行
deleteItem删除由 rowClicked 定义的id的项目