+
+
{getInitials($user.name)}
+
{$input}
+
+
diff --git a/src/lib/components/avatarInitials.svelte b/src/lib/components/avatarInitials.svelte
index 025dd998c8..0d4df1a70a 100644
--- a/src/lib/components/avatarInitials.svelte
+++ b/src/lib/components/avatarInitials.svelte
@@ -4,8 +4,9 @@
export let name: string;
export let size: number;
+ export let background: string | undefined = undefined;
- $: src = sdk.forConsole.avatars.getInitials(name, size * 2, size * 2).toString();
+ $: src = sdk.forConsole.avatars.getInitials(name, size * 2, size * 2, background).toString();
diff --git a/src/routes/console/+layout.svelte b/src/routes/console/+layout.svelte
index bdb1415017..28e9e78b1a 100644
--- a/src/routes/console/+layout.svelte
+++ b/src/routes/console/+layout.svelte
@@ -112,25 +112,22 @@
group: 'help',
icon: 'discord'
},
- {
- label: 'Toggle theme',
- callback: () => {
- if ($app.theme === 'auto') {
- $app.theme = 'light';
- } else if ($app.theme === 'light') {
- $app.theme = 'dark';
- } else {
- $app.theme = 'auto';
- }
- addNotification({
- title: 'Theme changed',
- message: `Theme changed to ${$app.theme}`,
- type: 'success'
- });
- },
- group: 'misc',
- icon: 'switch-horizontal'
- }
+ ...(['auto', 'dark', 'light'] as const).map((theme) => {
+ return {
+ label: `Set theme to ${theme}`,
+ callback: () => {
+ $app.theme = theme;
+ addNotification({
+ title: 'Theme changed',
+ message: `Theme changed to ${$app.theme}`,
+ type: 'success'
+ });
+ },
+ group: 'misc',
+ icon: 'switch-horizontal',
+ keys: ['t', theme[0]]
+ } as const;
+ })
]);
let isOpen = false;
From b496a54e6b8b6dffe79c08cc55c0ddac4f9496d6 Mon Sep 17 00:00:00 2001
From: tglide <26071571+TGlide@users.noreply.github.com>
Date: Wed, 16 Aug 2023 13:28:16 +0100
Subject: [PATCH 07/46] auto-expandable ai panel
---
src/lib/commandCenter/panels/ai.svelte | 6 +++---
src/lib/commandCenter/panels/template.svelte | 7 ++++---
src/lib/helpers/mutation.ts | 6 ++++++
3 files changed, 13 insertions(+), 6 deletions(-)
create mode 100644 src/lib/helpers/mutation.ts
diff --git a/src/lib/commandCenter/panels/ai.svelte b/src/lib/commandCenter/panels/ai.svelte
index 85bd9fb9fc..307263c2df 100644
--- a/src/lib/commandCenter/panels/ai.svelte
+++ b/src/lib/commandCenter/panels/ai.svelte
@@ -97,8 +97,8 @@
};
})}
clearOnCallback={false}
- fullheight
- --command-panel-max-height="40rem">
+ --min-height="40rem"
+ --max-height="52.5rem">
EXPERIMENTAL
@@ -188,7 +188,7 @@
}
.content {
- overflow-y: auto;
+ overflow: auto;
padding: 1rem;
.logo {
diff --git a/src/lib/commandCenter/panels/template.svelte b/src/lib/commandCenter/panels/template.svelte
index db648efb12..025840988c 100644
--- a/src/lib/commandCenter/panels/template.svelte
+++ b/src/lib/commandCenter/panels/template.svelte
@@ -385,9 +385,10 @@
.card {
display: flex;
flex-direction: column;
- width: var(--command-panel-width, 42.5rem);
+ width: var(--width, 42.5rem);
max-width: 100%;
- max-height: var(--command-panel-max-height, 32rem);
+ min-height: var(--min-height);
+ max-height: var(--max-height, 32rem);
overflow: hidden;
padding: 0;
@@ -403,7 +404,7 @@
backdrop-filter: blur(6px);
&.fullheight {
- height: var(--command-panel-max-height, 32rem);
+ height: var(--max-height, 32rem);
}
:global(.kbd) {
diff --git a/src/lib/helpers/mutation.ts b/src/lib/helpers/mutation.ts
new file mode 100644
index 0000000000..8639d9ae6c
--- /dev/null
+++ b/src/lib/helpers/mutation.ts
@@ -0,0 +1,6 @@
+// Easier wrapper over mutation observer, which takes an element, a callback, and returns an unsubscribe fn
+export function observeElement(el: HTMLElement, callback: MutationCallback): () => void {
+ const observer = new MutationObserver(callback);
+ observer.observe(el, { childList: true, subtree: true });
+ return () => observer.disconnect();
+}
From 1f402848db4b8724e554eafef97f99150518a90e Mon Sep 17 00:00:00 2001
From: tglide <26071571+TGlide@users.noreply.github.com>
Date: Wed, 16 Aug 2023 14:02:35 +0100
Subject: [PATCH 08/46] table check touch area
---
src/lib/elements/forms/inputCheckbox.svelte | 2 +-
src/lib/elements/table/cell.svelte | 6 +++
src/lib/elements/table/cellCheck.svelte | 39 ++++++++++++-------
.../collection-[collection]/table.svelte | 2 +-
4 files changed, 33 insertions(+), 16 deletions(-)
diff --git a/src/lib/elements/forms/inputCheckbox.svelte b/src/lib/elements/forms/inputCheckbox.svelte
index 601607e594..7b9fef8fb3 100644
--- a/src/lib/elements/forms/inputCheckbox.svelte
+++ b/src/lib/elements/forms/inputCheckbox.svelte
@@ -10,7 +10,7 @@
export let required = false;
export let disabled = false;
- let element: HTMLInputElement;
+ export let element: HTMLInputElement;
let error: string;
const handleInvalid = (event: Event) => {
diff --git a/src/lib/elements/table/cell.svelte b/src/lib/elements/table/cell.svelte
index 4c778d31ac..eb66991d8b 100644
--- a/src/lib/elements/table/cell.svelte
+++ b/src/lib/elements/table/cell.svelte
@@ -14,3 +14,9 @@
role="cell">
+
+
diff --git a/src/lib/elements/table/cellCheck.svelte b/src/lib/elements/table/cellCheck.svelte
index 3c55aa395e..09424abdfa 100644
--- a/src/lib/elements/table/cellCheck.svelte
+++ b/src/lib/elements/table/cellCheck.svelte
@@ -6,24 +6,35 @@
export let id: string;
export let selectedIds: string[] = [];
+ let el: HTMLInputElement;
+
+ const handleClick = (e: Event) => {
+ // Prevent the link from being followed
+ e.preventDefault();
+ if (!isHTMLInputElement(el)) return;
+
+ selectedIds = toggle(selectedIds, id);
+
+ // Hack to make sure the checkbox is checked, independent of the
+ // preventDefault() call above
+ window.setTimeout(() => {
+ el.checked = selectedIds.includes(id);
+ });
+ };
+
{
- // Prevent the link from being followed
- e.preventDefault();
- const el = e.currentTarget;
- if (!isHTMLInputElement(el)) return;
-
- selectedIds = toggle(selectedIds, id);
-
- // Hack to make sure the checkbox is checked, independent of the
- // preventDefault() call above
- window.setTimeout(() => {
- el.checked = selectedIds.includes(id);
- });
- }} />
+ on:click={handleClick} />
+
+
diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/table.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/table.svelte
index 63a39c64d1..37c2dbcf89 100644
--- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/table.svelte
+++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/table.svelte
@@ -235,7 +235,7 @@
{selectedDb.length}
- {selected.length > 1 ? 'documents' : 'document'} selected
+ {selectedDb.length > 1 ? 'documents' : 'document'} selected
From 64f0e783d7f479c290ce3ec374b52722ad47bb78 Mon Sep 17 00:00:00 2001
From: tglide <26071571+TGlide@users.noreply.github.com>
Date: Wed, 16 Aug 2023 14:18:10 +0100
Subject: [PATCH 09/46] fix floating action bar mobile
---
src/lib/components/floatingActionBar.svelte | 2 ++
.../collection-[collection]/table.svelte | 17 +++++++++++------
.../databases/database-[database]/table.svelte | 17 +++++++++++------
.../project-[project]/databases/table.svelte | 17 +++++++++++------
4 files changed, 35 insertions(+), 18 deletions(-)
diff --git a/src/lib/components/floatingActionBar.svelte b/src/lib/components/floatingActionBar.svelte
index 5f25bad40a..d248df4a24 100644
--- a/src/lib/components/floatingActionBar.svelte
+++ b/src/lib/components/floatingActionBar.svelte
@@ -21,6 +21,8 @@
border-radius: 0.5rem;
padding: 0.75rem 1rem;
+
+ width: clamp(0px, calc(100vw - 4rem), 32.5rem);
}
:global(.theme-dark) .floating-action-bar {
diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/table.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/table.svelte
index 37c2dbcf89..d37ab8bb9c 100644
--- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/table.svelte
+++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/table.svelte
@@ -234,14 +234,21 @@
{selectedDb.length}
-
- {selectedDb.length > 1 ? 'documents' : 'document'} selected
-
+
+
+ {selectedDb.length > 1 ? 'documents' : 'document'}
+
+ selected
+
-
+
@@ -312,8 +319,6 @@
From 5bdc88f3a9fa1f7de370e12ed6e662828c0392c4 Mon Sep 17 00:00:00 2001
From: tglide <26071571+TGlide@users.noreply.github.com>
Date: Fri, 18 Aug 2023 14:05:47 +0100
Subject: [PATCH 29/46] add border to avatars
---
.../console/project-[project]/settings/migrations/+page.svelte | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/routes/console/project-[project]/settings/migrations/+page.svelte b/src/routes/console/project-[project]/settings/migrations/+page.svelte
index 08fadc9693..19f90ab8d3 100644
--- a/src/routes/console/project-[project]/settings/migrations/+page.svelte
+++ b/src/routes/console/project-[project]/settings/migrations/+page.svelte
@@ -184,7 +184,7 @@
{:else}
-
+
-
From 15980227b1228234510d3ed866e814be1bba97ea Mon Sep 17 00:00:00 2001
From: tglide <26071571+TGlide@users.noreply.github.com>
Date: Fri, 18 Aug 2023 14:16:02 +0100
Subject: [PATCH 30/46] migrations loaders
---
.../(migration-wizard)/resource-form.svelte | 64 +++++++++++++------
1 file changed, 43 insertions(+), 21 deletions(-)
diff --git a/src/routes/console/(migration-wizard)/resource-form.svelte b/src/routes/console/(migration-wizard)/resource-form.svelte
index 8a1fd53370..f67f5fc8c0 100644
--- a/src/routes/console/(migration-wizard)/resource-form.svelte
+++ b/src/routes/console/(migration-wizard)/resource-form.svelte
@@ -210,18 +210,22 @@
-
+
{#if resources.includes('user')}
-
-
+
Users
{#if $provider.provider !== 'firebase'}
- {report?.user ?? '...'}
+ {#if report?.user}
+ {report.user}
+ {:else}
+
+ {/if}
{/if}
@@ -234,10 +238,14 @@
type="checkbox"
bind:checked={$formData.users.teams}
on:change={handleInputChange('users.teams')} />
-
+
Include teams
{#if $provider.provider === 'firebase'}
- {report?.team ?? '...'}
+ {#if report?.team}
+ {report.team}
+ {:else}
+
+ {/if}
{/if}
@@ -254,10 +262,14 @@
type="checkbox"
bind:checked={$formData.databases.root}
on:change={handleInputChange('databases.root')} />
-
+
Databases
{#if $provider.provider !== 'firebase'}
- {report?.database ?? '...'}
+ {#if report?.database}
+ {report.database}
+ {:else}
+
+ {/if}
{/if}
@@ -270,10 +282,14 @@
type="checkbox"
bind:checked={$formData.databases.documents}
on:change={handleInputChange('databases.documents')} />
-
+
Include documents
{#if $provider.provider !== 'firebase'}
- {report?.document ?? '...'}
+ {#if report?.document}
+ {report.document}
+ {:else}
+
+ {/if}
{/if}
@@ -290,10 +306,14 @@
type="checkbox"
bind:checked={$formData.functions.root}
on:change={handleInputChange('functions.root')} />
-
+
Functions
{#if $provider.provider !== 'firebase'}
- {report?.function ?? '...'}
+ {#if report?.function}
+ {report.function}
+ {:else}
+
+ {/if}
{/if}
@@ -335,26 +355,28 @@
type="checkbox"
bind:checked={$formData.storage.root}
on:change={handleInputChange('storage.root')} />
-
+
Storage
{#if $provider.provider !== 'firebase'}
-
- {report?.size ? `${report.size.toFixed(2)}MB` : '...'}
-
+ {#if report?.size}
+ {`${report.size.toFixed(2)}MB`}
+ {:else}
+
+ {/if}
{/if}
-
+
Import all buckets
- {#if $provider.provider !== 'firebase'}
- {report?.bucket ?? '...'}
+ {#if $provider.provider !== 'firebase' && report?.bucket}
+ {report.bucket}
{/if}
and files
- {#if $provider.provider !== 'firebase'}
- {report?.file ?? '...'}
+ {#if $provider.provider !== 'firebase' && report?.file}
+ {report.file}
{/if}
-
+
{/if}
From 7069fb2f692e6c9a81857314ab00ce87d22f9b9f Mon Sep 17 00:00:00 2001
From: tglide <26071571+TGlide@users.noreply.github.com>
Date: Fri, 18 Aug 2023 14:22:41 +0100
Subject: [PATCH 31/46] fix wizard title
---
.../settings/migrations/(import)/wizard.svelte | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/routes/console/project-[project]/settings/migrations/(import)/wizard.svelte b/src/routes/console/project-[project]/settings/migrations/(import)/wizard.svelte
index 2207303f00..bf1e37696d 100644
--- a/src/routes/console/project-[project]/settings/migrations/(import)/wizard.svelte
+++ b/src/routes/console/project-[project]/settings/migrations/(import)/wizard.svelte
@@ -103,4 +103,4 @@
});
-
+
From d97c489bb0ab8ab1943c2ef2d181b70f1c2cd8ce Mon Sep 17 00:00:00 2001
From: tglide <26071571+TGlide@users.noreply.github.com>
Date: Fri, 18 Aug 2023 14:24:13 +0100
Subject: [PATCH 32/46] radio button spacing
---
.../project-[project]/settings/migrations/(import)/step1.svelte | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/routes/console/project-[project]/settings/migrations/(import)/step1.svelte b/src/routes/console/project-[project]/settings/migrations/(import)/step1.svelte
index 67540685d5..9e2c412d21 100644
--- a/src/routes/console/project-[project]/settings/migrations/(import)/step1.svelte
+++ b/src/routes/console/project-[project]/settings/migrations/(import)/step1.svelte
@@ -54,7 +54,7 @@
Choose provider
-
+
{#each Object.entries(providers) as [key, value]}
-
{code}
+
{code}
From b44f12e9d50ee44c2b266697c00dbef2128ad370 Mon Sep 17 00:00:00 2001
From: tglide <26071571+TGlide@users.noreply.github.com>
Date: Tue, 22 Aug 2023 11:38:26 +0100
Subject: [PATCH 41/46] fix some check issues
---
src/lib/elements/forms/inputCheckbox.svelte | 2 +-
src/routes/+layout.svelte | 1 +
.../(filters)/content.svelte | 19 -------------------
3 files changed, 2 insertions(+), 20 deletions(-)
diff --git a/src/lib/elements/forms/inputCheckbox.svelte b/src/lib/elements/forms/inputCheckbox.svelte
index 7b9fef8fb3..16cad22f38 100644
--- a/src/lib/elements/forms/inputCheckbox.svelte
+++ b/src/lib/elements/forms/inputCheckbox.svelte
@@ -10,7 +10,7 @@
export let required = false;
export let disabled = false;
- export let element: HTMLInputElement;
+ export let element: HTMLInputElement | undefined = undefined;
let error: string;
const handleInvalid = (event: Event) => {
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 959882dd53..11e75eedd0 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -195,6 +195,7 @@
border-radius: var(--border-radius);
border: var(--border-size) solid transparent;
background: var(--border-gradient) border-box;
+ mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0);
-webkit-mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0);
-webkit-mask-composite: destination-out;
mask-composite: exclude;
diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/(filters)/content.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/(filters)/content.svelte
index 4411957458..799e9e7f43 100644
--- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/(filters)/content.svelte
+++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/(filters)/content.svelte
@@ -161,16 +161,6 @@
From 3b483d14f69e0f3cede715dab21f22a7e5765455 Mon Sep 17 00:00:00 2001
From: tglide <26071571+TGlide@users.noreply.github.com>
Date: Tue, 22 Aug 2023 15:46:08 +0100
Subject: [PATCH 42/46] extract helpers
---
src/lib/helpers/array.ts | 8 +++-
src/lib/helpers/string.ts | 8 ++++
.../project-[project]/overview/+layout.svelte | 37 +++++++------------
.../overview/bandwith.svelte | 4 +-
.../overview/realtime.svelte | 4 +-
.../overview/requests.svelte | 9 +++--
.../settings/migrations/details.svelte | 17 ++++++++-
7 files changed, 53 insertions(+), 34 deletions(-)
diff --git a/src/lib/helpers/array.ts b/src/lib/helpers/array.ts
index 6690dd1dfc..cecf9a9bdd 100644
--- a/src/lib/helpers/array.ts
+++ b/src/lib/helpers/array.ts
@@ -55,7 +55,7 @@ export function empty(arr: unknown[]): boolean {
export function at(array: readonly [], index: number): undefined;
export function at(array: readonly T[], index: number): T;
export function at(array: readonly T[] | [], index: number): T | undefined {
- const len = array.length;
+ const len = array?.length;
if (!len) return undefined;
if (index < 0) index += len;
@@ -96,3 +96,9 @@ export function toggle(arr: T[], elem: T): T[] {
arr.push(elem);
return arr;
}
+
+// TODO: metric type is wrong
+export function total(set: Array): number {
+ if (!set) return 0;
+ return set.reduce((prev, curr) => prev + curr, 0);
+}
diff --git a/src/lib/helpers/string.ts b/src/lib/helpers/string.ts
index b9f99f0450..2ef6ac191e 100644
--- a/src/lib/helpers/string.ts
+++ b/src/lib/helpers/string.ts
@@ -40,3 +40,11 @@ export function camelize(str: string): string {
return firstChar.toLowerCase();
});
}
+
+const formatter = Intl.NumberFormat('en', {
+ notation: 'compact'
+});
+
+export function formatNum(number: number): string {
+ return formatter.format(number);
+}
diff --git a/src/routes/console/project-[project]/overview/+layout.svelte b/src/routes/console/project-[project]/overview/+layout.svelte
index 8c7559701f..de47844ea2 100644
--- a/src/routes/console/project-[project]/overview/+layout.svelte
+++ b/src/routes/console/project-[project]/overview/+layout.svelte
@@ -1,22 +1,7 @@
-
@@ -38,6 +23,8 @@
import Realtime from './realtime.svelte';
import Requests from './requests.svelte';
import { usage } from './store';
+ import { formatNum } from '$lib/helpers/string';
+ import { total } from '$lib/helpers/array';
$: projectId = $page.params.project;
$: path = `/console/project-${projectId}/overview`;
@@ -95,7 +82,7 @@
{:else}
{#if $usage}
- {@const storage = humanFileSize(total($usage.filesStorage) ?? 0)}
+ {@const storage = humanFileSize(totalMetrics($usage.filesStorage) ?? 0)}
@@ -119,14 +106,16 @@
- {format(total($usage.documentsTotal) ?? 0)}
+ {formatNum(totalMetrics($usage.documentsTotal) ?? 0)}
Documents
- Databases: {format(total($usage.databasesTotal) ?? 0)}
+ Databases: {formatNum(
+ totalMetrics($usage.databasesTotal) ?? 0
+ )}
@@ -154,7 +143,7 @@
- Buckets: {format(total($usage.bucketsTotal) ?? 0)}
+ Buckets: {formatNum(totalMetrics($usage.bucketsTotal) ?? 0)}
@@ -174,7 +163,7 @@
- {format(total($usage.usersTotal) ?? 0)}
+ {formatNum(totalMetrics($usage.usersTotal) ?? 0)}
Users
@@ -195,7 +184,7 @@
- {format(total($usage.executionsTotal) ?? 0)}
+ {formatNum(totalMetrics($usage.executionsTotal) ?? 0)}
Executions
diff --git a/src/routes/console/project-[project]/overview/bandwith.svelte b/src/routes/console/project-[project]/overview/bandwith.svelte
index defadb90c3..a8d077c3e4 100644
--- a/src/routes/console/project-[project]/overview/bandwith.svelte
+++ b/src/routes/console/project-[project]/overview/bandwith.svelte
@@ -1,7 +1,7 @@
- {format(current)}
+ {formatNum(current)}
Realtime Connections
{#if total}
diff --git a/src/routes/console/project-[project]/overview/requests.svelte b/src/routes/console/project-[project]/overview/requests.svelte
index b762f22dab..e1efd2d158 100644
--- a/src/routes/console/project-[project]/overview/requests.svelte
+++ b/src/routes/console/project-[project]/overview/requests.svelte
@@ -1,10 +1,11 @@