Skip to content

Commit 3eeaf8a

Browse files
committed
wip
1 parent 07d4b9b commit 3eeaf8a

11 files changed

+125
-56
lines changed

app/Providers/Filament/AdminPanelProvider.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,9 @@ public function panel(Panel $panel): Panel
275275
'panels::footer',
276276
fn (): View => view('filament.hooks.footer'),
277277
)
278-
//
278+
// sidebar search
279+
->renderHook(PanelsRenderHook::SIDEBAR_NAV_START, fn () => view('filament.hooks.sidebar-searcher'))
280+
279281
->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources')
280282
->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages')
281283
->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets')

composer.lock

+28-28
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/assets/another-portfolio-CHdWV6HX.css renamed to public/build/assets/another-portfolio-_4Yadymj.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/assets/app-CdfNiqFV.css renamed to public/build/assets/app-iSOyfotK.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/assets/daisy-Dq9VJebj.css

+10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/assets/daisy-MRkhPJDc.css

-10
This file was deleted.

public/build/assets/theme-BlY1apZL.css

-9
This file was deleted.

public/build/assets/theme-CMzhfayf.css

+9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/assets/theme-BUBSxva8.css renamed to public/build/assets/theme-kgk9yJGs.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/manifest.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,27 @@
66
"isDynamicEntry": true
77
},
88
"resources/css/another-portfolio.css": {
9-
"file": "assets/another-portfolio-CHdWV6HX.css",
9+
"file": "assets/another-portfolio-_4Yadymj.css",
1010
"src": "resources/css/another-portfolio.css",
1111
"isEntry": true
1212
},
1313
"resources/css/app.css": {
14-
"file": "assets/app-CdfNiqFV.css",
14+
"file": "assets/app-iSOyfotK.css",
1515
"src": "resources/css/app.css",
1616
"isEntry": true
1717
},
1818
"resources/css/daisy.css": {
19-
"file": "assets/daisy-MRkhPJDc.css",
19+
"file": "assets/daisy-Dq9VJebj.css",
2020
"src": "resources/css/daisy.css",
2121
"isEntry": true
2222
},
2323
"resources/css/filament/admin/theme.css": {
24-
"file": "assets/theme-BUBSxva8.css",
24+
"file": "assets/theme-kgk9yJGs.css",
2525
"src": "resources/css/filament/admin/theme.css",
2626
"isEntry": true
2727
},
2828
"resources/css/filament/guests/theme.css": {
29-
"file": "assets/theme-BlY1apZL.css",
29+
"file": "assets/theme-CMzhfayf.css",
3030
"src": "resources/css/filament/guests/theme.css",
3131
"isEntry": true
3232
},
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<div
2+
@if (filament()->isSidebarCollapsibleOnDesktop())
3+
x-bind:class="$store.sidebar.isOpen ? 'block' : 'hidden'"
4+
@endif
5+
>
6+
{{--thanks to Azad Furkan ŞAKAR for this idea--}}
7+
{{--Source: https://discord.com/channels/883083792112300104/883084832387760148/1354173226896588911--}}
8+
<x-filament::input.wrapper
9+
class="relative"
10+
:inline-prefix="true"
11+
prefix-icon="tabler-brand-finder"
12+
>
13+
<x-filament::input
14+
type="text"
15+
placeholder="search ..."
16+
x-data="sidebarSearch()"
17+
x-ref="search"
18+
x-on:input.debounce.300ms="filterItems($event.target.value)"
19+
x-on:keydown.escape="clearSearch"
20+
x-on:keydown.meta.j.prevent.document="$refs.search.focus()"
21+
/>
22+
23+
<kbd class="absolute right-2 top-1/2 transform -translate-y-1/2 bg-gray-100 border border-gray-300 text-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-50 text-xs px-1.5 flex items-center justify-center gap-1 py-1 rounded-md">
24+
@svg('tabler-command', 'h-4 w-4 text-gray-400')
25+
<kd>J</kd>
26+
</kbd>
27+
</x-filament::input.wrapper>
28+
29+
<script>
30+
document.addEventListener('alpine:init', () => {
31+
Alpine.data('sidebarSearch', () => ({
32+
init() {
33+
this.$refs.search.value = ''
34+
},
35+
36+
filterItems(searchTerm) {
37+
const groups = document.querySelectorAll('.fi-sidebar-nav-groups .fi-sidebar-group')
38+
searchTerm = searchTerm.toLowerCase()
39+
40+
groups.forEach(group => {
41+
const groupButton = group.querySelector('.fi-sidebar-group-button')
42+
const groupText = groupButton?.textContent.toLowerCase() || ''
43+
const items = group.querySelectorAll('.fi-sidebar-item')
44+
let hasVisibleItems = false
45+
46+
const groupMatches = groupText.includes(searchTerm)
47+
48+
items.forEach(item => {
49+
const itemText = item.textContent.toLowerCase()
50+
const isVisible = itemText.includes(searchTerm) || groupMatches
51+
52+
item.style.display = isVisible ? '' : 'none'
53+
if (isVisible) hasVisibleItems = true
54+
})
55+
56+
group.style.display = (hasVisibleItems || groupMatches) ? '' : 'none'
57+
})
58+
},
59+
60+
clearSearch() {
61+
this.$refs.search.value = ''
62+
this.filterItems('')
63+
}
64+
}))
65+
})
66+
</script>
67+
</div>

0 commit comments

Comments
 (0)