Making things prettier:

npx prettier --write src/routes/journals/
This commit is contained in:
Scott Idem
2026-05-05 17:27:48 -04:00
parent 8b087edeb9
commit 62cc26d1f9
16 changed files with 142 additions and 106 deletions

View File

@@ -246,7 +246,7 @@ async function create_journal() {
{#if $journals_sess.show__modal__journals_config}
<AE_Comp_Modal_Journal_Config
bind:show={$journals_sess.show__modal__journals_config} />
bind:show={$journals_sess.show__modal__journals_config} />
{/if}
<AE_Comp_Modal_Journal_Import

View File

@@ -83,11 +83,11 @@ $effect(() => {
class="
ae_journals__journal
mx-auto
flex w-full max-w-none min-w-0
flex min-h-0 w-full max-w-none
min-w-0
flex-col
items-stretch
gap-1
min-h-0
space-y-2
">
<div
@@ -197,12 +197,7 @@ Middle-click to open in new tab`}>
.length}&times; Recent Entries...
</option>
<!-- loop through each key value -->
{#each Object.entries(
$journals_loc.entry_view_history_kv as Record<
string,
{ id: string; name: string; url: string }
>
).reverse() as [journal_entry_id, journal_entry_obj] (journal_entry_id)}
{#each Object.entries($journals_loc.entry_view_history_kv as Record<string, { id: string; name: string; url: string }>).reverse() as [journal_entry_id, journal_entry_obj] (journal_entry_id)}
<option value={journal_entry_obj.id}>
{(journal_entry_obj?.name ||
journal_entry_obj?.id) ??
@@ -237,7 +232,9 @@ Middle-click to open in new tab`}>
</a>
{:else}
<!-- Edit Journal button. Creates a modal to edit the journal. -->
<Journal_entry_obj_qry {log_lvl} lq__journal_obj={$lq__journal_obj} />
<Journal_entry_obj_qry
{log_lvl}
lq__journal_obj={$lq__journal_obj} />
{/if}
<!-- Add default journal entry -->

View File

@@ -114,7 +114,10 @@ let lq__journal_entry_obj_li = $derived(
const journal_id = $lq__journal_obj?.journal_id;
return liveQuery(async () => {
if (params.remote_first && (!Array.isArray(ids) || ids.length === 0)) {
if (
params.remote_first &&
(!Array.isArray(ids) || ids.length === 0)
) {
return null;
}
@@ -258,14 +261,11 @@ async function handle_search_refresh(params: JournalSearchParams) {
const api_ids = api_results
.map((entry) => entry.id || entry.journal_entry_id)
.filter((entry): entry is string => Boolean(entry));
const display_ids = !qry_str && local_ids.length > 0 ? local_ids : api_ids;
const display_ids =
!qry_str && local_ids.length > 0 ? local_ids : api_ids;
// Protect UI cache if API returns empty during revalidation
if (
!qry_str &&
local_ids.length > 0 &&
api_ids.length === 0
) {
if (!qry_str && local_ids.length > 0 && api_ids.length === 0) {
untrack(() => {
$journals_sess.entry.qry__status = 'done';
});

View File

@@ -278,8 +278,8 @@ $effect(() => {
flex-col
items-stretch
gap-1
px-2 md:px-4
space-y-2
space-y-2 px-2
md:px-4
">
<!-- {#if $lq__journal_entry_obj} -->
<Journal_entry_view

View File

@@ -18,7 +18,8 @@ let { content, summary = $bindable(), on_save, log_lvl = 0 }: Props = $props();
</script>
<div class="journal-entry-floating-actions absolute top-14 right-2 z-10">
<div class="journal-entry-ai-tools inline-flex flex-wrap items-center justify-end gap-1">
<div
class="journal-entry-ai-tools inline-flex flex-wrap items-center justify-end gap-1">
<AE_AITools
{content}
model={$journals_loc.llm__api_model}

View File

@@ -39,7 +39,9 @@ let {
const is_editing = $derived(
$journals_loc.entry.edit_kv[entry.journal_entry_id] === 'current'
);
const preferred_viewer = $derived((journal?.cfg_json?.pref_viewer ?? 'rendered').toLowerCase());
const preferred_viewer = $derived(
(journal?.cfg_json?.pref_viewer ?? 'rendered').toLowerCase()
);
</script>
<div
@@ -58,7 +60,7 @@ const preferred_viewer = $derived((journal?.cfg_json?.pref_viewer ?? 'rendered')
class_li="w-full rounded-lg bg-surface-50 shadow-lg dark:bg-surface-800" />
{:else if preferred_viewer === 'plain'}
<div
class="bg-surface-50 dark:bg-surface-800 text-surface-800 dark:text-surface-100 w-full rounded-lg border border-gray-200 p-4 font-mono text-sm whitespace-pre-wrap wrap-break-word shadow-lg dark:border-gray-700">
class="bg-surface-50 dark:bg-surface-800 text-surface-800 dark:text-surface-100 w-full rounded-lg border border-gray-200 p-4 font-mono text-sm wrap-break-word whitespace-pre-wrap shadow-lg dark:border-gray-700">
{tmp_entry_obj?.content || ''}
</div>
{:else}
@@ -114,7 +116,7 @@ const preferred_viewer = $derived((journal?.cfg_json?.pref_viewer ?? 'rendered')
{:else}
<textarea
bind:value={tmp_entry_obj.content}
class="textarea h-125 w-full grow rounded-lg border-orange-500/30 p-4 font-mono whitespace-pre-wrap wrap-break-word shadow-lg"
class="textarea h-125 w-full grow rounded-lg border-orange-500/30 p-4 font-mono wrap-break-word whitespace-pre-wrap shadow-lg"
placeholder="Edit content..."></textarea>
{/if}

View File

@@ -100,11 +100,12 @@ function toggle_edit_mode() {
<input
type="text"
bind:value={tmp_entry_obj.name}
class="input input-sm h-10 min-w-0 flex-1 border-none bg-transparent text-lg font-bold leading-none transition-colors duration-150 focus:ring-2 focus:ring-primary-500"
class="input input-sm focus:ring-primary-500 h-10 min-w-0 flex-1 border-none bg-transparent text-lg leading-none font-bold transition-colors duration-150 focus:ring-2"
placeholder="Entry Title..."
onchange={on_save} />
{:else}
<h2 class="flex h-10 min-w-0 flex-1 items-center truncate text-base font-bold leading-none md:text-lg">
<h2
class="flex h-10 min-w-0 flex-1 items-center truncate text-base leading-none font-bold md:text-lg">
{entry.name ||
ae_util.iso_datetime_formatter(
entry.created_on,
@@ -115,14 +116,16 @@ function toggle_edit_mode() {
</div>
</div>
<div class="ml-auto flex shrink-0 items-center gap-2 whitespace-nowrap transition-colors duration-150">
<div
class="ml-auto flex shrink-0 items-center gap-2 whitespace-nowrap transition-colors duration-150">
<!-- Auto-Save indicator -->
{#if $journals_loc.entry.edit_kv[entry.journal_entry_id] === 'current'}
<div
class="border-surface-500/20 mr-1 flex items-center gap-1 border-r px-2">
<button
type="button"
class="btn-icon btn-icon-sm transition-colors duration-150 {$journals_loc.entry.auto_save
class="btn-icon btn-icon-sm transition-colors duration-150 {$journals_loc
.entry.auto_save
? 'text-primary-500'
: 'opacity-30'}"
onclick={() =>

View File

@@ -231,7 +231,8 @@ async function handle_remove_file(file_id: string) {
file.hosted_file_id || file.id || file.hosted_file_id}
<div
class="bg-surface-50-950 border-surface-500/10 group hover:border-primary-500 flex items-center justify-between rounded-xl border p-3 shadow-sm transition-all">
<div class="flex grow items-center gap-3 overflow-hidden">
<div
class="flex grow items-center gap-3 overflow-hidden">
<AE_Comp_Hosted_Files_Download_Button
hosted_file_id={file_id}
hosted_file_obj={file}
@@ -281,7 +282,9 @@ async function handle_remove_file(file_id: string) {
<FileUp size="1.8em" />
</div>
<div class="text-center">
<p class="font-bold">Upload new attachment</p>
<p class="font-bold">
Upload new attachment
</p>
<p class="text-xs opacity-60">
Drag and drop or click to browse
</p>

View File

@@ -438,9 +438,9 @@ let modal_mode: 'append' | 'prepend' | 'auto' = $state('auto');
group-hover/entry-view:opacity-15 dark:opacity-10 dark:group-hover/entry-view:opacity-20">
</div>
<section
class="ae_view relative flex w-full min-w-0 flex-col gap-4 rounded-xl
border border-surface-200-800
bg-surface-50-900 p-2 shadow-xl"
class="ae_view border-surface-200-800 bg-surface-50-900 relative flex w-full min-w-0 flex-col
gap-4 rounded-xl
border p-2 shadow-xl"
bind:clientHeight={$ae_loc.iframe_height_modal_body}>
{#if $lq__journal_entry_obj && $lq__journal_obj}
<AE_Comp_Journal_Entry_Header
@@ -459,7 +459,8 @@ let modal_mode: 'append' | 'prepend' | 'auto' = $state('auto');
{#if decryption_error}
<div
class="bg-error-100 border-error-300 flex w-full animate-bounce items-center justify-between rounded-lg border p-4 shadow-xl">
<div class="text-error-700 flex items-center gap-4 font-bold">
<div
class="text-error-700 flex items-center gap-4 font-bold">
<CircleAlert size="2.5em" />
<span class="text-xl">{decryption_error}</span>
</div>
@@ -474,19 +475,17 @@ let modal_mode: 'append' | 'prepend' | 'auto' = $state('auto');
<!-- ring-2 inset indicates "edit mode" in both light and dark without a background swap -->
<section
class="relative grow overflow-hidden rounded-xl border border-surface-200-800
bg-surface-100-900 p-2 shadow-md min-w-0
class="border-surface-200-800 bg-surface-100-900 relative min-w-0 grow overflow-hidden
rounded-xl border p-2 shadow-md
{$journals_loc.entry.edit_kv[
$lq__journal_entry_obj?.journal_entry_id
] == 'current'
? 'ring-primary-500/40 ring-2 ring-inset'
: ''}">
<AE_Comp_Journal_Entry_AiTools
content={
typeof tmp_entry_obj.content === 'string'
? tmp_entry_obj.content
: ''
}
content={typeof tmp_entry_obj.content === 'string'
? tmp_entry_obj.content
: ''}
bind:summary={tmp_entry_obj.summary}
on_save={() => update_journal_entry()}
{log_lvl} />
@@ -509,8 +508,9 @@ let modal_mode: 'append' | 'prepend' | 'auto' = $state('auto');
{lq__journal_entry_obj} />
<div
class="rounded-xl border border-surface-200-800 bg-surface-100-900 p-3 shadow-sm">
<AE_Comp_Journal_Entry_Metadata entry={$lq__journal_entry_obj} />
class="border-surface-200-800 bg-surface-100-900 rounded-xl border p-3 shadow-sm">
<AE_Comp_Journal_Entry_Metadata
entry={$lq__journal_entry_obj} />
</div>
</div>

View File

@@ -107,9 +107,7 @@ let visible_journal_entry_obj_li = $derived(
</div>
<section
class="journal_list relative flex w-full flex-col items-center justify-center gap-1 md:gap-2">
{#if visible_journal_entry_obj_li === null ||
($journals_sess.entry.qry__status === 'loading' &&
visible_journal_entry_obj_li.length === 0)}
{#if visible_journal_entry_obj_li === null || ($journals_sess.entry.qry__status === 'loading' && visible_journal_entry_obj_li.length === 0)}
<!-- Loading state -->
<div
class="flex flex-col items-center justify-center p-10 opacity-50">

View File

@@ -16,14 +16,9 @@ interface Props {
let { log_lvl = $bindable(0), lq__journal_obj }: Props = $props();
import {
Library,
RemoveFormatting
} from '@lucide/svelte';
import { Library, RemoveFormatting } from '@lucide/svelte';
import {
ae_loc,
} from '$lib/stores/ae_stores';
import { ae_loc } from '$lib/stores/ae_stores';
import {
journals_loc,
journals_sess
@@ -127,10 +122,13 @@ function prevent_default<T extends Event>(fn: (event: T) => void) {
{#if $ae_loc.edit_mode && ($ae_loc.manager_access || $ae_loc.trusted_access)}
<span class="flex flex-row flex-wrap items-center gap-2">
<span class="hidden text-sm text-gray-500 lg:inline"> Filters: </span>
<span class="hidden text-sm text-gray-500 lg:inline">
Filters:
</span>
{#if $ae_loc.manager_access}
<label class="flex flex-row items-center gap-1 text-xs font-semibold text-gray-500">
<label
class="flex flex-row items-center gap-1 text-xs font-semibold text-gray-500">
<span>Enabled</span>
<select
class="select select-sm"
@@ -145,7 +143,8 @@ function prevent_default<T extends Event>(fn: (event: T) => void) {
{/if}
{#if $ae_loc.trusted_access}
<label class="flex flex-row items-center gap-1 text-xs font-semibold text-gray-500">
<label
class="flex flex-row items-center gap-1 text-xs font-semibold text-gray-500">
<span>Hidden</span>
<select
class="select select-sm"

View File

@@ -312,7 +312,7 @@ async function delete_journal() {
{/each}
</select>
</label>
<label class="label flex flex-col items-start gap-1">
<label class="label flex flex-col items-start gap-1">
<span class="text-sm font-bold opacity-70"
>Journal Group (text)</span>
<input

View File

@@ -236,7 +236,6 @@ async function handle_new_entry() {
{/if}
</div>
</header>
</section>
</div>

View File

@@ -41,12 +41,17 @@ let tmp_config: key_val = $state({
entry: {}
});
const panel_class = 'space-y-4 rounded-xl border border-surface-500/20 bg-surface-500/5 p-4 shadow-sm';
const panel_title_class = 'flex items-center gap-2 border-b border-surface-500/20 pb-2 text-lg font-bold';
const field_card_class = 'bg-surface-500/5 border-surface-500/10 flex cursor-pointer items-center space-x-3 rounded-lg border p-3 transition-colors hover:bg-surface-500/10';
const panel_class =
'space-y-4 rounded-xl border border-surface-500/20 bg-surface-500/5 p-4 shadow-sm';
const panel_title_class =
'flex items-center gap-2 border-b border-surface-500/20 pb-2 text-lg font-bold';
const field_card_class =
'bg-surface-500/5 border-surface-500/10 flex cursor-pointer items-center space-x-3 rounded-lg border p-3 transition-colors hover:bg-surface-500/10';
const tab_button_base_class = 'btn btn-sm border transition-all duration-200';
const tab_button_active_class = 'border-surface-200-800 bg-surface-200-800 text-surface-950-50 shadow-sm';
const tab_button_inactive_class = 'border-transparent bg-surface-50-900/60 text-surface-600-400 hover:border-surface-200-800 hover:bg-surface-100-900 hover:text-surface-950-50';
const tab_button_active_class =
'border-surface-200-800 bg-surface-200-800 text-surface-950-50 shadow-sm';
const tab_button_inactive_class =
'border-transparent bg-surface-50-900/60 text-surface-600-400 hover:border-surface-200-800 hover:bg-surface-100-900 hover:text-surface-950-50';
function tab_button_class(is_active: boolean): string {
return `${tab_button_base_class} ${is_active ? tab_button_active_class : tab_button_inactive_class}`;
@@ -75,7 +80,7 @@ function handle_save() {
dismissable={false}
placement="top-center"
size="xl"
class="relative mx-auto flex h-[calc(100dvh-2rem)] max-h-[calc(100dvh-2rem)] w-full flex-col rounded-xl border border-surface-200-800 bg-surface-50-900 text-surface-950-50 shadow-xl"
class="border-surface-200-800 bg-surface-50-900 text-surface-950-50 relative mx-auto flex h-[calc(100dvh-2rem)] max-h-[calc(100dvh-2rem)] w-full flex-col rounded-xl border shadow-xl"
headerClass="flex w-full flex-row items-center justify-between gap-2 rounded-t-xl border-b border-surface-200-800 bg-surface-100-900 p-4"
footerClass="flex w-full flex-row items-center justify-center gap-2 rounded-b-xl border-t border-surface-200-800 bg-surface-100-900 p-4">
{#snippet header()}
@@ -306,7 +311,8 @@ function handle_save() {
<ShieldCheck size="1.2em" class="text-primary-500" />
Security & Encryption
</h2>
<div class="space-y-4 rounded-lg border border-surface-500/10 bg-surface-500/5 p-4">
<div
class="border-surface-500/10 bg-surface-500/5 space-y-4 rounded-lg border p-4">
<div class="text-sm italic opacity-80">
Global security overrides for the journal module.
</div>
@@ -329,7 +335,8 @@ function handle_save() {
<CircleAlert size="1.2em" class="text-primary-500" />
Alerts & Messaging
</h2>
<div class="space-y-4 rounded-xl border border-surface-500/10 bg-surface-500/5 p-4">
<div
class="border-surface-500/10 bg-surface-500/5 space-y-4 rounded-xl border p-4">
<label class="label flex flex-col items-start gap-1">
<span class="text-sm font-bold opacity-70"
>Alert Message</span>
@@ -362,7 +369,8 @@ function handle_save() {
<Settings size="1.2em" class="text-primary-500" />
Admin
</h2>
<div class="space-y-4 rounded-xl border border-surface-500/10 bg-surface-500/5 p-4">
<div
class="border-surface-500/10 bg-surface-500/5 space-y-4 rounded-xl border p-4">
<label class="label flex flex-col items-start gap-1">
<span class="text-sm font-bold opacity-70"
>Notes</span>
@@ -414,7 +422,8 @@ function handle_save() {
</div>
</label>
<label class="bg-surface-500/5 border-surface-500/10 flex items-center justify-between rounded-lg border p-3">
<label
class="bg-surface-500/5 border-surface-500/10 flex items-center justify-between rounded-lg border p-3">
<div class="flex flex-col">
<span class="text-sm font-bold"
>Sort Order</span>
@@ -429,12 +438,13 @@ function handle_save() {
</label>
</div>
<div class="rounded-xl border border-surface-500/10 bg-surface-500/5 p-4">
<p class="text-xs italic opacity-70">
Admin changes apply to the journal module state
and are saved with the rest of this config.
</p>
</div>
<div
class="border-surface-500/10 bg-surface-500/5 rounded-xl border p-4">
<p class="text-xs italic opacity-70">
Admin changes apply to the journal module state
and are saved with the rest of this config.
</p>
</div>
</div>
</section>
</div>

View File

@@ -27,10 +27,7 @@ import { ae_loc, ae_api } from '$lib/stores/ae_stores';
import { journals_func } from '$lib/ae_journals/ae_journals_functions';
import AE_Comp_Editor_CodeMirror from '$lib/elements/element_editor_codemirror.svelte';
import AE_Object_Flags from '$lib/ae_elements/AE_Object_Flags.svelte';
import type {
ae_Journal,
ae_JournalEntryDraft
} from '$lib/types/ae_types';
import type { ae_Journal, ae_JournalEntryDraft } from '$lib/types/ae_types';
interface Props {
log_lvl?: number;
@@ -64,12 +61,17 @@ const normalize_date = (val?: string | Date | null) => {
return val.slice(0, 16);
};
const panel_class = 'space-y-4 rounded-xl border border-surface-500/20 bg-surface-500/5 p-4 shadow-sm';
const panel_title_class = 'flex items-center gap-2 border-b border-surface-500/20 pb-2 text-lg font-bold';
const field_card_class = 'bg-surface-500/5 border-surface-500/10 flex cursor-pointer items-center space-x-3 rounded-lg border p-3 transition-colors hover:bg-surface-500/10';
const panel_class =
'space-y-4 rounded-xl border border-surface-500/20 bg-surface-500/5 p-4 shadow-sm';
const panel_title_class =
'flex items-center gap-2 border-b border-surface-500/20 pb-2 text-lg font-bold';
const field_card_class =
'bg-surface-500/5 border-surface-500/10 flex cursor-pointer items-center space-x-3 rounded-lg border p-3 transition-colors hover:bg-surface-500/10';
const tab_button_base_class = 'btn btn-sm border transition-all duration-200';
const tab_button_active_class = 'border-surface-200-800 bg-surface-200-800 text-surface-950-50 shadow-sm';
const tab_button_inactive_class = 'border-transparent bg-surface-50-900/60 text-surface-600-400 hover:border-surface-200-800 hover:bg-surface-100-900 hover:text-surface-950-50';
const tab_button_active_class =
'border-surface-200-800 bg-surface-200-800 text-surface-950-50 shadow-sm';
const tab_button_inactive_class =
'border-transparent bg-surface-50-900/60 text-surface-600-400 hover:border-surface-200-800 hover:bg-surface-100-900 hover:text-surface-950-50';
function tab_button_class(is_active: boolean): string {
return `${tab_button_base_class} ${is_active ? tab_button_active_class : tab_button_inactive_class}`;
@@ -134,7 +136,11 @@ async function handle_admin_delete_action() {
return;
}
if (!confirm(`Are you sure you want to ${confirm_label} this journal entry?`)) {
if (
!confirm(
`Are you sure you want to ${confirm_label} this journal entry?`
)
) {
return;
}
@@ -149,7 +155,10 @@ async function handle_admin_delete_action() {
show = false;
await goto(`/journals/${tmp_entry_obj.journal_id}`);
} catch (error) {
console.error(`Error attempting to ${action_label} journal entry:`, error);
console.error(
`Error attempting to ${action_label} journal entry:`,
error
);
alert(`Failed to ${action_label} journal entry.`);
}
}
@@ -161,7 +170,7 @@ async function handle_admin_delete_action() {
dismissable={false}
placement="top-center"
size="lg"
class="relative mx-auto flex h-[calc(100dvh-2rem)] max-h-[calc(100dvh-2rem)] w-full flex-col rounded-xl border border-surface-200-800 bg-surface-50-900 text-surface-950-50 shadow-xl"
class="border-surface-200-800 bg-surface-50-900 text-surface-950-50 relative mx-auto flex h-[calc(100dvh-2rem)] max-h-[calc(100dvh-2rem)] w-full flex-col rounded-xl border shadow-xl"
headerClass="flex w-full flex-row items-center justify-between gap-2 rounded-t-xl border-b border-surface-200-800 bg-surface-100-900 p-4"
footerClass="mt-auto flex w-full shrink-0 flex-row items-center justify-center gap-2 rounded-b-xl border-t border-surface-200-800 bg-surface-100-900 p-4">
{#snippet header()}
@@ -383,7 +392,8 @@ async function handle_admin_delete_action() {
</h2>
<div class="grid grid-cols-1 gap-4 md:grid-cols-2">
{#if tmp_entry_obj.alert}
<label class="label md:col-span-2 flex flex-col items-start gap-1">
<label
class="label flex flex-col items-start gap-1 md:col-span-2">
<span class="text-sm font-bold opacity-70"
>Alert Message</span>
<textarea
@@ -434,9 +444,11 @@ async function handle_admin_delete_action() {
</div>
</label>
<label class="bg-surface-500/5 border-surface-500/10 flex items-center justify-between rounded-lg border p-3">
<label
class="bg-surface-500/5 border-surface-500/10 flex items-center justify-between rounded-lg border p-3">
<div class="flex flex-col">
<span class="text-sm font-bold">Sort Order</span>
<span class="text-sm font-bold"
>Sort Order</span>
<span class="text-xs opacity-60">
Lower numbers appear earlier in lists.
</span>
@@ -468,10 +480,13 @@ async function handle_admin_delete_action() {
<section class={panel_class}>
<h2 class={panel_title_class}>
<FingerprintPattern size="1.2em" class="text-primary-500" />
<FingerprintPattern
size="1.2em"
class="text-primary-500" />
Security and Privacy
</h2>
<div class="space-y-4 rounded-xl border border-surface-500/10 bg-surface-500/5 p-4">
<div
class="border-surface-500/10 bg-surface-500/5 space-y-4 rounded-xl border p-4">
<label class="label flex flex-col items-start gap-1">
<span class="text-sm font-bold opacity-70"
>Passcode</span>
@@ -490,7 +505,8 @@ async function handle_admin_delete_action() {
</label>
<div class="space-y-2">
<p class="text-xs font-semibold uppercase tracking-wider opacity-60">
<p
class="text-xs font-semibold tracking-wider uppercase opacity-60">
Visibility and audience
</p>
<AE_Object_Flags
@@ -501,9 +517,11 @@ async function handle_admin_delete_action() {
on_save();
}}
hide_alert={true}
hide_private={journal?.cfg_json?.hide_btn_private}
hide_private={journal?.cfg_json
?.hide_btn_private}
hide_public={journal?.cfg_json?.hide_btn_public}
hide_personal={journal?.cfg_json?.hide_btn_personal}
hide_personal={journal?.cfg_json
?.hide_btn_personal}
hide_professional={journal?.cfg_json
?.hide_btn_professional}
hide_template={true} />
@@ -536,19 +554,24 @@ async function handle_admin_delete_action() {
</section>
{/if}
<details class="rounded-xl border border-surface-500/20 bg-surface-500/5 shadow-sm">
<summary class="flex cursor-pointer items-center gap-2 border-b border-surface-500/20 px-4 py-3 text-lg font-bold">
<details
class="border-surface-500/20 bg-surface-500/5 rounded-xl border shadow-sm">
<summary
class="border-surface-500/20 flex cursor-pointer items-center gap-2 border-b px-4 py-3 text-lg font-bold">
<Settings size="1.2em" class="text-primary-500" />
Admin
</summary>
<div class="space-y-4 p-4">
<p class="text-xs opacity-60">
Trusted access and above only. Notes are for staff use; managers and admins see Delete while trusted access sees Remove.
Trusted access and above only. Notes are for staff
use; managers and admins see Delete while trusted
access sees Remove.
</p>
<div class="grid grid-cols-1 gap-4">
<label class="label">
<span class="text-sm font-bold opacity-70">Notes</span>
<span class="text-sm font-bold opacity-70"
>Notes</span>
<textarea
bind:value={tmp_entry_obj.notes}
class="textarea min-h-24"
@@ -572,15 +595,21 @@ async function handle_admin_delete_action() {
<div class="flex flex-col">
<span class="font-bold">Enabled</span>
<span class="text-xs opacity-60">
Allow default access for AE object type; essentially marked for deletion.
Allow default access for AE object
type; essentially marked for
deletion.
</span>
</div>
</label>
<button
type="button"
class="btn btn-sm mx-auto inline-flex w-fit min-w-36 justify-center gap-2 px-4 font-bold {($ae_loc.manager_access || $ae_loc.administrator_access) ? 'preset-tonal-error hover:preset-filled-error-500' : 'preset-tonal-warning hover:preset-filled-warning-500'}"
title={($ae_loc.manager_access || $ae_loc.administrator_access)
class="btn btn-sm mx-auto inline-flex w-fit min-w-36 justify-center gap-2 px-4 font-bold {$ae_loc.manager_access ||
$ae_loc.administrator_access
? 'preset-tonal-error hover:preset-filled-error-500'
: 'preset-tonal-warning hover:preset-filled-warning-500'}"
title={$ae_loc.manager_access ||
$ae_loc.administrator_access
? 'Permanently delete this journal entry'
: 'Disable this journal entry instead of deleting it'}
onclick={handle_admin_delete_action}>

View File

@@ -54,12 +54,7 @@ describe('Journal Entry Search Filtering', () => {
});
expect(result?.length).toBe(4);
expect(result?.map((entry) => entry.id)).toEqual([
'4',
'3',
'2',
'1'
]);
expect(result?.map((entry) => entry.id)).toEqual(['4', '3', '2', '1']);
});
it('should filter by enabled and hidden status', () => {