move enable button to info form

This commit is contained in:
Alex Tran
2025-12-04 20:15:13 +00:00
parent fe931052e5
commit 1c64d21148
6 changed files with 39 additions and 27 deletions

View File

@@ -1509,7 +1509,6 @@
"no_results_description": "Try a synonym or more general keyword",
"no_shared_albums_message": "Create an album to share photos and videos with people in your network",
"no_uploads_in_progress": "No uploads in progress",
"no_workflows_yet": "No workflows yet",
"not_allowed": "Not allowed",
"not_available": "N/A",
"not_in_any_album": "Not in any album",
@@ -2276,6 +2275,7 @@
"workflow_delete_prompt": "Are you sure you want to delete this workflow?",
"workflow_deleted": "Workflow deleted",
"workflow_description": "Workflow description",
"workflow_info": "Workflow info",
"workflow_json": "Workflow JSON",
"workflow_json_help": "Edit the workflow configuration in JSON format. Changes will sync to the visual builder.",
"workflow_name": "Workflow name",

4
pnpm-lock.yaml generated
View File

@@ -718,7 +718,7 @@ importers:
version: link:../open-api/typescript-sdk
'@immich/ui':
specifier: ^0.50.0
version: 0.50.0(@sveltejs/kit@2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.2)))(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.2)))(svelte@5.45.2)
version: 0.50.0(@sveltejs/kit@2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(terser@5.44.0)(yaml@2.8.2)))(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(terser@5.44.0)(yaml@2.8.2)))(svelte@5.45.2)
'@mapbox/mapbox-gl-rtl-text':
specifier: 0.2.3
version: 0.2.3(mapbox-gl@1.13.3)
@@ -15007,7 +15007,7 @@ snapshots:
dependencies:
svelte: 5.45.2
'@immich/ui@0.50.0(@sveltejs/kit@2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.2)))(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.2)))(svelte@5.45.2)':
'@immich/ui@0.50.0(@sveltejs/kit@2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(terser@5.44.0)(yaml@2.8.2)))(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(terser@5.44.0)(yaml@2.8.2)))(svelte@5.45.2)':
dependencies:
'@immich/svelte-markdown-preprocess': 0.1.0(svelte@5.45.2)
'@internationalized/date': 3.10.0

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -24,7 +24,6 @@
let pickerMetadata = $state<AlbumResponseDto | PersonResponseDto | AlbumResponseDto[] | PersonResponseDto[]>();
// Fetch metadata for existing picker values (albums/people)
$effect(() => {
if (!value) {
pickerMetadata = undefined;

View File

@@ -1,6 +1,8 @@
<script lang="ts">
import { goto } from '$app/navigation';
import emptyWorkflows from '$lib/assets/empty-workflows.svg';
import UserPageLayout from '$lib/components/layouts/user-page-layout.svelte';
import EmptyPlaceholder from '$lib/components/shared-components/empty-placeholder.svelte';
import { AppRoute } from '$lib/constants';
import type { WorkflowPayload } from '$lib/services/workflow.service';
import { handleError } from '$lib/utils/handle-error';
@@ -187,17 +189,13 @@
<section class="flex place-content-center sm:mx-4">
<section class="w-full pb-28 sm:w-5/6 md:w-4xl">
{#if workflows.length === 0}
<div class="flex flex-col items-center justify-center gap-4 py-20">
<Icon icon={mdiPlay} size="64" class="text-immich-primary dark:text-immich-dark-primary" />
<h2 class="text-2xl font-semibold">{$t('no_workflows_yet')}</h2>
<p class="text-center text-sm text-muted">
{$t('workflows_help_text')}
</p>
<Button shape="round" color="primary" onclick={handleCreateWorkflow}>
<Icon icon={mdiPlus} size="18" />
{$t('create_first_workflow')}
</Button>
</div>
<EmptyPlaceholder
title={$t('create_first_workflow')}
text={$t('workflows_help_text')}
onClick={handleCreateWorkflow}
src={emptyWorkflows}
class="mt-10 mx-auto"
/>
{:else}
<div class="my-6 grid gap-6">
{#each workflows as workflow (workflow.id)}

View File

@@ -370,19 +370,38 @@
<div class="flex place-items-start gap-3">
<Icon icon={mdiInformationOutline} size="20" class="mt-1" />
<div class="flex flex-col">
<CardTitle>Basic information</CardTitle>
<CardDescription>Describing the workflow</CardDescription>
<CardTitle>
{$t('workflow_info')}
</CardTitle>
</div>
</div>
</CardHeader>
<CardBody>
<VStack gap={6}>
<Field class="text-sm" label={$t('name')} for="workflow-name" required>
<VStack gap={4}>
<div
class="relative overflow-hidden border p-4 w-full rounded-xl"
class:bg-primary-50={editWorkflow.enabled}
>
<Field
label={editWorkflow.enabled ? $t('enabled') : $t('disabled')}
for="workflow-enabled"
color={editWorkflow.enabled ? 'primary' : 'secondary'}
>
<Switch id="workflow-enabled" bind:checked={editWorkflow.enabled} />
</Field>
</div>
<Field label={$t('name')} for="workflow-name" required>
<Input id="workflow-name" placeholder={$t('workflow_name')} bind:value={name} />
</Field>
<Field class="text-sm" label={$t('description')} for="workflow-description">
<Textarea id="workflow-description" placeholder={$t('workflow_description')} bind:value={description} />
<Field label={$t('description')} for="workflow-description">
<Textarea
id="workflow-description"
grow
placeholder={$t('workflow_description')}
bind:value={description}
/>
</Field>
</VStack>
</CardBody>
@@ -559,7 +578,7 @@
<ControlAppBar onClose={() => goto(AppRoute.WORKFLOWS)} backIcon={mdiArrowLeft} tailwindClasses="fixed! top-0! w-full">
{#snippet leading()}
<p>{data.meta.title}</p>
<Text>{data.meta.title}</Text>
{/snippet}
{#snippet trailing()}
@@ -588,11 +607,6 @@
</Button>
</HStack>
<HStack gap={2}>
<Text class="text-sm">{editWorkflow.enabled ? 'ON' : 'OFF'}</Text>
<Switch bind:checked={editWorkflow.enabled} />
</HStack>
<Button leadingIcon={mdiContentSave} size="small" color="primary" onclick={updateWorkflow} disabled={!hasChanges}>
{$t('save')}
</Button>