added version number in the footer

This commit is contained in:
Gani Georgiev
2022-08-09 16:16:09 +03:00
parent 8b2b26c196
commit 8288da8372
21 changed files with 379 additions and 299 deletions
+8 -6
View File
@@ -4,6 +4,7 @@
import CommonHelper from "@/utils/CommonHelper";
import { pageTitle } from "@/stores/app";
import { admin as loggedAdmin } from "@/stores/admin";
import PageWrapper from "@/components/base/PageWrapper.svelte";
import Searchbar from "@/components/base/Searchbar.svelte";
import RefreshButton from "@/components/base/RefreshButton.svelte";
import SortHeader from "@/components/base/SortHeader.svelte";
@@ -35,10 +36,11 @@
admins = []; // reset
return ApiClient.admins.getFullList(100, {
sort: sort || "-created",
filter: filter,
})
return ApiClient.admins
.getFullList(100, {
sort: sort || "-created",
filter: filter,
})
.then((result) => {
admins = result;
isLoading = false;
@@ -60,7 +62,7 @@
<SettingsSidebar />
<main class="page-wrapper">
<PageWrapper>
<header class="page-header">
<nav class="breadcrumbs">
<div class="breadcrumb-item">Settings</div>
@@ -197,6 +199,6 @@
{#if admins.length}
<small class="block txt-hint txt-right m-t-sm">Showing {admins.length} of {admins.length}</small>
{/if}
</main>
</PageWrapper>
<AdminUpsertPanel bind:this={adminUpsertPanel} on:save={() => loadAdmins()} on:delete={() => loadAdmins()} />
+6 -14
View File
@@ -1,11 +1,11 @@
<script>
import PageWrapper from "@/components/base/PageWrapper.svelte";
export let nobranding = false;
</script>
<div class="page-wrapper full-page-panel">
<div class="flex-fill" />
<div class="wrapper wrapper-sm m-b-xl">
<PageWrapper class="full-page" center>
<div class="wrapper wrapper-sm m-b-xl panel-wrapper">
{#if !nobranding}
<div class="block txt-center m-b-lg">
<figure class="logo">
@@ -23,18 +23,10 @@
<slot />
</div>
<div class="flex-fill" />
</div>
</PageWrapper>
<style>
.full-page-panel {
display: flex;
flex-direction: column;
align-items: center;
background: var(--baseColor);
}
.full-page-panel .wrapper {
.panel-wrapper {
animation: slideIn 200ms;
}
</style>
+24
View File
@@ -0,0 +1,24 @@
<script>
export let center = false;
let classes = "";
export { classes as class }; // export reserved keyword
</script>
<div class="page-wrapper {classes}" class:center-content={center}>
<main class="page-content">
<slot />
</main>
<footer class="page-footer">
<a
href={import.meta.env.PB_RELEASES}
class="inline-flex flex-gap-5"
target="_blank"
rel="noopener"
title="Releases"
>
<span class="txt">PocketBase {import.meta.env.PB_VERSION}</span>
</a>
</footer>
</div>
+3 -2
View File
@@ -1,6 +1,7 @@
<script>
import { pageTitle } from "@/stores/app";
import Field from "@/components/base/Field.svelte";
import PageWrapper from "@/components/base/PageWrapper.svelte";
import Searchbar from "@/components/base/Searchbar.svelte";
import RefreshButton from "@/components/base/RefreshButton.svelte";
import LogsList from "@/components/logs/LogsList.svelte";
@@ -27,7 +28,7 @@
}
</script>
<main class="page-wrapper">
<PageWrapper>
<div class="page-header-wrapper m-b-0">
<header class="page-header">
<nav class="breadcrumbs">
@@ -63,6 +64,6 @@
{#key refreshToken}
<LogsList bind:filter {presets} on:select={(e) => logPanel?.show(e?.detail)} />
{/key}
</main>
</PageWrapper>
<LogViewPanel bind:this={logPanel} />
+25 -20
View File
@@ -8,6 +8,7 @@
} from "@/stores/collections";
import tooltip from "@/actions/tooltip";
import { pageTitle } from "@/stores/app";
import PageWrapper from "@/components/base/PageWrapper.svelte";
import Searchbar from "@/components/base/Searchbar.svelte";
import RefreshButton from "@/components/base/RefreshButton.svelte";
import CollectionsSidebar from "@/components/collections/CollectionsSidebar.svelte";
@@ -55,29 +56,33 @@
</script>
{#if $isCollectionsLoading}
<div class="placeholder-section m-b-base">
<span class="loader loader-lg" />
<h1>Loading collections...</h1>
</div>
{:else if !viewableCollections.length}
<div class="placeholder-section m-b-base">
<div class="icon">
<i class="ri-database-2-line" />
<PageWrapper center>
<div class="placeholder-section m-b-base">
<span class="loader loader-lg" />
<h1>Loading collections...</h1>
</div>
<h1 class="m-b-10">Create your first collection to add records!</h1>
<button
type="button"
class="btn btn-expanded-lg btn-lg"
on:click={() => collectionUpsertPanel?.show()}
>
<i class="ri-add-line" />
<span class="txt">Create new collection</span>
</button>
</div>
</PageWrapper>
{:else if !viewableCollections.length}
<PageWrapper center>
<div class="placeholder-section m-b-base">
<div class="icon">
<i class="ri-database-2-line" />
</div>
<h1 class="m-b-10">Create your first collection to add records!</h1>
<button
type="button"
class="btn btn-expanded-lg btn-lg"
on:click={() => collectionUpsertPanel?.show()}
>
<i class="ri-add-line" />
<span class="txt">Create new collection</span>
</button>
</div>
</PageWrapper>
{:else}
<CollectionsSidebar />
<main class="page-wrapper">
<PageWrapper>
<header class="page-header">
<nav class="breadcrumbs">
<div class="breadcrumb-item">Collections</div>
@@ -127,7 +132,7 @@
bind:sort
on:select={(e) => recordPanel?.show(e?.detail)}
/>
</main>
</PageWrapper>
{/if}
<CollectionUpsertPanel bind:this={collectionUpsertPanel} />
+25 -3
View File
@@ -4,6 +4,7 @@
import CommonHelper from "@/utils/CommonHelper";
import OverlayPanel from "@/components/base/OverlayPanel.svelte";
import { addSuccessToast } from "@/stores/toasts";
import { confirm } from "@/stores/confirmation";
const dispatch = createEventDispatcher();
@@ -17,6 +18,10 @@
loadChanges();
}
$: deletedCollections = oldCollections.filter((old) => {
return !CommonHelper.findByKey(newCollections, "id", old.id)?.id;
});
export function show(a, b) {
oldCollections = a;
newCollections = b;
@@ -103,7 +108,24 @@
return diffsToHtml(diffs, ops);
}
async function submitImport() {
function submitWithConfirm() {
if (deletedCollections.length) {
const deletedNames = deletedCollections.map((c) => c.name);
confirm(
`Do you really want to delete the following collections and their related records data:\n- ${deletedNames.join(
"\n- "
)}?`,
() => {
submit();
}
);
} else {
submit();
}
}
async function submit() {
if (isImporting) {
return;
}
@@ -111,7 +133,7 @@
isImporting = true;
try {
await ApiClient.collections.import(newCollections);
await ApiClient.collections.import(newCollections, true);
addSuccessToast("Successfully imported the collections configuration.");
dispatch("submit");
} catch (err) {
@@ -180,7 +202,7 @@
class="btn btn-expanded"
class:btn-loading={isImporting}
disabled={isImporting}
on:click={() => submitImport()}
on:click={() => submitWithConfirm()}
>
<span class="txt">Confirm and import</span>
</button>
@@ -3,6 +3,7 @@
import CommonHelper from "@/utils/CommonHelper";
import { pageTitle, appName } from "@/stores/app";
import { addSuccessToast } from "@/stores/toasts";
import PageWrapper from "@/components/base/PageWrapper.svelte";
import Field from "@/components/base/Field.svelte";
import SettingsSidebar from "@/components/settings/SettingsSidebar.svelte";
@@ -62,7 +63,7 @@
<SettingsSidebar />
<main class="page-wrapper">
<PageWrapper>
<header class="page-header">
<nav class="breadcrumbs">
<div class="breadcrumb-item">Settings</div>
@@ -116,4 +117,4 @@
{/if}
</form>
</div>
</main>
</PageWrapper>
@@ -4,6 +4,7 @@
import { pageTitle } from "@/stores/app";
import { setErrors } from "@/stores/errors";
import { addSuccessToast } from "@/stores/toasts";
import PageWrapper from "@/components/base/PageWrapper.svelte";
import SettingsSidebar from "@/components/settings/SettingsSidebar.svelte";
import EmailAuthAccordion from "@/components/settings/EmailAuthAccordion.svelte";
import AuthProviderAccordion from "@/components/settings/AuthProviderAccordion.svelte";
@@ -73,7 +74,7 @@
<SettingsSidebar />
<main class="page-wrapper">
<PageWrapper>
<header class="page-header">
<nav class="breadcrumbs">
<div class="breadcrumb-item">Settings</div>
@@ -140,4 +141,4 @@
{/if}
</form>
</div>
</main>
</PageWrapper>
@@ -3,6 +3,7 @@
import CommonHelper from "@/utils/CommonHelper";
import { pageTitle } from "@/stores/app";
import { addInfoToast } from "@/stores/toasts";
import PageWrapper from "@/components/base/PageWrapper.svelte";
import CodeBlock from "@/components/base/CodeBlock.svelte";
import SettingsSidebar from "@/components/settings/SettingsSidebar.svelte";
@@ -43,13 +44,13 @@
function copy() {
CommonHelper.copyToClipboard(schema);
addInfoToast("The collections list was copied to your clipboard!", 3000);
addInfoToast("The configuration was copied to your clipboard!", 3000);
}
</script>
<SettingsSidebar />
<main class="page-wrapper">
<PageWrapper>
<header class="page-header">
<nav class="breadcrumbs">
<div class="breadcrumb-item">Settings</div>
@@ -106,7 +107,7 @@
{/if}
</div>
</div>
</main>
</PageWrapper>
<style>
.export-preview {
@@ -5,6 +5,7 @@
import { pageTitle } from "@/stores/app";
import { addErrorToast } from "@/stores/toasts";
import { setErrors } from "@/stores/errors";
import PageWrapper from "@/components/base/PageWrapper.svelte";
import Field from "@/components/base/Field.svelte";
import SettingsSidebar from "@/components/settings/SettingsSidebar.svelte";
import ImportPopup from "@/components/settings/ImportPopup.svelte";
@@ -150,7 +151,7 @@
<SettingsSidebar />
<main class="page-wrapper">
<PageWrapper>
<header class="page-header">
<nav class="breadcrumbs">
<div class="breadcrumb-item">Settings</div>
@@ -163,19 +164,19 @@
{#if isLoadingOldCollections}
<div class="loader" />
{:else}
<div class="content txt-xl m-b-base">
<input
bind:this={fileInput}
type="file"
class="hidden"
accept=".json"
on:change={() => {
if (fileInput.files.length) {
loadFile(fileInput.files[0]);
}
}}
/>
<input
bind:this={fileInput}
type="file"
class="hidden"
accept=".json"
on:change={() => {
if (fileInput.files.length) {
loadFile(fileInput.files[0]);
}
}}
/>
<div class="content txt-xl m-b-base">
<p>
Paste below the collections configuration you want to import or
<button
@@ -283,7 +284,7 @@
{/if}
</div>
</div>
</main>
</PageWrapper>
<ImportPopup bind:this={importPopup} on:submit={() => clear()} />
+3 -2
View File
@@ -4,6 +4,7 @@
import CommonHelper from "@/utils/CommonHelper";
import { pageTitle } from "@/stores/app";
import { addSuccessToast } from "@/stores/toasts";
import PageWrapper from "@/components/base/PageWrapper.svelte";
import Field from "@/components/base/Field.svelte";
import ObjectSelect from "@/components/base/ObjectSelect.svelte";
import RedactedPasswordInput from "@/components/base/RedactedPasswordInput.svelte";
@@ -67,7 +68,7 @@
<SettingsSidebar />
<main class="page-wrapper">
<PageWrapper>
<header class="page-header">
<nav class="breadcrumbs">
<div class="breadcrumb-item">Settings</div>
@@ -240,4 +241,4 @@
{/if}
</form>
</div>
</main>
</PageWrapper>
@@ -5,10 +5,11 @@
import { pageTitle } from "@/stores/app";
import { setErrors } from "@/stores/errors";
import { addSuccessToast } from "@/stores/toasts";
import tooltip from "@/actions/tooltip";
import PageWrapper from "@/components/base/PageWrapper.svelte";
import Field from "@/components/base/Field.svelte";
import RedactedPasswordInput from "@/components/base/RedactedPasswordInput.svelte";
import SettingsSidebar from "@/components/settings/SettingsSidebar.svelte";
import tooltip from "@/actions/tooltip";
$pageTitle = "Files storage";
@@ -63,7 +64,7 @@
<SettingsSidebar />
<main class="page-wrapper">
<PageWrapper>
<header class="page-header">
<nav class="breadcrumbs">
<div class="breadcrumb-item">Settings</div>
@@ -191,4 +192,4 @@
{/if}
</form>
</div>
</main>
</PageWrapper>
@@ -3,6 +3,7 @@
import CommonHelper from "@/utils/CommonHelper";
import { pageTitle } from "@/stores/app";
import { addSuccessToast } from "@/stores/toasts";
import PageWrapper from "@/components/base/PageWrapper.svelte";
import Field from "@/components/base/Field.svelte";
import SettingsSidebar from "@/components/settings/SettingsSidebar.svelte";
@@ -73,7 +74,7 @@
<SettingsSidebar />
<main class="page-wrapper">
<PageWrapper>
<header class="page-header">
<nav class="breadcrumbs">
<div class="breadcrumb-item">Settings</div>
@@ -134,4 +135,4 @@
{/if}
</form>
</div>
</main>
</PageWrapper>
+10 -9
View File
@@ -5,6 +5,7 @@
import CommonHelper from "@/utils/CommonHelper";
import tooltip from "@/actions/tooltip";
import { pageTitle } from "@/stores/app";
import PageWrapper from "@/components/base/PageWrapper.svelte";
import Searchbar from "@/components/base/Searchbar.svelte";
import RefreshButton from "@/components/base/RefreshButton.svelte";
import SortHeader from "@/components/base/SortHeader.svelte";
@@ -103,13 +104,13 @@
}
</script>
{#if isLoadingProfileCollection}
<div class="placeholder-section m-b-base">
<span class="loader loader-lg" />
<h1>Loading users...</h1>
</div>
{:else}
<main class="page-wrapper">
<PageWrapper>
{#if isLoadingProfileCollection}
<div class="placeholder-section m-b-base">
<span class="loader loader-lg" />
<h1>Loading users...</h1>
</div>
{:else}
<header class="page-header">
<nav class="breadcrumbs">
<div class="breadcrumb-item">{$pageTitle}</div>
@@ -283,8 +284,8 @@
</button>
</div>
{/if}
</main>
{/if}
{/if}
</PageWrapper>
<UserUpsertPanel bind:this={userUpsertPanel} on:save={() => loadUsers()} on:delete={() => loadUsers()} />