ESLint: Auto format and fix some warnings / errors.

This commit is contained in:
baldo 2022-08-23 19:08:39 +02:00
parent 90ac67efbe
commit 867be21f68
32 changed files with 737 additions and 489 deletions
frontend/src/components

View file

@ -0,0 +1,136 @@
<script setup lang="ts">
import { computed, defineProps } from "vue";
const props = defineProps({
page: {
type: Number,
required: true,
},
itemsPerPage: {
type: Number,
required: true,
},
totalItems: {
type: Number,
required: true,
},
});
const firstItem = computed(() => {
return Math.min(
props.totalItems,
(props.page - 1) * props.itemsPerPage + 1
);
});
const lastItem = computed(() =>
Math.min(props.totalItems, firstItem.value + props.itemsPerPage - 1)
);
const lastPage = computed(() =>
Math.ceil(props.totalItems / props.itemsPerPage)
);
const pages = computed(() => {
const pages: number[] = [];
if (lastPage.value <= 2) {
return pages;
}
let p1 = props.page - 1;
if (props.page === lastPage.value) {
p1 = props.page - 2;
}
if (p1 <= 1) {
p1 = 2;
}
for (let p = p1; p <= p1 + 2; p += 1) {
if (p < lastPage.value) {
pages.push(p);
}
}
return pages;
});
const showFirstEllipsis = computed(
() => pages.value.length > 0 && pages.value[0] > 2
);
const showLastEllipsis = computed(
() =>
pages.value.length > 0 &&
pages.value[pages.value.length - 1] < lastPage.value - 1
);
const emit = defineEmits<{
(e: "changePage", page: number): void;
}>();
function toPage(page: number): void {
emit("changePage", page);
}
// noinspection JSIncompatibleTypesComparison
const classes = computed(
() => (p: number) => p === props.page ? ["current-page"] : []
);
</script>
<template>
<nav>
<span class="total">
<strong>{{ firstItem }}</strong>
-
<strong>{{ lastItem }}</strong>
von
<strong>{{ totalItems }}</strong>
</span>
<ul>
<li v-if="page > 1" @click="toPage(page - 1)"></li>
<li :class="classes(1)" @click="toPage(1)">1</li>
<li v-if="showFirstEllipsis" class="ellipsis"></li>
<li
v-for="page in pages"
v-bind:key="page"
:class="classes(page)"
@click="toPage(page)"
>
{{ page }}
</li>
<li v-if="showLastEllipsis" class="ellipsis"></li>
<li
v-if="lastPage > 1"
:class="classes(lastPage)"
@click="toPage(lastPage)"
>
{{ lastPage }}
</li>
<li v-if="page < lastPage" @click="toPage(page + 1)"></li>
</ul>
</nav>
</template>
<style lang="scss" scoped>
@import "../scss/variables";
ul {
display: inline-block;
list-style: none;
li {
display: inline-block;
min-width: 2em;
height: 1.5em;
line-height: 1.5em;
text-align: center;
cursor: pointer;
&.current-page {
color: $variant-color-info;
}
&.ellipsis {
cursor: initial;
}
}
}
</style>