Skip to content
This repository has been archived by the owner on Mar 17, 2021. It is now read-only.

haoflynet/nova-nested-tree-attach-many

 
 

Repository files navigation

Nova Nested Tree Attach Many

License: MIT Latest Version on Github Total Downloads

Belongs To Many Field for simple manage Nested relation tree. Enables attaching relationships easily.

nova-nested-tree-attach-many

RoadMap

  • Validation
  • Show selected categories on Detail
  • Ability to pass your own tree
  • Ability to Delayed Loading data when tree has many records ( example 10k+ ).

Installation

composer require phoenix-lib/nova-nested-tree-attach-many

Usage

This field uses tree provided by kalnoy/nestedset package

This field uses riophae/vue-treeselect under the hood

use PhoenixLib\NestedTreeAttachMany\NestedTreeAttachManyField;
public function fields(Request $request)
{
    return [
        NestedTreeAttachManyField::make('Offer Categories',"categories","App\Nova\Category"),
    ];
}

Your model should has NodeTrait form package kalnoy/nestedset see RoadMap

class Category extends Model
{
    use NodeTrait;
}

Options

Here are a few customization options

  • ->searchable(bool $searchable)
  • ->withIdKey(string $idKey = 'id') // - id column name in your nested model
  • ->withLabelKey(string $labelKey = 'name') // - label column name in your nested model
  • ->withActiveKey(string $activeKey) // - active_status column name in your nested model used for disable options
  • ->withChildrenKey(string $childrenKey) // - children key in your nested model
  • ->withPlaceholder(string $placeholder) // - placeholder in tree select
  • ->withMaxHeight(int $maxHeight)
  • ->withSortValueBy(string $sortBy) // - @see https://vue-treeselect.js.org/#flat-mode-and-sort-values
  • ->withAlwaysOpen(bool $alwaysOpen) // - by default select is open, but you can change it behavior
  • ->withFlatten(bool $flatten) // - by default flatten is enabled, but you can change it behavior
  • ->useSingleSelect() // - ability for select only one value

Authorization

This field also respects policies: ie Role / Permission

  • RolePolicy: attachAnyPermission($user, $role)
  • RolePolicy: attachPermission($user, $role, $permission)
  • PermissionPolicy: viewAny($user)

Validation

You can set min, max, size, required or custom rule objects

->rules('min:5', 'max:10', 'size:10', 'required', new CustomRule)`

Contributing

Feel free to suggest changes, ask for new features or fix bugs yourself.

Hope this package will be useful for you.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 82.3%
  • Vue 15.1%
  • JavaScript 1.8%
  • SCSS 0.8%