Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0dac38abcc |
No files matched your search
@@ -4,13 +4,13 @@
|
||||
import ChevronRight from "@lucide/svelte/icons/chevron-right";
|
||||
import { Popover } from "bits-ui";
|
||||
import { period } from "#lib/period.svelte.js";
|
||||
import { ui } from "#lib/ui.svelte.js";
|
||||
|
||||
let open = $state(false);
|
||||
let start = $state(period.start);
|
||||
let end = $state(period.end);
|
||||
|
||||
$effect(() => {
|
||||
if (ui.periodOpen) {
|
||||
if (open) {
|
||||
({ start, end } = period);
|
||||
}
|
||||
});
|
||||
@@ -19,7 +19,7 @@
|
||||
event.preventDefault();
|
||||
if (start && end && start <= end) {
|
||||
period.set({ end, start });
|
||||
ui.periodOpen = false;
|
||||
open = false;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -34,7 +34,7 @@
|
||||
>
|
||||
<ChevronLeft class="size-4" />
|
||||
</button>
|
||||
<Popover.Root bind:open={ui.periodOpen}>
|
||||
<Popover.Root bind:open>
|
||||
<Popover.Trigger
|
||||
class="flex h-8 items-center gap-2 px-2 font-medium text-[13px] hover:bg-black/10"
|
||||
title="Choose period"
|
||||
@@ -59,16 +59,11 @@
|
||||
: ""}"
|
||||
onclick={() => {
|
||||
period.set(preset.range);
|
||||
ui.periodOpen = false;
|
||||
open = false;
|
||||
}}
|
||||
type="button"
|
||||
>
|
||||
{preset.label}
|
||||
{#if preset.key || preset.hint}
|
||||
<span class="kbd"
|
||||
>{preset.key ? `p ${preset.key}` : preset.hint}</span
|
||||
>
|
||||
{/if}
|
||||
</button>
|
||||
{/each}
|
||||
</div>
|
||||
@@ -81,7 +76,6 @@
|
||||
Start
|
||||
<input
|
||||
class="cladd-cut cladd-focusable-input h-8 rounded-cladd-sm px-2 text-[13px] text-cladd-fg"
|
||||
id="period-start"
|
||||
type="date"
|
||||
bind:value={start}
|
||||
>
|
||||
|
||||
@@ -36,18 +36,6 @@
|
||||
}
|
||||
});
|
||||
|
||||
function setPreset(key: string | undefined) {
|
||||
const preset = period.presets().find((item) => item.key === key);
|
||||
if (preset) {
|
||||
period.set(preset.range);
|
||||
}
|
||||
}
|
||||
|
||||
function openCustomPeriod() {
|
||||
ui.periodOpen = true;
|
||||
setTimeout(() => document.getElementById("period-start")?.focus(), 50);
|
||||
}
|
||||
|
||||
function openOld(sticky = false) {
|
||||
location.assign(oldUiUrl(page.url.href, sticky));
|
||||
}
|
||||
@@ -160,27 +148,6 @@
|
||||
label: "Current period",
|
||||
run: () => period.reset(),
|
||||
},
|
||||
{
|
||||
group: "Period",
|
||||
keys: "p p",
|
||||
label: "Choose a period",
|
||||
run: () => (ui.periodOpen = true),
|
||||
},
|
||||
{
|
||||
group: "Period",
|
||||
keys: "p c",
|
||||
label: "Custom period: type the dates",
|
||||
run: openCustomPeriod,
|
||||
},
|
||||
...period
|
||||
.presets()
|
||||
.filter((preset) => preset.key)
|
||||
.map((preset) => ({
|
||||
group: "Period",
|
||||
keys: `p ${preset.key}`,
|
||||
label: `Period: ${preset.label}`,
|
||||
run: () => setPreset(preset.key),
|
||||
})),
|
||||
{
|
||||
group: "Global",
|
||||
hidden: true,
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
onclick={() => byCurrency || onmode()}
|
||||
type="button"
|
||||
>
|
||||
By currency<span class="kbd max-sm:hidden">v</span>
|
||||
By currency<span class="kbd max-sm:hidden">p</span>
|
||||
</button>
|
||||
</fieldset>
|
||||
</header>
|
||||
|
||||
@@ -15,8 +15,6 @@ const STORAGE_KEY = "ffui.period";
|
||||
const ISO_DATE = /^\d{4}-\d{2}-\d{2}$/;
|
||||
|
||||
export interface Preset {
|
||||
hint?: string;
|
||||
key?: string;
|
||||
label: string;
|
||||
range: Range;
|
||||
}
|
||||
@@ -115,44 +113,31 @@ class Period {
|
||||
if (!isDynamic(view)) {
|
||||
const prev = shiftPeriod(this.range, view, -1);
|
||||
const next = shiftPeriod(this.range, view, 1);
|
||||
presets.push({ hint: "[", label: periodLabel(prev, view), range: prev });
|
||||
presets.push({ hint: "]", label: periodLabel(next, view), range: next });
|
||||
presets.push({ label: periodLabel(prev, view), range: prev });
|
||||
presets.push({ label: periodLabel(next, view), range: next });
|
||||
}
|
||||
const current = periodOf(now, view);
|
||||
presets.push({
|
||||
key: "t",
|
||||
label: `Today (${periodLabel(current, view)})`,
|
||||
range: current,
|
||||
});
|
||||
presets.push({
|
||||
key: "7",
|
||||
label: "Last seven days",
|
||||
range: { end: now, start: addDays(now, -7) },
|
||||
});
|
||||
presets.push({
|
||||
key: "3",
|
||||
label: "Last thirty days",
|
||||
range: { end: now, start: addDays(now, -30) },
|
||||
});
|
||||
presets.push({
|
||||
key: "m",
|
||||
label: "Month to date",
|
||||
range: periodOf(now, "MTD"),
|
||||
});
|
||||
presets.push({
|
||||
key: "y",
|
||||
label: "Year to date",
|
||||
range: periodOf(now, "YTD"),
|
||||
});
|
||||
presets.push({ label: "Month to date", range: periodOf(now, "MTD") });
|
||||
presets.push({ label: "Year to date", range: periodOf(now, "YTD") });
|
||||
const year = Number(now.slice(0, 4)) - 1;
|
||||
presets.push({
|
||||
key: "l",
|
||||
label: `Previous year (${year})`,
|
||||
range: { end: `${year}-12-31`, start: `${year}-01-01` },
|
||||
});
|
||||
if (this.first) {
|
||||
presets.push({
|
||||
key: "a",
|
||||
label: "Everything",
|
||||
range: { end: now, start: this.first },
|
||||
});
|
||||
|
||||
@@ -11,7 +11,6 @@ class Ui {
|
||||
palette = $state(false);
|
||||
paletteQuery = $state("");
|
||||
quickEntry = $state(false);
|
||||
periodOpen = $state(false);
|
||||
mobileNav = $state(false);
|
||||
collapsed = $state(stored(SIDEBAR_KEY));
|
||||
notes = $state(stored(NOTES_KEY));
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
{
|
||||
group: "Currencies",
|
||||
keys: "P",
|
||||
keys: "p",
|
||||
label: "Make primary currency",
|
||||
run: () => nav.current && makePrimary(nav.current),
|
||||
},
|
||||
@@ -203,7 +203,7 @@
|
||||
</ContextMenuItem>
|
||||
<ContextMenuItem onSelect={() => makePrimary(item)}>
|
||||
Make primary
|
||||
<span class="ml-auto kbd">P</span>
|
||||
<span class="ml-auto kbd">p</span>
|
||||
</ContextMenuItem>
|
||||
<MenuDelete {arm} id={item.id} run={() => remove(item)} />
|
||||
{/if}
|
||||
|
||||
@@ -296,7 +296,7 @@
|
||||
})),
|
||||
{
|
||||
group: "Runway",
|
||||
keys: "v",
|
||||
keys: "p",
|
||||
label: perCurrency ? "Group by card" : "Group by currency",
|
||||
run: toggleMode,
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user