coolify/resources/views/livewire/project/index.blade.php

60 lines
2.4 KiB
PHP
Raw Normal View History

2024-01-07 15:23:41 +00:00
<div>
2024-06-07 09:01:10 +00:00
<x-slot:title>
Projects | Coolify
</x-slot>
<div class="flex gap-2">
2024-03-19 14:37:16 +00:00
<h1>Projects</h1>
@can('createAnyResource')
<x-modal-input buttonTitle="+ Add" title="New Project">
<livewire:project.add-empty />
</x-modal-input>
@endcan
</div>
2024-03-20 14:46:59 +00:00
<div class="subtitle">All your projects are here.</div>
<div x-data="searchComponent()" class="-mt-1">
2024-10-05 13:03:40 +00:00
<x-forms.input placeholder="Search for name, description..." x-model="search" id="null" />
<div class="grid grid-cols-2 gap-4 pt-4">
2024-11-22 14:28:06 +00:00
<template x-if="filteredProjects.length === 0">
2024-10-05 13:03:40 +00:00
<div>No project found with the search term "<span x-text="search"></span>".</div>
</template>
2024-11-22 14:28:06 +00:00
<template x-for="project in filteredProjects" :key="project.uuid">
<div class="box group cursor-pointer" @click="$wire.navigateToProject(project.uuid)">
2024-10-05 13:03:40 +00:00
<div class="flex flex-col justify-center flex-1 mx-6">
2024-11-22 14:28:06 +00:00
<div class="box-title" x-text="project.name"></div>
<div class="box-description">
<div x-text="project.description"></div>
2024-10-05 13:03:40 +00:00
</div>
</div>
<div class="flex items-center justify-center gap-2 pt-4 pb-2 mr-4 text-xs lg:py-0 lg:justify-normal"
x-show="project.canUpdate">
<a class="mx-4 font-bold hover:underline" wire:click.stop
:href="`/project/${project.uuid}/edit`">
2024-10-09 21:45:57 +00:00
Settings
</a>
</div>
</div>
2024-10-05 13:03:40 +00:00
</template>
</div>
2023-05-24 13:47:04 +00:00
</div>
2024-03-22 10:34:15 +00:00
<script>
2024-10-05 13:03:40 +00:00
function searchComponent() {
return {
search: '',
2024-11-22 14:28:06 +00:00
get filteredProjects() {
const projects = @js($projects);
2024-10-05 13:03:40 +00:00
if (this.search === '') {
2024-11-22 14:28:06 +00:00
return projects;
2024-10-05 13:03:40 +00:00
}
const searchLower = this.search.toLowerCase();
2024-11-22 14:28:06 +00:00
return projects.filter(project => {
return (project.name?.toLowerCase().includes(searchLower) ||
project.description?.toLowerCase().includes(searchLower))
});
2024-10-05 13:03:40 +00:00
}
}
}
</script>
2024-01-07 15:23:41 +00:00
</div>