decisions

This commit is contained in:
Julian Krauser 2024-10-08 10:43:16 +02:00
parent 562f6ab1f2
commit 0d559c9365
13 changed files with 78 additions and 11 deletions

7
package-lock.json generated
View file

@ -15,6 +15,7 @@
"axios": "^0.26.1",
"jwt-decode": "^4.0.0",
"lodash.clonedeep": "^4.5.0",
"lodash.difference": "^4.5.0",
"lodash.isequal": "^4.5.0",
"nprogress": "^0.2.0",
"pdf-dist": "^1.0.0",
@ -6702,6 +6703,12 @@
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
"dev": true
},
"node_modules/lodash.difference": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
"integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==",
"license": "MIT"
},
"node_modules/lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",

View file

@ -30,6 +30,7 @@
"axios": "^0.26.1",
"jwt-decode": "^4.0.0",
"lodash.clonedeep": "^4.5.0",
"lodash.difference": "^4.5.0",
"lodash.isequal": "^4.5.0",
"nprogress": "^0.2.0",
"pdf-dist": "^1.0.0",

View file

@ -1,8 +1,10 @@
import type { AxiosInstance } from "axios";
import type { RouteLocationNormalizedLoaded, Router } from "vue-router";
declare module "@vue/runtime-core" {
interface ComponentCustomProperties {
$dev: boolean;
$http: AxiosInstance;
$router: Router;
$route: RouteLocationNormalizedLoaded;
}

View file

@ -56,8 +56,8 @@ body {
@apply w-full h-full overflow-hidden flex flex-col;
}
button:not([headlessui]):not([id*="headlessui"]):not([class*="headlessui"]),
a[button]:not([headlessui]):not([id*="headlessui"]):not([class*="headlessui"]) {
button:not([headlessui]):not([id*="headlessui"]):not([class*="headlessui"]):not([class*="ql"] *),
a[button] {
@apply relative box-border h-10 w-full flex justify-center py-2 px-4 text-sm font-medium rounded-md focus:outline-none focus:ring-0;
}
@ -91,3 +91,30 @@ input[disabled],
textarea[disabled] {
@apply opacity-75 pointer-events-none;
}
details {
user-select: none;
& summary svg {
transform: rotate(90deg);
}
}
details[open] {
& summary svg {
transform: rotate(-90deg);
}
}
details[open] summary ~ * {
animation: ease-opacity-t-b 0.5s ease;
}
summary {
cursor: pointer;
}
summary > svg {
transition: all 0.3s;
}
summary::-webkit-details-marker {
display: none;
}

View file

@ -157,44 +157,44 @@ const router = createRouter({
{
path: "",
name: "admin-club-protocol",
component: () => import("@/views/admin/protocol/Protocol.vue"),
component: () => import("@/views/admin/club/protocol/Protocol.vue"),
beforeEnter: [resetProtocolStores],
},
{
path: ":protocolId",
name: "admin-club-protocol-routing",
component: () => import("@/views/admin/protocol/ProtocolRouting.vue"),
component: () => import("@/views/admin/club/protocol/ProtocolRouting.vue"),
beforeEnter: [setProtocolId],
props: true,
children: [
{
path: "overview",
name: "admin-club-protocol-overview",
component: () => import("@/views/admin/protocol/ProtocolOverview.vue"),
component: () => import("@/views/admin/club/protocol/ProtocolOverview.vue"),
props: true,
},
{
path: "precense",
name: "admin-club-protocol-precense",
component: () => import("@/views/admin/protocol/ProtocolPrecense.vue"),
component: () => import("@/views/admin/club/protocol/ProtocolPrecense.vue"),
props: true,
},
{
path: "voting",
name: "admin-club-protocol-voting",
component: () => import("@/views/admin/protocol/ProtocolVoting.vue"),
component: () => import("@/views/admin/club/protocol/ProtocolVoting.vue"),
props: true,
},
{
path: "decisions",
name: "admin-club-protocol-decisions",
component: () => import("@/views/admin/protocol/ProtocolDecisions.vue"),
component: () => import("@/views/admin/club/protocol/ProtocolDecisions.vue"),
props: true,
},
{
path: "protocol",
name: "admin-club-protocol-protocol",
component: () => import("@/views/admin/protocol/ProtocolProtocol.vue"),
component: () => import("@/views/admin/club/protocol/ProtocolProtocol.vue"),
props: true,
},
],

View file

@ -12,7 +12,15 @@
<input id="username" name="username" type="text" required placeholder="Benutzer" class="!rounded-b-none" />
</div>
<div>
<input id="totp" name="totp" type="text" required placeholder="TOTP" class="!rounded-t-none" />
<input
id="totp"
name="totp"
type="text"
required
placeholder="TOTP"
class="!rounded-t-none"
autocomplete="off"
/>
</div>
</div>

View file

@ -2,6 +2,28 @@
<div class="flex flex-col gap-2 h-full w-full overflow-y-auto">
<Spinner v-if="loadingActive == 'loading'" class="mx-auto" />
<p v-else-if="loadingActive == 'failed'" @click="" class="cursor-pointer">&#8634; laden fehlgeschlagen</p>
<details class="flex flex-col gap-2 rounded-lg w-full justify-between border border-primary overflow-hidden">
<summary class="flex flex-row gap-2 bg-primary p-2 w-full justify-between items-center cursor-pointer">
<input type="text" name="title" id="title" placeholder="TOP" autocomplete="off" />
<svg
class="fill-white stroke-white opacity-75 w-4 h-4 -mr-1"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
>
<path d="M12.95 10.707l.707-.707L8 4.343 6.586 5.757 10.828 10l-4.242 4.243L8 15.657l4.95-4.95z" />
</svg>
</summary>
<QuillEditor
id="top"
theme="snow"
placeholder="TOP Inhalt..."
style="height: 250px; max-height: 250px; min-height: 250px"
contentType="html"
:toolbar="toolbarOptions"
/>
</details>
</div>
</template>

View file

@ -70,7 +70,7 @@ export default defineComponent({
{ route: "admin-club-protocol-overview", title: "Übersicht" },
{ route: "admin-club-protocol-precense", title: "Anwesenheit" },
{ route: "admin-club-protocol-voting", title: "Abstimmungen" },
{ route: "admin-club-protocol-decisions", title: "Entscheidungen" },
{ route: "admin-club-protocol-decisions", title: "Beschlüsse" },
{ route: "admin-club-protocol-protocol", title: "Protokoll" },
],
};