refactor: change global store from stores to states
This commit is contained in:
parent
464905749b
commit
a051ec8408
7
src/lib/v2/globalStore.svelte.ts
Normal file
7
src/lib/v2/globalStore.svelte.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import { env } from '$env/dynamic/public';
|
||||||
|
|
||||||
|
export const store = $state<{
|
||||||
|
pageTitle: string;
|
||||||
|
}>({
|
||||||
|
pageTitle: env.PUBLIC_SITE_NAME ?? '',
|
||||||
|
});
|
||||||
@ -1,3 +0,0 @@
|
|||||||
import { writable } from 'svelte/store';
|
|
||||||
|
|
||||||
export const pageTitle = writable('');
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { page } from '$app/state';
|
import { page } from '$app/state';
|
||||||
import { env } from '$env/dynamic/public';
|
import { env } from '$env/dynamic/public';
|
||||||
import { pageTitle } from '$lib/v2/globalStores.js';
|
import { store } from '$lib/v2/globalStore.svelte.js';
|
||||||
import { slideFade } from '$lib/v2/transitions/slideFade.js';
|
import { slideFade } from '$lib/v2/transitions/slideFade.js';
|
||||||
import NavBar from '$lib/v2/ui/NavBar.svelte';
|
import NavBar from '$lib/v2/ui/NavBar.svelte';
|
||||||
import NavBarLink from '$lib/v2/ui/NavBarLink.svelte';
|
import NavBarLink from '$lib/v2/ui/NavBarLink.svelte';
|
||||||
@ -23,7 +23,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
<title>{env.PUBLIC_SITE_NAME} - {$pageTitle}</title>
|
<title>{env.PUBLIC_SITE_NAME} - {store.pageTitle}</title>
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
@ -44,7 +44,7 @@
|
|||||||
class="flex grow items-center gap-3 text-neutral-100 text-sm sm:text-base font-light shadow"
|
class="flex grow items-center gap-3 text-neutral-100 text-sm sm:text-base font-light shadow"
|
||||||
>
|
>
|
||||||
<IconChevronRight />
|
<IconChevronRight />
|
||||||
<p>{$pageTitle}</p>
|
<p>{store.pageTitle}</p>
|
||||||
</div>
|
</div>
|
||||||
<DropdownMenu.Root>
|
<DropdownMenu.Root>
|
||||||
<div class="rounded-full bg-neutral-950 border border-neutral-600 p-1">
|
<div class="rounded-full bg-neutral-950 border border-neutral-600 p-1">
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import InputText from '$lib/v2/forms/InputText.svelte';
|
import InputText from '$lib/v2/forms/InputText.svelte';
|
||||||
import { pageTitle } from '$lib/v2/globalStores';
|
import { store } from '$lib/v2/globalStore.svelte.js';
|
||||||
import EditPage from '$lib/v2/snippets/EditPage.svelte';
|
import EditPage from '$lib/v2/snippets/EditPage.svelte';
|
||||||
|
|
||||||
let { data, form } = $props();
|
let { data, form } = $props();
|
||||||
|
|
||||||
$pageTitle = 'Account details';
|
store.pageTitle = 'Account details';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<p class="text-white">{form?.error}</p>
|
<p class="text-white">{form?.error}</p>
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
<script>
|
<script>
|
||||||
import { browser } from '$app/environment';
|
import { browser } from '$app/environment';
|
||||||
import { pageTitle } from '$lib/v2/globalStores.js';
|
import { store } from '$lib/v2/globalStore.svelte.js';
|
||||||
import ListPage from '$lib/v2/snippets/ListPage.svelte';
|
import ListPage from '$lib/v2/snippets/ListPage.svelte';
|
||||||
import { Button, Separator } from 'bits-ui';
|
import { Button, Separator } from 'bits-ui';
|
||||||
import IconPlugConnectedX from '~icons/tabler/plug-connected-x';
|
import IconPlugConnectedX from '~icons/tabler/plug-connected-x';
|
||||||
|
|
||||||
let { data, form } = $props();
|
let { data, form } = $props();
|
||||||
|
|
||||||
$pageTitle = 'My active sessions';
|
store.pageTitle = 'My active sessions';
|
||||||
|
|
||||||
$effect(() => {
|
$effect(() => {
|
||||||
if (form?.success && browser) {
|
if (form?.success && browser) {
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
<script>
|
<script>
|
||||||
import { pageTitle } from '$lib/v2/globalStores.js';
|
import { store } from '$lib/v2/globalStore.svelte.js';
|
||||||
import ListPage from '$lib/v2/snippets/ListPage.svelte';
|
import ListPage from '$lib/v2/snippets/ListPage.svelte';
|
||||||
import ResCard from '$lib/v2/ui/ResCard.svelte';
|
import ResCard from '$lib/v2/ui/ResCard.svelte';
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
|
|
||||||
$pageTitle = 'Listing all devices';
|
store.pageTitle = 'Listing all devices';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<ListPage createHref={data.user.admin ? '/dash/devices/new' : null} msgAdd="Add Device">
|
<ListPage createHref={data.user.admin ? '/dash/devices/new' : null} msgAdd="Add Device">
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { browser } from '$app/environment';
|
import { browser } from '$app/environment';
|
||||||
import InputText from '$lib/v2/forms/InputText.svelte';
|
import InputText from '$lib/v2/forms/InputText.svelte';
|
||||||
import { pageTitle } from '$lib/v2/globalStores';
|
import { store } from '$lib/v2/globalStore.svelte.js';
|
||||||
import EditPage from '$lib/v2/snippets/EditPage.svelte';
|
import EditPage from '$lib/v2/snippets/EditPage.svelte';
|
||||||
import Collapsible from '$lib/v2/ui/Collapsible.svelte';
|
import Collapsible from '$lib/v2/ui/Collapsible.svelte';
|
||||||
|
|
||||||
let { data, form } = $props();
|
let { data, form } = $props();
|
||||||
|
|
||||||
$pageTitle = data.device ? 'Editing device: ' + data.device.name : 'Adding new Device';
|
store.pageTitle = data.device ? 'Editing device: ' + data.device.name : 'Adding new Device';
|
||||||
|
|
||||||
// store the state of data that can be collapsed on the form and bind to it
|
// store the state of data that can be collapsed on the form and bind to it
|
||||||
// as to not lose user edits when the form is collapsed and expanded again
|
// as to not lose user edits when the form is collapsed and expanded again
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
<script>
|
<script>
|
||||||
import { pageTitle } from '$lib/v2/globalStores.js';
|
import { store } from '$lib/v2/globalStore.svelte.js';
|
||||||
import ListPage from '$lib/v2/snippets/ListPage.svelte';
|
import ListPage from '$lib/v2/snippets/ListPage.svelte';
|
||||||
import ResCard from '$lib/v2/ui/ResCard.svelte';
|
import ResCard from '$lib/v2/ui/ResCard.svelte';
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
|
|
||||||
$pageTitle = 'Listing all groups';
|
store.pageTitle = 'Listing all groups';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<ListPage createHref={data.user.admin ? '/dash/groups/new' : null} msgAdd="Add Group">
|
<ListPage createHref={data.user.admin ? '/dash/groups/new' : null} msgAdd="Add Group">
|
||||||
|
|||||||
@ -2,12 +2,12 @@
|
|||||||
import { browser } from '$app/environment';
|
import { browser } from '$app/environment';
|
||||||
import InputCombobox from '$lib/v2/forms/InputCombobox.svelte';
|
import InputCombobox from '$lib/v2/forms/InputCombobox.svelte';
|
||||||
import InputText from '$lib/v2/forms/InputText.svelte';
|
import InputText from '$lib/v2/forms/InputText.svelte';
|
||||||
import { pageTitle } from '$lib/v2/globalStores';
|
import { store } from '$lib/v2/globalStore.svelte.js';
|
||||||
import EditPage from '$lib/v2/snippets/EditPage.svelte';
|
import EditPage from '$lib/v2/snippets/EditPage.svelte';
|
||||||
|
|
||||||
let { data, form } = $props();
|
let { data, form } = $props();
|
||||||
|
|
||||||
$pageTitle = data.group ? 'Editing group: ' + data.group.name : 'Adding new group';
|
store.pageTitle = data.group ? 'Editing group: ' + data.group.name : 'Adding new group';
|
||||||
|
|
||||||
$effect(() => {
|
$effect(() => {
|
||||||
if (form?.success && browser) {
|
if (form?.success && browser) {
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
<script>
|
<script>
|
||||||
import { pageTitle } from '$lib/v2/globalStores.js';
|
import { store } from '$lib/v2/globalStore.svelte.js';
|
||||||
import ListPage from '$lib/v2/snippets/ListPage.svelte';
|
import ListPage from '$lib/v2/snippets/ListPage.svelte';
|
||||||
import ResCard from '$lib/v2/ui/ResCard.svelte';
|
import ResCard from '$lib/v2/ui/ResCard.svelte';
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
|
|
||||||
$pageTitle = 'Listing all users';
|
store.pageTitle = 'Listing all users';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<ListPage createHref={data.user.admin ? '/dash/users/new' : null} msgAdd="Add User">
|
<ListPage createHref={data.user.admin ? '/dash/users/new' : null} msgAdd="Add User">
|
||||||
|
|||||||
@ -3,12 +3,12 @@
|
|||||||
import InputCheckbox from '$lib/v2/forms/InputCheckbox.svelte';
|
import InputCheckbox from '$lib/v2/forms/InputCheckbox.svelte';
|
||||||
import InputCombobox from '$lib/v2/forms/InputCombobox.svelte';
|
import InputCombobox from '$lib/v2/forms/InputCombobox.svelte';
|
||||||
import InputText from '$lib/v2/forms/InputText.svelte';
|
import InputText from '$lib/v2/forms/InputText.svelte';
|
||||||
import { pageTitle } from '$lib/v2/globalStores';
|
import { store } from '$lib/v2/globalStore.svelte.js';
|
||||||
import EditPage from '$lib/v2/snippets/EditPage.svelte';
|
import EditPage from '$lib/v2/snippets/EditPage.svelte';
|
||||||
|
|
||||||
let { data, form } = $props();
|
let { data, form } = $props();
|
||||||
|
|
||||||
$pageTitle = data.user ? 'Editing user: ' + data.user.name : 'Adding new user';
|
store.pageTitle = data.user ? 'Editing user: ' + data.user.name : 'Adding new user';
|
||||||
|
|
||||||
$effect(() => {
|
$effect(() => {
|
||||||
if (form?.success && browser) {
|
if (form?.success && browser) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user