Giter Site home page Giter Site logo

filamenttree's Introduction

Filament Tree

composer require yemenpoint/filament-tree

publish assets

php artisan vendor:publish --tag="filament-tree-assets"
php artisan vendor:publish --tag="filament-tree-views"

Tree Field

migration

Schema::table('tryings', function (Blueprint $table) {
    $table->json("items")->nullable();
});
use Yemenpoint\FilamentTree\Forms\Components\TreeField;

TreeField::make("items")
->setMaxDepth(999)
->default([["id" => "1", "name" => "item 1", "children" => [["id" => "2", "name" => "item 2", "children" => []]]]]),

Tree Page

Table structure and model

categories
id          - integer
parent_id   - integer
order       - integer
name       - string
Schema::create('categories', function (Blueprint $table) {
    $table->id();
    $table->unsignedBigInteger('parent_id')->nullable();
    $table->integer('order')->nullable()->default(0);
    $table->string('name');
});

model

<?php

namespace App\Models;


use Illuminate\Database\Eloquent\Model;
use Yemenpoint\FilamentTree\HasTree;

class Category extends Model
{
    use HasTree;
    
    function children()
    {
        return $this->hasMany(self::class, 'parent_id', 'id')->with("children")->orderBy("order");
    }
}

page

<?php

namespace App\Filament\Resources\Application\CategoryResource\Pages;

use App\Filament\Resources\Application\CategoryResource;
use App\Models\Category;
use Yemenpoint\FilamentTree\TreePage;

class TreeCategory extends TreePage
{
    protected static string $resource = CategoryResource::class;

    public function getItems(): array
    {
        return Category::with("children")->whereNull("parent_id")->orderBy("order")->get()->toArray();
    }
    
    public function getMaxDepth(): int
    {
        return parent::getMaxDepth(); // TODO: Change the autogenerated stub
    }

    public function isDisabled(): bool
    {
        return parent::isDisabled(); // TODO: Change the autogenerated stub
    }

}

filamenttree's People

Contributors

yemenpoint avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.