diff --git a/package-lock.json b/package-lock.json index 3a50f6e..654c907 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/package.json b/package.json index ea69780..6b17df4 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/globalProperties.config.ts b/src/globalProperties.config.ts index b9d36eb..89d63ce 100644 --- a/src/globalProperties.config.ts +++ b/src/globalProperties.config.ts @@ -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; } diff --git a/src/main.css b/src/main.css index 7526df5..b4c501c 100644 --- a/src/main.css +++ b/src/main.css @@ -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; +} diff --git a/src/router/index.ts b/src/router/index.ts index f281ee0..d956e4f 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -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, }, ], diff --git a/src/views/Login.vue b/src/views/Login.vue index bb72d7e..475b76d 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -12,7 +12,15 @@
- +
diff --git a/src/views/admin/protocol/Protocol.vue b/src/views/admin/club/protocol/Protocol.vue similarity index 100% rename from src/views/admin/protocol/Protocol.vue rename to src/views/admin/club/protocol/Protocol.vue diff --git a/src/views/admin/protocol/ProtocolDecisions.vue b/src/views/admin/club/protocol/ProtocolDecisions.vue similarity index 100% rename from src/views/admin/protocol/ProtocolDecisions.vue rename to src/views/admin/club/protocol/ProtocolDecisions.vue diff --git a/src/views/admin/protocol/ProtocolOverview.vue b/src/views/admin/club/protocol/ProtocolOverview.vue similarity index 100% rename from src/views/admin/protocol/ProtocolOverview.vue rename to src/views/admin/club/protocol/ProtocolOverview.vue diff --git a/src/views/admin/protocol/ProtocolPrecense.vue b/src/views/admin/club/protocol/ProtocolPrecense.vue similarity index 100% rename from src/views/admin/protocol/ProtocolPrecense.vue rename to src/views/admin/club/protocol/ProtocolPrecense.vue diff --git a/src/views/admin/protocol/ProtocolProtocol.vue b/src/views/admin/club/protocol/ProtocolProtocol.vue similarity index 50% rename from src/views/admin/protocol/ProtocolProtocol.vue rename to src/views/admin/club/protocol/ProtocolProtocol.vue index 8bd9e6d..354862d 100644 --- a/src/views/admin/protocol/ProtocolProtocol.vue +++ b/src/views/admin/club/protocol/ProtocolProtocol.vue @@ -2,6 +2,28 @@

↺ laden fehlgeschlagen

+ +
+ + + + + + + + +
diff --git a/src/views/admin/protocol/ProtocolRouting.vue b/src/views/admin/club/protocol/ProtocolRouting.vue similarity index 97% rename from src/views/admin/protocol/ProtocolRouting.vue rename to src/views/admin/club/protocol/ProtocolRouting.vue index 1d14a30..fe56087 100644 --- a/src/views/admin/protocol/ProtocolRouting.vue +++ b/src/views/admin/club/protocol/ProtocolRouting.vue @@ -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" }, ], }; diff --git a/src/views/admin/protocol/ProtocolVoting.vue b/src/views/admin/club/protocol/ProtocolVoting.vue similarity index 100% rename from src/views/admin/protocol/ProtocolVoting.vue rename to src/views/admin/club/protocol/ProtocolVoting.vue