Compare commits

...

3 Commits

Author SHA1 Message Date
philipp lang 579f35beb9 Fix member deletion button
continuous-integration/drone/push Build is passing Details
2023-07-15 17:37:07 +02:00
philipp lang aa9b782897 Mark joined_at field as required 2023-07-15 17:30:58 +02:00
philipp lang 8ba433c6b8 update page components 2023-07-15 17:28:19 +02:00
14 changed files with 61 additions and 48 deletions

View File

@ -42,6 +42,8 @@ class LoginController extends Controller
public function showLoginForm(): Response
{
session()->put('title', 'Anmelden');
return \Inertia::render('VLogin');
}

View File

@ -12,6 +12,8 @@ class InitializeFormAction
public function asController(): Response
{
session()->put('title', 'Einrichtung');
return Inertia::render('Initialize/VIndex');
}
}

View File

@ -43,6 +43,7 @@ class MemberController extends Controller
'without_education_at' => null,
'without_efz_at' => null,
'more_ps_at' => null,
'joined_at' => now()->format('Y-m-d'),
],
'mode' => 'create',
'meta' => MemberResource::meta(),

3
resources/js/app.js vendored
View File

@ -1,5 +1,5 @@
import {createApp, h, defineAsyncComponent} from 'vue';
import {createInertiaApp, Link as ILink} from '@inertiajs/vue3';
import {Head, createInertiaApp, Link as ILink} from '@inertiajs/vue3';
import axios from 'axios';
import VueAxios from 'vue-axios';
import {Plugin as FloatingVue, options as FloatingVueOptions} from './lib/floatingVue.js';
@ -41,6 +41,7 @@ createInertiaApp({
.use(VueAxios, axios)
.use(PiniaVuePlugin)
.component('ILink', ILink)
.component('Head', Head)
.mixin(hasModule)
.mixin(hasFlash);

View File

@ -0,0 +1,10 @@
<template>
<div class="h-24 p-6 md:px-10 bg-primary-800 flex justify-between items-center w-full">
<span class="text-primary-500 text-xl"><slot></slot></span>
<img src="../../../img/dpsg.gif" class="w-24" />
</div>
</template>
<script>
export default {};
</script>

View File

@ -0,0 +1,19 @@
<template>
<div class="min-w-[16rem] sm:min-w-[18rem] md:min-w-[24rem] bg-gray-800 rounded-xl overflow-hidden shadow-lg" :class="{'p-6 md:p-10': banner === false}">
<slot name="heading"></slot>
<div :class="{'p-6 md:p-10': banner === true}">
<slot></slot>
</div>
</div>
</template>
<script>
export default {
props: {
banner: {
type: Boolean,
default: () => false,
},
},
};
</script>

View File

@ -23,7 +23,6 @@
<script>
import {menuStore} from '../../stores/menuStore.js';
import {Head} from '@inertiajs/vue3';
export default {
inheritAttrs: false,
@ -39,8 +38,5 @@ export default {
menuStore: menuStore(),
};
},
components: {
Head,
},
};
</script>

View File

@ -1,18 +1,17 @@
<template>
<Head :title="$page.props.title"></Head>
<v-notification class="fixed z-40 right-0 bottom-0 mb-3 mr-3"></v-notification>
<div class="flex justify-center items-center grow min-h-full">
<div class="w-64 sm:w-72 md:w-96 bg-gray-800 rounded-xl overflow-hidden shadow-lg">
<slot></slot>
</div>
<div class="flex justify-center items-center grow min-h-full px-6">
<slot></slot>
</div>
</template>
<script>
import VNotification from '../components/VNotification.vue';
import {defineAsyncComponent} from 'vue';
export default {
components: {
VNotification,
VNotification: defineAsyncComponent(() => import('../components/VNotification.vue')),
},
};
</script>

View File

@ -1,18 +0,0 @@
<template>
<div id="app" class="bg-gray-900 font-sans flex flex-col grow items-center justify-center p-6">
<v-notification class="fixed z-40 right-0 bottom-0 mb-3 mr-3"></v-notification>
<div class="bg-gray-800 rounded-xl overflow-hidden shadow-lg p-6">
<slot></slot>
</div>
</div>
</template>
<script>
import {defineAsyncComponent} from 'vue';
export default {
components: {
VNotification: defineAsyncComponent(() => import('../components/VNotification.vue')),
},
};
</script>

View File

@ -1,5 +1,5 @@
<template>
<div>
<page-full-layout>
<div v-if="step === 0">
<page-full-heading>Willkommen im Adrema-Setup.<br /></page-full-heading>
<div class="prose prose-invert">
@ -132,16 +132,16 @@
</div>
<a href="/" class="mt-5 inline-block btn btn-primary">Abschließen</a>
</div>
</div>
</page-full-layout>
</template>
<script>
import InstallLayout from '../../layouts/InstallLayout.vue';
import FullLayout from '../../layouts/FullLayout.vue';
import hasFlash from '../../mixins/hasFlash.js';
import debounce from 'lodash/debounce';
export default {
layout: InstallLayout,
layout: FullLayout,
mixins: [hasFlash],

View File

@ -1,15 +1,16 @@
<template>
<form @submit.prevent="submit">
<div class="h-24 p-6 md:px-10 bg-primary-800 flex justify-between items-center w-full">
<span class="text-primary-500 text-xl">Login</span>
<img src="../../img/dpsg.gif" class="w-24" />
</div>
<div class="p-6 md:p-10 grid gap-5">
<f-text id="email" name="email" label="E-Mail-Adresse" v-model="values.email"></f-text>
<f-text id="password" name="password" type="password" label="Passwort" v-model="values.password"></f-text>
<button type="submit" class="btn btn-primary">Login</button>
</div>
</form>
<page-full-layout banner>
<template #heading>
<page-full-heading-banner>Login</page-full-heading-banner>
</template>
<form @submit.prevent="submit">
<div class="grid gap-5">
<f-text id="email" name="email" label="E-Mail-Adresse" v-model="values.email"></f-text>
<f-text id="password" name="password" type="password" label="Passwort" v-model="values.password"></f-text>
<button type="submit" class="btn btn-primary">Login</button>
</div>
</form>
</page-full-layout>
</template>
<script>

View File

@ -58,7 +58,7 @@
<f-select :options="meta.subscriptions" id="subscription_id" v-model="inner.subscription_id" label="Beitrag" name="subscription_id" size="sm"></f-select>
<f-switch id="has_nami" size="sm" v-model="inner.has_nami" label="In Nami eintragen"></f-switch>
<f-switch id="send_newspaper" v-model="inner.send_newspaper" label="Mittendrin versenden" size="sm"></f-switch>
<f-text class="sm:col-span-2" type="date" id="joined_at" v-model="inner.joined_at" label="Eintrittsdatum" size="sm"></f-text>
<f-text class="sm:col-span-2" type="date" id="joined_at" v-model="inner.joined_at" label="Eintrittsdatum" size="sm" required></f-text>
<f-textarea rows="3" id="comment" class="col-span-2" v-model="inner.comment" label="Kommentar" size="sm"></f-textarea>
<div class="contents" v-if="mode === 'create'">
<f-select

View File

@ -14,8 +14,8 @@
Dieses Mitglied ist in NaMi vorhanden und wird daher in NaMi abgemeldet werden. Sofern "Datenweiterverwendung" eingeschaltet ist, wird das Mitglied auf inaktiv gesetzt.
</ui-note>
<div class="grid grid-cols-2 gap-3 mt-6">
<a href="#" @click.prevent="deleting.resolve()" class="text-center btn btn-danger">Mitglied loschen</a>
<a href="#" @click.prevent="deleting.reject()" class="text-center btn btn-primary">Abbrechen</a>
<a href="#" @click.prevent="deleting.resolve" class="text-center btn btn-danger">Mitglied loschen</a>
<a href="#" @click.prevent="deleting.reject" class="text-center btn btn-primary">Abbrechen</a>
</div>
</div>
</ui-popup>

View File

@ -10,7 +10,7 @@
></a>
<a href="#" v-tooltip="`Mitgliedschaften`" @click.prevent="$emit('sidebar', 'membership.index')" class="inline-flex btn btn-info btn-sm"><ui-sprite src="user"></ui-sprite></a>
<a :href="member.efz_link" v-show="member.efz_link" class="inline-flex btn btn-info btn-sm" v-tooltip="`EFZ Formular`"><ui-sprite src="report"></ui-sprite></a>
<i-link href="#" @click.prevent="$emit('remove')" class="inline-flex btn btn-danger btn-sm" v-tooltip="`Entfernen`"><ui-sprite src="trash"></ui-sprite></i-link>
<a href="#" @click.prevent="$emit('remove')" class="inline-flex btn btn-danger btn-sm" v-tooltip="`Entfernen`"><ui-sprite src="trash"></ui-sprite></a>
</div>
</template>