#90 - wip
This commit is contained in:
@@ -14,8 +14,14 @@
|
||||
v-else
|
||||
:requests="vacationRequests.data"
|
||||
/>
|
||||
<AbsenceList :absences="absences.data" />
|
||||
<UpcomingHolidays :holidays="holidays.data" />
|
||||
<AbsenceList
|
||||
v-if="years.current.year === years.selected.year"
|
||||
:absences="absences.data"
|
||||
/>
|
||||
<UpcomingHolidays
|
||||
v-if="years.current.year === years.selected.year"
|
||||
:holidays="holidays.data"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -35,5 +41,6 @@ defineProps({
|
||||
holidays: Object,
|
||||
can: Object,
|
||||
stats: Object,
|
||||
years: Object,
|
||||
})
|
||||
</script>
|
||||
|
@@ -49,9 +49,9 @@
|
||||
<tr
|
||||
v-for="holiday in holidays.data"
|
||||
:key="holiday.id"
|
||||
class="hover:bg-blumilk-25"
|
||||
:class="[holiday.isPast ? 'bg-gray-100' : 'hover:bg-blumilk-25']"
|
||||
>
|
||||
<td class="p-4 text-sm font-semibold text-gray-500 capitalize whitespace-nowrap">
|
||||
<td class="p-4 text-sm font-semibold text-gray-700 capitalize whitespace-nowrap">
|
||||
{{ holiday.name }}
|
||||
</td>
|
||||
<td class="p-4 text-sm text-gray-500 whitespace-nowrap">
|
||||
|
@@ -46,6 +46,12 @@
|
||||
>
|
||||
Rola
|
||||
</th>
|
||||
<th
|
||||
scope="col"
|
||||
class="py-3 px-4 text-xs font-semibold tracking-wider text-left text-gray-500 uppercase whitespace-nowrap"
|
||||
>
|
||||
Ostatnia aktywność
|
||||
</th>
|
||||
<th
|
||||
scope="col"
|
||||
class="py-3 px-4 text-xs font-semibold tracking-wider text-left text-gray-500 uppercase whitespace-nowrap"
|
||||
@@ -97,6 +103,9 @@
|
||||
<td class="p-4 text-sm text-gray-500 whitespace-nowrap">
|
||||
{{ user.role }}
|
||||
</td>
|
||||
<td class="p-4 text-sm text-gray-500 whitespace-nowrap">
|
||||
{{ user.lastActiveAt ? DateTime.fromSQL(user.lastActiveAt).toRelative() : '-' }}
|
||||
</td>
|
||||
<td class="p-4 text-sm text-gray-500 whitespace-nowrap">
|
||||
{{ user.position }}
|
||||
</td>
|
||||
@@ -150,7 +159,7 @@
|
||||
:href="`/users/${user.id}`"
|
||||
:class="[active ? 'bg-gray-100 text-gray-900' : 'text-gray-700', 'block w-full text-left font-medium px-4 py-2 text-sm']"
|
||||
>
|
||||
<TrashIcon class="mr-2 w-5 h-5 text-red-500" /> Usuń
|
||||
<BanIcon class="mr-2 w-5 h-5 text-red-500" /> Zablokuj
|
||||
</InertiaLink>
|
||||
</MenuItem>
|
||||
</div>
|
||||
@@ -201,8 +210,9 @@ import { ref, watch } from 'vue'
|
||||
import { Inertia } from '@inertiajs/inertia'
|
||||
import { debounce } from 'lodash'
|
||||
import { SearchIcon } from '@heroicons/vue/outline'
|
||||
import { DotsVerticalIcon, PencilIcon, TrashIcon, RefreshIcon } from '@heroicons/vue/solid'
|
||||
import { DotsVerticalIcon, PencilIcon, BanIcon, RefreshIcon } from '@heroicons/vue/solid'
|
||||
import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/vue'
|
||||
import { DateTime } from 'luxon'
|
||||
import Pagination from '@/Shared/Pagination'
|
||||
|
||||
const props = defineProps({
|
||||
|
@@ -3,6 +3,7 @@
|
||||
<MainMenu
|
||||
:auth="auth"
|
||||
:years="years"
|
||||
:vacation-requests-count="vacationRequestsCount"
|
||||
/>
|
||||
<main class="flex flex-col flex-1 py-8 lg:ml-64">
|
||||
<div class="lg:px-4">
|
||||
@@ -21,6 +22,7 @@ const props = defineProps({
|
||||
flash: Object,
|
||||
auth: Object,
|
||||
years: Object,
|
||||
vacationRequestsCount: Number,
|
||||
})
|
||||
|
||||
const toast = useToast()
|
||||
|
@@ -76,7 +76,7 @@
|
||||
v-for="item in navigation"
|
||||
:key="item.name"
|
||||
:href="item.href"
|
||||
:class="[$page.component === item.component ? 'bg-blumilk-800 text-white' : 'text-blumilk-100 hover:text-white hover:bg-blumilk-600', 'group flex items-center px-2 py-2 text-base font-medium rounded-md']"
|
||||
:class="[$page.component.startsWith(item.section) ? 'bg-blumilk-800 text-white' : 'text-blumilk-100 hover:text-white hover:bg-blumilk-600', 'group flex items-center px-2 py-2 text-base font-medium rounded-md']"
|
||||
@click="sidebarOpen = false;"
|
||||
>
|
||||
<component
|
||||
@@ -84,6 +84,12 @@
|
||||
class="shrink-0 mr-4 w-6 h-6 text-blumilk-200"
|
||||
/>
|
||||
{{ item.name }}
|
||||
<span
|
||||
v-if="item.badge"
|
||||
class="py-0.5 px-2.5 ml-3 text-xs font-semibold text-gray-600 bg-gray-100 rounded-full 2xl:inline-block"
|
||||
>
|
||||
{{ item.badge }}
|
||||
</span>
|
||||
</InertiaLink>
|
||||
</div>
|
||||
</div>
|
||||
@@ -117,13 +123,19 @@
|
||||
v-for="item in navigation"
|
||||
:key="item.name"
|
||||
:href="item.href"
|
||||
:class="[$page.component === item.component ? 'bg-blumilk-800 text-white' : 'text-blumilk-100 hover:text-white hover:bg-blumilk-600', 'group flex items-center px-2 py-2 text-sm leading-6 font-medium rounded-md']"
|
||||
:class="[$page.component.startsWith(item.section) ? 'bg-blumilk-800 text-white' : 'text-blumilk-100 hover:text-white hover:bg-blumilk-600', 'group flex items-center px-2 py-2 text-sm leading-6 font-medium rounded-md']"
|
||||
>
|
||||
<component
|
||||
:is="item.icon"
|
||||
class="shrink-0 mr-4 w-6 h-6 text-blumilk-200"
|
||||
/>
|
||||
{{ item.name }}
|
||||
<span
|
||||
v-if="item.badge"
|
||||
class="py-0.5 px-2.5 ml-3 text-xs font-semibold text-gray-600 bg-gray-100 rounded-full 2xl:inline-block"
|
||||
>
|
||||
{{ item.badge }}
|
||||
</span>
|
||||
</InertiaLink>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -288,6 +300,7 @@ import { CheckIcon, ChevronDownIcon } from '@heroicons/vue/solid'
|
||||
const props = defineProps({
|
||||
auth: Object,
|
||||
years: Object,
|
||||
vacationRequestsCount: Number,
|
||||
})
|
||||
|
||||
const sidebarOpen = ref(false)
|
||||
@@ -297,42 +310,43 @@ const navigation = computed(() =>
|
||||
{
|
||||
name: 'Moje wnioski',
|
||||
href: '/vacation/requests/me',
|
||||
component: 'VacationRequest/Index',
|
||||
section: 'VacationRequest',
|
||||
icon: DocumentTextIcon,
|
||||
can: true,
|
||||
can: !props.auth.can.listAllVacationRequests,
|
||||
},
|
||||
{
|
||||
name: 'Lista wniosków',
|
||||
href: '/vacation/requests',
|
||||
component: 'VacationRequest/IndexForApprovers',
|
||||
section: 'VacationRequest',
|
||||
icon: CollectionIcon,
|
||||
can: props.auth.can.listAllVacationRequests,
|
||||
badge: props.vacationRequestsCount,
|
||||
},
|
||||
{
|
||||
name: 'Kalendarz urlopów',
|
||||
href: '/vacation/calendar',
|
||||
component: 'Calendar',
|
||||
section: 'Calendar',
|
||||
icon: CalendarIcon,
|
||||
can: true,
|
||||
},
|
||||
{
|
||||
name: 'Wykorzystanie urlopu',
|
||||
href: '/vacation/monthly-usage',
|
||||
component: 'MonthlyUsage',
|
||||
section: 'MonthlyUsage',
|
||||
icon: AdjustmentsIcon,
|
||||
can: props.auth.can.listMonthlyUsage,
|
||||
},
|
||||
{
|
||||
name: 'Dni wolne',
|
||||
href: '/holidays',
|
||||
component: 'Holidays/Index',
|
||||
section: 'Holidays/',
|
||||
icon: StarIcon,
|
||||
can: true,
|
||||
},
|
||||
{
|
||||
name: 'Limity urlopów',
|
||||
href: '/vacation/limits',
|
||||
component: 'VacationLimits',
|
||||
section: 'VacationLimits',
|
||||
icon: SunIcon,
|
||||
can: props.auth.can.manageVacationLimits,
|
||||
},
|
||||
@@ -340,14 +354,14 @@ const navigation = computed(() =>
|
||||
|
||||
name: 'Podsumowanie roczne',
|
||||
href: '/vacation/annual-summary',
|
||||
component: 'AnnualSummary',
|
||||
section: 'AnnualSummary',
|
||||
icon: ClipboardListIcon,
|
||||
can: true,
|
||||
},
|
||||
{
|
||||
name: 'Użytkownicy',
|
||||
href: '/users',
|
||||
component: 'Users/Index',
|
||||
section: 'Users/',
|
||||
icon: UserGroupIcon,
|
||||
can: props.auth.can.manageUsers,
|
||||
},
|
||||
|
@@ -53,6 +53,7 @@
|
||||
|
||||
<script setup>
|
||||
import useVacationTypeInfo from '@/Composables/vacationTypeInfo'
|
||||
import Status from '@/Shared/Status'
|
||||
|
||||
defineProps({
|
||||
requests: Object,
|
||||
|
@@ -3,6 +3,7 @@ import { createInertiaApp, Head, Link } from '@inertiajs/inertia-vue3'
|
||||
import { InertiaProgress } from '@inertiajs/progress'
|
||||
import AppLayout from '@/Shared/Layout/AppLayout'
|
||||
import Flatpickr from 'flatpickr'
|
||||
import { Settings } from 'luxon'
|
||||
import { Polish } from 'flatpickr/dist/l10n/pl.js'
|
||||
import Toast from 'vue-toastification'
|
||||
|
||||
@@ -44,3 +45,4 @@ Flatpickr.setDefaults({
|
||||
disableMobile: true,
|
||||
})
|
||||
|
||||
Settings.defaultLocale = 'pl'
|
Reference in New Issue
Block a user