diff --git a/packages/bbui/src/Form/Core/DatePicker.svelte b/packages/bbui/src/Form/Core/DatePicker.svelte index 1a7ab59818..15200e111e 100644 --- a/packages/bbui/src/Form/Core/DatePicker.svelte +++ b/packages/bbui/src/Form/Core/DatePicker.svelte @@ -17,7 +17,7 @@ export let timeOnly = false export let ignoreTimezones = false export let time24hr = false - + export let range = false const dispatch = createEventDispatcher() const flatpickrId = `${uuid()}-wrapper` let open = false @@ -41,6 +41,7 @@ time_24hr: time24hr || false, altFormat: timeOnly ? "H:i" : enableTime ? "F j Y, H:i" : "F j, Y", wrap: true, + mode: range ? "range" : null, appendTo, disableMobile: "true", onReady: () => { @@ -64,9 +65,8 @@ if (newValue) { newValue = newValue.toISOString() } - // If time only set date component to 2000-01-01 - if (timeOnly) { + else if (timeOnly) { // Classic flackpickr causing issues. // When selecting a value for the first time for a "time only" field, // the time is always offset by 1 hour for some reason (regardless of time @@ -95,7 +95,11 @@ .slice(0, -1) } - dispatch("change", newValue) + if (range) { + dispatch("change", event.detail) + } else { + dispatch("change", newValue) + } } const clearDateOnBackspace = event => { @@ -160,7 +164,7 @@ {#key redrawOptions} { - value = e.detail + if (range) { + // Flatpickr cant take two dates and work out what to display, needs to be provided a string. + // Like - "Date1 to Date2". Hence passing in that specifically from the array + value = e?.detail[1] + } else { + value = e.detail + } dispatch("change", e.detail) } @@ -34,6 +40,7 @@ {time24hr} {appendTo} {ignoreTimezones} + {range} on:change={onChange} /> diff --git a/packages/bbui/src/Table/CellRenderer.svelte b/packages/bbui/src/Table/CellRenderer.svelte index 246323244a..5004401d91 100644 --- a/packages/bbui/src/Table/CellRenderer.svelte +++ b/packages/bbui/src/Table/CellRenderer.svelte @@ -56,6 +56,7 @@ {schema} value={cellValue} on:clickrelationship + on:buttonclick > diff --git a/packages/bbui/src/Table/Table.svelte b/packages/bbui/src/Table/Table.svelte index 01a2ca4835..7745c3c407 100644 --- a/packages/bbui/src/Table/Table.svelte +++ b/packages/bbui/src/Table/Table.svelte @@ -387,6 +387,7 @@ schema={schema[field]} value={deepGet(row, field)} on:clickrelationship + on:buttonclick > diff --git a/packages/builder/assets/backups-default.png b/packages/builder/assets/backups-default.png new file mode 100644 index 0000000000..6e37cbb6c7 Binary files /dev/null and b/packages/builder/assets/backups-default.png differ diff --git a/packages/builder/src/components/portal/overview/backups/ActionsRenderer.svelte b/packages/builder/src/components/portal/overview/backups/ActionsRenderer.svelte new file mode 100644 index 0000000000..b9ca38cf72 --- /dev/null +++ b/packages/builder/src/components/portal/overview/backups/ActionsRenderer.svelte @@ -0,0 +1,114 @@ + + +
+ +
+ +
+ + {#if row.type !== "restore"} + Restore + Delete + Download + {/if} + Update +
+
+ + + onClickRestore(name)} /> + + + + Are you sure you wish to delete the backup + {row.name} + This action cannot be undone. + + + + {row.name || "Backup"} + {new Date(row.timestamp).toLocaleString()} + + + + + + + diff --git a/packages/builder/src/components/portal/overview/backups/AppSizeRenderer.svelte b/packages/builder/src/components/portal/overview/backups/AppSizeRenderer.svelte new file mode 100644 index 0000000000..c103399f5b --- /dev/null +++ b/packages/builder/src/components/portal/overview/backups/AppSizeRenderer.svelte @@ -0,0 +1,41 @@ + + +
+ {#if automations != null && screens != null && datasources != null} +
+ +
{datasources || 0}
+
+
+ +
{screens || 0}
+
+
+ +
{automations || 0}
+
+ {/if} +
+ + diff --git a/packages/builder/src/components/portal/overview/backups/BackupsTab.svelte b/packages/builder/src/components/portal/overview/backups/BackupsTab.svelte new file mode 100644 index 0000000000..958ee995c7 --- /dev/null +++ b/packages/builder/src/components/portal/overview/backups/BackupsTab.svelte @@ -0,0 +1,336 @@ + + +
+ {#if !$licensing.backupsEnabled} + + +
+ Backups + + Pro plan + +
+
+ + Backup your apps and restore them to their previous state. + {#if !$auth.accountPortalAccess && !$licensing.groupsEnabled && $admin.cloud} + Contact your account holder to upgrade your plan. + {/if} + +
+ +
+ {#if $auth.accountPortalAccess} + + {/if} + + +
+
+
+ {:else if backupData?.length > 0} + +