{"id":18720730,"url":"https://github.com/lee-to/moonshine-tree-resource","last_synced_at":"2025-04-12T14:24:59.045Z","repository":{"id":166527234,"uuid":"641939546","full_name":"lee-to/moonshine-tree-resource","owner":"lee-to","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-18T07:59:51.000Z","size":132,"stargazers_count":16,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"2.x","last_synced_at":"2025-03-26T09:01:44.302Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lee-to.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-17T13:33:03.000Z","updated_at":"2025-03-05T06:34:37.000Z","dependencies_parsed_at":"2024-11-07T13:40:42.259Z","dependency_job_id":"1354c8fd-0689-4e23-9695-96856f5082e3","html_url":"https://github.com/lee-to/moonshine-tree-resource","commit_stats":null,"previous_names":["lee-to/moonshine-tree-resource"],"tags_count":9,"template":false,"template_full_name":"moonshine-software/moonshine-package-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lee-to%2Fmoonshine-tree-resource","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lee-to%2Fmoonshine-tree-resource/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lee-to%2Fmoonshine-tree-resource/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lee-to%2Fmoonshine-tree-resource/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lee-to","download_url":"https://codeload.github.com/lee-to/moonshine-tree-resource/tar.gz/refs/heads/2.x","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248230997,"owners_count":21069246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T13:32:24.353Z","updated_at":"2025-04-12T14:24:59.040Z","avatar_url":"https://github.com/lee-to.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"## MoonShine sortable tree resource\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://moonshine-laravel.com\" target=\"_blank\"\u003e\n\u003cimg src=\"https://github.com/lee-to/moonshine-tree-resource/blob/2.x/art/screenshot.png\"\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n### Requirements\n\n- MoonShine v3.0+\n\n### Support MoonShine versions\n\n| MoonShine   | TreeResource |\n|-------------|------|\n| 2.0+        | 1.0+ |\n| 3.0+        | 2.0+ |\n\n### Installation\n\n```shell\ncomposer require lee-to/moonshine-tree-resource\n```\n\n### Get started\n\nExample usage with tree\n\n```php\nuse Leeto\\MoonShineTree\\Resources\\TreeResource;\n\nclass CategoryResource extends TreeResource\n{\n    // Required\n    protected string $column = 'title';\n\n    protected string $sortColumn = 'sorting';\n\n    protected function pages(): array\n    {\n        return [\n            CategoryTreePage::class,\n            FormPage::class,\n            DetailPage::class,\n        ];\n    }\n\n    // ... fields, model, etc ...\n\n    public function treeKey(): ?string\n    {\n        return 'parent_id';\n    }\n\n    public function sortKey(): string\n    {\n        return 'sorting';\n    }\n\n    // ...\n}\n```\n\nAnd add component\n\n```php\nnamespace App\\MoonShine\\Pages;\n\nuse Leeto\\MoonShineTree\\View\\Components\\TreeComponent;\nuse MoonShine\\Laravel\\Pages\\Crud\\IndexPage;\n\nclass CategoryTreePage extends IndexPage\n{\n    protected function mainLayer(): array\n    {\n        return [\n            ...$this-\u003egetPageButtons(),\n            TreeComponent::make($this-\u003egetResource()),\n        ];\n    }\n}\n```\n\nOr modify index component from resource\n\n```php\nprotected string $sortColumn = 'sorting';\n\npublic function modifyListComponent(ComponentContract $component): ComponentContract\n{\n    return TreeComponent::make($this);\n}\n```\nJust a sortable usage\n\n```php\nuse Leeto\\MoonShineTree\\Resources\\TreeResource;\n\nclass CategoryResource extends TreeResource\n{\n    // Required\n    protected string $column = 'title';\n\n    protected string $sortColumn = 'sorting';\n\n    // ... fields, model, etc ...\n\n    public function treeKey(): ?string\n    {\n        return null;\n    }\n\n    public function sortKey(): string\n    {\n        return 'sorting';\n    }\n\n    // ...\n}\n```\n\n### Additional content\n\n```php\npublic function itemContent(Model $item): string\n{\n    return 'Custom content here';\n}\n```\n\n### Turn off sortable or wrapable\n\n```php\npublic function wrapable(): bool\n{\n    return false;\n}\n\npublic function sortable(): bool\n{\n    return false;\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flee-to%2Fmoonshine-tree-resource","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flee-to%2Fmoonshine-tree-resource","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flee-to%2Fmoonshine-tree-resource/lists"}