Skip to content

Commit fbf6528

Browse files
authored
Fix Component Order on Dashboard (#110)
1 parent 1865d58 commit fbf6528

File tree

2 files changed

+60
-3
lines changed

2 files changed

+60
-3
lines changed

src/Filament/Widgets/Components.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public function mount(): void
3232
$this->components = $components = Component::query()
3333
->select(['id', 'component_group_id', 'name', 'status', 'enabled'])
3434
->enabled()
35+
->orderBy('order')
3536
->get();
3637

3738
$this->formData = $components->mapWithKeys(function (Component $component) {
@@ -77,16 +78,15 @@ protected function buildToggleButton(Component $component): ToggleButtons
7778
->inline()
7879
->live()
7980
->options(ComponentStatusEnum::class)
80-
->afterStateUpdated(function (ComponentStatusEnum $state) use ($component) {
81-
return $component->update(['status' => $state]);
82-
});
81+
->afterStateUpdated(fn (ComponentStatusEnum $state) => $component->update(['status' => $state]));
8382
}
8483

8584
protected function loadVisibleComponentGroups(): Collection
8685
{
8786
return ComponentGroup::query()
8887
->select(['id', 'name', 'collapsed', 'visible'])
8988
->where('visible', '=', true)
89+
->orderBy('order')
9090
->get();
9191
}
9292
}

tests/Feature/Filament/Widgets/ComponentsTest.php

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,63 @@
7070
$component->assertDontSee('Cloud');
7171
});
7272

73+
it('will show component groups in the correct order', function () {
74+
$componentGroup1 = ComponentGroup::factory()->create([
75+
'name' => 'Test Component Group 1',
76+
'visible' => true,
77+
'order' => 2,
78+
]);
79+
80+
Component::factory()->create([
81+
'component_group_id' => $componentGroup1->id,
82+
]);
83+
84+
$componentGroup2 = ComponentGroup::factory()->create([
85+
'name' => 'Test Component Group 2',
86+
'visible' => true,
87+
'order' => 1,
88+
]);
89+
90+
Component::factory()->create([
91+
'component_group_id' => $componentGroup2->id,
92+
]);
93+
94+
$component = livewire(Components::class);
95+
96+
$component->assertSuccessful();
97+
98+
assertCount(2, $component->components);
99+
100+
$component->assertSeeInOrder(['Test Component Group 2', 'Test Component Group 1']);
101+
});
102+
103+
it('will show grouped components in the correct order', function () {
104+
$componentGroup = ComponentGroup::factory()->create([
105+
'name' => 'Laravel',
106+
'visible' => true,
107+
]);
108+
109+
Component::factory()->create([
110+
'name' => 'Forge',
111+
'component_group_id' => $componentGroup->id,
112+
'order' => 2
113+
]);
114+
115+
Component::factory()->create([
116+
'name' => 'Cloud',
117+
'component_group_id' => $componentGroup->id,
118+
'order' => 1
119+
]);
120+
121+
$component = livewire(Components::class);
122+
123+
$component->assertSuccessful();
124+
125+
assertCount(2, $component->components);
126+
127+
$component->assertSeeInOrder(['Cloud', 'Forge']);
128+
});
129+
73130
it('will not show component groups without components', function () {
74131
ComponentGroup::factory()->create([
75132
'name' => 'Laravel',

0 commit comments

Comments
 (0)