mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 06:20:11 +00:00
## Summary Extracts desktop UI into apps/desktop-ui package with minimal changes. ## Changes - **What**: - Separates desktop-specific code into standalone package with independent Vite config, router, and i18n - Drastically simplifies the main app router by removing all desktop routes - Adds a some code duplication, most due to the existing design - Some duplication can be refactored to be *simpler* on either side - no need to split things by `isElectron()` - Rudimentary storybook support has been added - **Breaking**: Stacked PR for publishing must be merged before this PR makes it to stable core (but publishing _could_ be done manually) - #5915 - **Dependencies**: Takes full advantage of pnpm catalog. No additional dependencies added. ## Review Focus - Should be no changes to normal frontend operation - Scripts added to root package.json are acceptable - The duplication in this PR is copied as is, wherever possible. Any corrections or fix-ups beyond the scope of simply migrating the functionality as-is, can be addressed in later PRs. That said, if any changes are made, it instantly becomes more difficult to separate the duplicated code out into a shared utility. - Tracking issue to address concerns: #5925 ### i18n Fixing i18n is out of scope for this PR. It is a larger task that we should consider carefully and implement properly. Attempting to isolate the desktop i18n and duplicate the _current_ localisation scripts would be wasted energy.
53 lines
1.1 KiB
Vue
53 lines
1.1 KiB
Vue
<!--
|
|
A refresh button that disables and shows a progress spinner whilst active.
|
|
|
|
Usage:
|
|
```vue
|
|
<RefreshButton
|
|
v-model="isRefreshing"
|
|
:outlined="false"
|
|
@refresh="refresh"
|
|
/>
|
|
```
|
|
-->
|
|
<template>
|
|
<Button
|
|
class="relative p-button-icon-only"
|
|
:outlined="outlined"
|
|
:severity="severity"
|
|
:disabled="active || disabled"
|
|
@click="(event) => $emit('refresh', event)"
|
|
>
|
|
<span
|
|
class="p-button-icon pi pi-refresh transition-all"
|
|
:class="{ 'opacity-0': active }"
|
|
data-pc-section="icon"
|
|
/>
|
|
<span class="p-button-label" data-pc-section="label"> </span>
|
|
<ProgressSpinner v-show="active" class="absolute w-1/2 h-1/2" />
|
|
</Button>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import Button from 'primevue/button'
|
|
import ProgressSpinner from 'primevue/progressspinner'
|
|
|
|
import type { PrimeVueSeverity } from '@/types/primeVueTypes'
|
|
|
|
const {
|
|
disabled,
|
|
outlined = true,
|
|
severity = 'secondary'
|
|
} = defineProps<{
|
|
disabled?: boolean
|
|
outlined?: boolean
|
|
severity?: PrimeVueSeverity
|
|
}>()
|
|
|
|
// Model
|
|
const active = defineModel<boolean>({ required: true })
|
|
|
|
// Emits
|
|
defineEmits(['refresh'])
|
|
</script>
|