docker build test
This commit is contained in:
parent
075c598a86
commit
5bb107e53a
39 changed files with 117 additions and 75 deletions
|
@ -1,22 +1,23 @@
|
|||
<template>
|
||||
<footer
|
||||
v-if="authCheck && (routeName.includes('admin') || routeName.includes('account'))"
|
||||
v-if="authCheck && (routeName.includes('admin-') || routeName.includes('account-'))"
|
||||
class="md:hidden flex flex-row h-16 min-h-16 justify-center md:justify-normal p-1 bg-white"
|
||||
>
|
||||
<div class="w-full flex flex-row gap-2 h-full align-middle">
|
||||
<TopLevelLink
|
||||
v-if="routeName.includes('admin')"
|
||||
v-if="routeName.includes('admin-')"
|
||||
v-for="item in topLevel"
|
||||
:key="item.key"
|
||||
:link="item"
|
||||
:disableSubLink="true"
|
||||
/>
|
||||
<TopLevelLink v-else :link="{ key: 'club', title: 'Zur Verwaltung' }" :disableSubLink="true" />
|
||||
<TopLevelLink v-else :link="{ key: 'club', title: 'Zur Verwaltung', levelDefault: '' }" :disableSubLink="true" />
|
||||
</div>
|
||||
</footer>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { defineComponent } from "vue";
|
||||
import { mapState } from "pinia";
|
||||
import { useAuthStore } from "@/stores/auth";
|
||||
import { useNavigationStore } from "@/stores/admin/navigation";
|
||||
|
@ -24,7 +25,6 @@ import TopLevelLink from "./admin/TopLevelLink.vue";
|
|||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent } from "vue";
|
||||
export default defineComponent({
|
||||
computed: {
|
||||
...mapState(useAuthStore, ["authCheck"]),
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
</RouterLink>
|
||||
<div class="flex flex-row gap-2 items-center">
|
||||
<div v-if="authCheck" class="hidden md:flex flex-row gap-2 h-full align-middle">
|
||||
<TopLevelLink v-if="routeName.includes('admin')" v-for="item in topLevel" :key="item.key" :link="item" />
|
||||
<TopLevelLink v-if="routeName.includes('admin-')" v-for="item in topLevel" :key="item.key" :link="item" />
|
||||
<TopLevelLink
|
||||
v-else-if="routeName.includes('account')"
|
||||
:link="{ key: 'club', title: 'Zur Verwaltung' }"
|
||||
v-else-if="routeName.includes('account-')"
|
||||
:link="{ key: 'club', title: 'Zur Verwaltung', levelDefault: '' }"
|
||||
:disable-sub-link="true"
|
||||
/>
|
||||
</div>
|
||||
|
|
|
@ -33,9 +33,9 @@ export default defineComponent({
|
|||
},
|
||||
methods: {
|
||||
copyToClipboard() {
|
||||
navigator.clipboard.writeText(this.otp ?? "");
|
||||
navigator.clipboard.writeText(this.copyText ?? "");
|
||||
this.copySuccess = true;
|
||||
this.timputCopy = setTimeout(() => {
|
||||
this.timeoutCopy = setTimeout(() => {
|
||||
this.copySuccess = false;
|
||||
}, 2000);
|
||||
},
|
||||
|
|
|
@ -95,7 +95,7 @@ import { mapState, mapActions } from "pinia";
|
|||
import { EyeIcon, PencilIcon, PlusIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
||||
import { useAbilityStore } from "@/stores/ability";
|
||||
import cloneDeep from "lodash.clonedeep";
|
||||
import isEqual from "lodash.isEqual";
|
||||
import isEqual from "lodash.isequal";
|
||||
import Spinner from "@/components/Spinner.vue";
|
||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||
import FailureXMark from "@/components/FailureXMark.vue";
|
||||
|
|
|
@ -24,7 +24,7 @@ export default defineComponent({
|
|||
default: "LINK",
|
||||
},
|
||||
link: {
|
||||
type: [String, Object as PropType<{ name: string }>],
|
||||
type: Object as PropType<string | { name: string }>,
|
||||
default: "/",
|
||||
},
|
||||
active: {
|
||||
|
|
|
@ -18,13 +18,13 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { defineComponent, type PropType } from "vue";
|
||||
import { RouterLink } from "vue-router";
|
||||
import { useNavigationStore, type topLevelNavigationModel } from "@/stores/admin/navigation";
|
||||
import { mapState } from "pinia";
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, type PropType } from "vue";
|
||||
import { RouterLink } from "vue-router";
|
||||
export default defineComponent({
|
||||
props: {
|
||||
link: {
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
id="startdate"
|
||||
required
|
||||
:value="data.start"
|
||||
@change="($event) => ($refs.enddate.max = ($event.target as HTMLInputElement).value)"
|
||||
@change="($event) => (($refs.enddate as HTMLInputElement).max = ($event.target as HTMLInputElement).value)"
|
||||
/>
|
||||
</div>
|
||||
<div class="w-full">
|
||||
|
|
|
@ -89,7 +89,9 @@
|
|||
@change="
|
||||
($event) => {
|
||||
calendar!.starttime = new Date(($event.target as HTMLInputElement).value).toISOString();
|
||||
$refs.endtime.min = formatForDateTimeLocalInput(($event.target as HTMLInputElement).value);
|
||||
($refs.endtime as HTMLInputElement).min = formatForDateTimeLocalInput(
|
||||
($event.target as HTMLInputElement).value
|
||||
);
|
||||
}
|
||||
"
|
||||
/>
|
||||
|
@ -122,7 +124,7 @@
|
|||
@change="
|
||||
($event) => {
|
||||
calendar!.starttime = new Date(($event.target as HTMLInputElement).value).toISOString();
|
||||
$refs.enddate.min = formatForDateInput(($event.target as HTMLInputElement).value);
|
||||
($refs.enddate as HTMLInputElement).min = formatForDateInput(($event.target as HTMLInputElement).value);
|
||||
}
|
||||
"
|
||||
/>
|
||||
|
@ -194,7 +196,7 @@ import { CheckIcon, ChevronUpDownIcon, TrashIcon } from "@heroicons/vue/20/solid
|
|||
import { useCalendarTypeStore } from "@/stores/admin/calendarType";
|
||||
import type { CalendarTypeViewModel } from "@/viewmodels/admin/calendarType.models";
|
||||
import cloneDeep from "lodash.clonedeep";
|
||||
import isEqual from "lodash.isEqual";
|
||||
import isEqual from "lodash.isequal";
|
||||
import { useAbilityStore } from "@/stores/ability";
|
||||
</script>
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ import type {
|
|||
UpdateMemberAwardViewModel,
|
||||
} from "@/viewmodels/admin/memberAward.models";
|
||||
import { useMemberAwardStore } from "@/stores/admin/memberAward";
|
||||
import isEqual from "lodash.isEqual";
|
||||
import isEqual from "lodash.isequal";
|
||||
import cloneDeep from "lodash.clonedeep";
|
||||
</script>
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ import type {
|
|||
CommunicationViewModel,
|
||||
UpdateCommunicationViewModel,
|
||||
} from "@/viewmodels/admin/communication.models";
|
||||
import isEqual from "lodash.isEqual";
|
||||
import isEqual from "lodash.isequal";
|
||||
import cloneDeep from "lodash.clonedeep";
|
||||
</script>
|
||||
|
||||
|
|
|
@ -111,7 +111,7 @@ import type {
|
|||
UpdateMemberExecutivePositionViewModel,
|
||||
} from "@/viewmodels/admin/memberExecutivePosition.models";
|
||||
import { useMemberExecutivePositionStore } from "@/stores/admin/memberExecutivePosition";
|
||||
import isEqual from "lodash.isEqual";
|
||||
import isEqual from "lodash.isequal";
|
||||
import cloneDeep from "lodash.clonedeep";
|
||||
</script>
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ import type {
|
|||
UpdateMemberQualificationViewModel,
|
||||
} from "@/viewmodels/admin/memberQualification.models";
|
||||
import { useMemberQualificationStore } from "@/stores/admin/memberQualification";
|
||||
import isEqual from "lodash.isEqual";
|
||||
import isEqual from "lodash.isequal";
|
||||
import cloneDeep from "lodash.clonedeep";
|
||||
</script>
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ import type {
|
|||
UpdateMembershipViewModel,
|
||||
} from "@/viewmodels/admin/membership.models";
|
||||
import { useMembershipStore } from "@/stores/admin/membership";
|
||||
import isEqual from "lodash.isEqual";
|
||||
import isEqual from "lodash.isequal";
|
||||
import cloneDeep from "lodash.clonedeep";
|
||||
</script>
|
||||
|
||||
|
|
|
@ -28,7 +28,11 @@
|
|||
|
||||
<div class="flex flex-row justify-end">
|
||||
<div class="flex flex-row gap-4 py-2">
|
||||
<button primary-outline @click="closeModal" :disabled="status != null && status?.status != 'failed'">
|
||||
<button
|
||||
primary-outline
|
||||
@click="closeModal"
|
||||
:disabled="status != null && status != 'loading' && status?.status != 'failed'"
|
||||
>
|
||||
abbrechen
|
||||
</button>
|
||||
</div>
|
||||
|
@ -47,7 +51,6 @@ import { useCalendarTypeStore } from "@/stores/admin/calendarType";
|
|||
import type { CreateCalendarTypeViewModel } from "@/viewmodels/admin/calendarType.models";
|
||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||
import type { CalendarFieldType } from "@/types/fieldTypes";
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
|
@ -56,7 +59,6 @@ export default defineComponent({
|
|||
return {
|
||||
status: null as null | "loading" | { status: "success" | "failed"; reason?: string },
|
||||
timeout: undefined as any,
|
||||
selectedFields: [] as Array<CalendarFieldType>,
|
||||
};
|
||||
},
|
||||
beforeUnmount() {
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<script setup lang="ts">
|
||||
import { defineComponent, type PropType } from "vue";
|
||||
import { mapState, mapActions } from "pinia";
|
||||
import type { InviteUserModal } from "@/viewmodels/admin/invite.models";
|
||||
import type { InviteViewModel } from "@/viewmodels/admin/invite.models";
|
||||
import { PencilIcon, UserGroupIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
||||
import { useAbilityStore } from "@/stores/ability";
|
||||
import { useInviteStore } from "@/stores/admin/invite";
|
||||
|
@ -33,7 +33,7 @@ import { useInviteStore } from "@/stores/admin/invite";
|
|||
<script lang="ts">
|
||||
export default defineComponent({
|
||||
props: {
|
||||
invite: { type: Object as PropType<InviteUserModal>, default: {} },
|
||||
invite: { type: Object as PropType<InviteViewModel>, default: {} },
|
||||
},
|
||||
computed: {
|
||||
...mapState(useAbilityStore, ["can"]),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue