Skip to content

Commit

Permalink
Fix Laravel IDE helper
Browse files Browse the repository at this point in the history
- add command to generate the helper code

Thanks to @adelf
  • Loading branch information
ph7jack committed Oct 20, 2024
1 parent e4a0503 commit cbcf2f6
Show file tree
Hide file tree
Showing 3 changed files with 215 additions and 13 deletions.
178 changes: 165 additions & 13 deletions ide.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,172 @@
"$schema": "https://laravel-ide.com/schema/laravel-ide-v2.json",
"blade": {
"components": {
"fromConfig": [
{
"configFileName": "wireui",
"componentsKey": "components",
"classFetch": {
"type": "arrayKey",
"key": "class"
},
"aliasKey": "alias"
"list": [
{
"name": "alert",
"className": "WireUi\\Components\\Alert\\Index"
},
{
"name": "avatar",
"className": "WireUi\\Components\\Avatar\\Index"
},
{
"name": "badge",
"className": "WireUi\\Components\\Badge\\Base"
},
{
"name": "mini-badge",
"className": "WireUi\\Components\\Badge\\Mini"
},
{
"name": "button",
"className": "WireUi\\Components\\Button\\Base"
},
{
"name": "mini-button",
"className": "WireUi\\Components\\Button\\Mini"
},
{
"name": "card",
"className": "WireUi\\Components\\Card\\Index"
},
{
"name": "checkbox",
"className": "WireUi\\Components\\Switcher\\Checkbox"
},
{
"name": "color-picker",
"className": "WireUi\\Components\\ColorPicker\\Picker"
},
{
"name": "datetime-picker",
"className": "WireUi\\Components\\DatetimePicker\\Picker"
},
{
"name": "description",
"className": "WireUi\\Components\\Label\\Description"
},
{
"name": "dialog",
"className": "WireUi\\Components\\Dialog\\Index"
},
{
"name": "dropdown",
"className": "WireUi\\Components\\Dropdown\\Base"
},
{
"name": "dropdown.item",
"className": "WireUi\\Components\\Dropdown\\Item"
},
{
"name": "dropdown.header",
"className": "WireUi\\Components\\Dropdown\\Header"
},
{
"name": "error",
"className": "WireUi\\Components\\Errors\\Single"
},
{
"name": "errors",
"className": "WireUi\\Components\\Errors\\Multiple"
},
{
"name": "icon",
"className": "WireUi\\Components\\Icon\\Index"
},
{
"name": "input",
"className": "WireUi\\Components\\TextField\\Input"
},
{
"name": "currency",
"className": "WireUi\\Components\\TextField\\Currency"
},
{
"name": "maskable",
"className": "WireUi\\Components\\TextField\\Maskable"
},
{
"name": "number",
"className": "WireUi\\Components\\TextField\\Number"
},
{
"name": "password",
"className": "WireUi\\Components\\TextField\\Password"
},
{
"name": "phone",
"className": "WireUi\\Components\\TextField\\Phone"
},
{
"name": "label",
"className": "WireUi\\Components\\Label\\Base"
},
{
"name": "link",
"className": "WireUi\\Components\\Link\\Index"
},
{
"name": "modal",
"className": "WireUi\\Components\\Modal\\Index"
},
{
"name": "modal-card",
"className": "WireUi\\Components\\Modal\\Card"
},
{
"name": "native-select",
"className": "WireUi\\Components\\Select\\Native"
},
{
"name": "notifications",
"className": "WireUi\\Components\\Notifications\\Index"
},
{
"name": "radio",
"className": "WireUi\\Components\\Switcher\\Radio"
},
{
"name": "select",
"className": "WireUi\\Components\\Select\\Base"
},
{
"name": "select.option",
"className": "WireUi\\Components\\Select\\Option"
},
{
"name": "select.user-option",
"className": "WireUi\\Components\\Select\\UserOption"
},
{
"name": "textarea",
"className": "WireUi\\Components\\TextField\\Textarea"
},
{
"name": "time-picker",
"className": "WireUi\\Components\\TimePicker\\Picker"
},
{
"name": "time-selector",
"className": "WireUi\\Components\\TimePicker\\Selector"
},
{
"name": "toggle",
"className": "WireUi\\Components\\Switcher\\Toggle"
},
{
"name": "popover",
"className": "WireUi\\Components\\Popover\\Index"
},
{
"name": "switcher",
"className": "WireUi\\Components\\Wrapper\\Switcher"
},
{
"name": "text-field",
"className": "WireUi\\Components\\Wrapper\\TextField"
}
],
"ignoreViewPaths": [
"src/resources/views"
]
}
}
}
}
39 changes: 39 additions & 0 deletions src/Commands/WireUiGenerateIdeHelperCode.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

namespace WireUi\Commands;

use Illuminate\Console\Command;

class WireUiGenerateIdeHelperCode extends Command
{
protected $signature = 'wireui:generate-ide-helper-code';

protected $description = 'Generate Laravel Idea helper code for WireUi components';

public function handle(): void
{
$json = [
'$schema' => 'https://laravel-ide.com/schema/laravel-ide-v2.json',
];

$list = [];

foreach (config('wireui.components') as $component) {
$list[] = [
'name' => $component['alias'],
'className' => $component['class'],
];
}

$json['blade'] = [
'components' => [
'list' => $list,
],
];

file_put_contents(
__DIR__ . '/../../ide.json',
json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES),
);
}
}
11 changes: 11 additions & 0 deletions src/ServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ public function boot(): void
$this->registerTagCompiler();

$this->registerBladeComponents();

if (! $this->app->isProduction()) {
$this->registerDevCommands();
}
}

private function registerTagCompiler(): void
Expand Down Expand Up @@ -108,4 +112,11 @@ private function registerBladeComponents(): void
}
});
}

private function registerDevCommands(): void
{
$this->commands([
Commands\WireUiGenerateIdeHelperCode::class,
]);
}
}

0 comments on commit cbcf2f6

Please sign in to comment.