aboutsummaryrefslogtreecommitdiff
path: root/src_frontend/Components/Settings/Users.svelte
diff options
context:
space:
mode:
authorJakob Stendahl <jakob.stendahl@outlook.com>2021-09-19 19:43:11 +0200
committerJakob Stendahl <jakob.stendahl@outlook.com>2021-09-19 19:43:11 +0200
commit7bdce37fd3f18e2712e18c4e2c64cac69af0aca1 (patch)
treeb7ad3f1cca92e2dfd2664ae9e65652bd03ff58b2 /src_frontend/Components/Settings/Users.svelte
parente6880cd8ccf82d993f222cb14b4860581654acb8 (diff)
downloadLuxcena-Neo-7bdce37fd3f18e2712e18c4e2c64cac69af0aca1.tar.gz
Luxcena-Neo-7bdce37fd3f18e2712e18c4e2c64cac69af0aca1.zip
:boom: Introduce new UI based on svelte, and rewrite a lot of the node app and the NeoRuntime
Diffstat (limited to 'src_frontend/Components/Settings/Users.svelte')
-rw-r--r--src_frontend/Components/Settings/Users.svelte93
1 files changed, 93 insertions, 0 deletions
diff --git a/src_frontend/Components/Settings/Users.svelte b/src_frontend/Components/Settings/Users.svelte
new file mode 100644
index 0000000..7e68c3a
--- /dev/null
+++ b/src_frontend/Components/Settings/Users.svelte
@@ -0,0 +1,93 @@
+<script>
+ import { onMount } from "svelte";
+ import { authorizedSocket, authorizedSocketNeeded, user } from "../../stores/socketStore.js";
+ authorizedSocketNeeded.set(true);
+ import CreateEditUser from "./CreateEditUser.svelte";
+ import ConfirmActionDialog from "../Dialogs/ConfirmActionDialog.svelte";
+ import FloatingButton from "../../ComponentLib/Button/FloatingButton.svelte";
+
+
+ let usersList = [];
+
+ function deleteUser(username) {
+ authorizedSocket.emit("user:delete", username, (res) => {
+ if (!res.success) { notif({title: res.reason}); }
+ });
+ };
+
+ authorizedSocket.on("users", (users) => {
+ usersList = users;
+ });
+
+ onMount(() => {
+ authorizedSocket.emit("users:get");
+ });
+</script>
+
+<style>
+ h1 {
+ margin: 0;
+ }
+ ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ }
+ li {
+ width: 100%;
+ display: flex;
+ padding: 10px 10px;
+ border-radius: 5px;
+ align-items:center;
+ box-sizing: border-box;
+ }
+ li:hover {
+ background-color: var(--grey-100);
+ }
+ li:not(:last-child) {
+ border-bottom: 0.5px solid var(--grey-400);
+ }
+ .align-right { margin-left: auto; }
+ button {
+ background-color: transparent;
+ border: none;
+ padding: 10px;
+ border-radius: 50%;
+ }
+ button:hover {
+ background-color: var(--grey-300);
+ }
+ button:active {
+ background-color: var(--grey-400);
+ }
+</style>
+
+<div>
+ <h1>Users</h1>
+ <ul>
+ {#each usersList as _user}
+ <li>
+ {_user}
+ <div class="align-right">
+ {#if $user?.username != _user}
+ <ConfirmActionDialog title="Are you sure?" text="Are you sure you want to delete {_user}" action={() => {deleteUser(_user)}}>
+ <svelte:fragment slot="trigger" let:open>
+ <button on:click={open}><i class="fas fa-trash"></i></button>
+ </svelte:fragment>
+ </ConfirmActionDialog>
+ {/if}
+ <CreateEditUser username={_user}>
+ <svelte:fragment slot="trigger" let:open>
+ <button on:click={open}><i class="fas fa-edit"></i></button>
+ </svelte:fragment>
+ </CreateEditUser>
+ </div>
+ </li>
+ {/each}
+ </ul>
+ <CreateEditUser>
+ <svelte:fragment slot="trigger" let:open>
+ <div class="button"><FloatingButton on:click={open} fullWidth=true>Create new user</FloatingButton></div>
+ </svelte:fragment>
+ </CreateEditUser>
+</div> \ No newline at end of file