mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-19 06:20:10 +00:00
## Summary Merges latest changes from `main` as of 10-06-2025. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5965-Merge-main-as-of-10-06-2025-into-rh-test-2856d73d3650812cb95fd8917278a770) by [Unito](https://www.unito.io) --------- Signed-off-by: Marcel Petrick <mail@marcelpetrick.it> Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com> Co-authored-by: Christian Byrne <cbyrne@comfy.org> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Alexander Brown <drjkl@comfy.org> Co-authored-by: Benjamin Lu <benceruleanlu@proton.me> Co-authored-by: Terry Jia <terryjia88@gmail.com> Co-authored-by: snomiao <snomiao@gmail.com> Co-authored-by: Simula_r <18093452+simula-r@users.noreply.github.com> Co-authored-by: Jake Schroeder <jake.schroeder@isophex.com> Co-authored-by: Comfy Org PR Bot <snomiao+comfy-pr@gmail.com> Co-authored-by: AustinMroz <4284322+AustinMroz@users.noreply.github.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: Johnpaul Chiwetelu <49923152+Myestery@users.noreply.github.com> Co-authored-by: Marcel Petrick <mail@marcelpetrick.it> Co-authored-by: Alexander Brown <DrJKL0424@gmail.com> Co-authored-by: Benjamin Lu <benjaminlu1107@gmail.com> Co-authored-by: Alexander Piskun <13381981+bigcat88@users.noreply.github.com> Co-authored-by: Rizumu Ayaka <rizumu@ayaka.moe> Co-authored-by: JakeSchroeder <jake@axiom.co> Co-authored-by: AustinMroz <austin@comfy.org> Co-authored-by: DrJKL <DrJKL@users.noreply.github.com> Co-authored-by: ComfyUI Wiki <contact@comfyui-wiki.com>
89 lines
2.1 KiB
Vue
89 lines
2.1 KiB
Vue
<template>
|
|
<div :class="wrapperStyle" @click="focusInput">
|
|
<i-lucide:search :class="iconColorStyle" />
|
|
<InputText
|
|
ref="input"
|
|
v-model="searchQuery"
|
|
:aria-label="
|
|
placeholder || t('templateWidgets.sort.searchPlaceholder', 'Search...')
|
|
"
|
|
:placeholder="
|
|
placeholder || t('templateWidgets.sort.searchPlaceholder', 'Search...')
|
|
"
|
|
type="text"
|
|
unstyled
|
|
:class="inputStyle"
|
|
/>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import InputText from 'primevue/inputtext'
|
|
import { computed, onMounted, ref } from 'vue'
|
|
|
|
import { t } from '@/i18n'
|
|
import { cn } from '@/utils/tailwindUtil'
|
|
|
|
const {
|
|
autofocus = false,
|
|
placeholder,
|
|
showBorder = false,
|
|
size = 'md'
|
|
} = defineProps<{
|
|
autofocus?: boolean
|
|
placeholder?: string
|
|
showBorder?: boolean
|
|
size?: 'md' | 'lg'
|
|
}>()
|
|
// defineModel without arguments uses 'modelValue' as the prop name
|
|
const searchQuery = defineModel<string>()
|
|
|
|
const input = ref<{ $el: HTMLElement } | null>()
|
|
const focusInput = () => {
|
|
if (input.value && input.value.$el) {
|
|
input.value.$el.focus()
|
|
}
|
|
}
|
|
|
|
onMounted(() => autofocus && focusInput())
|
|
|
|
const wrapperStyle = computed(() => {
|
|
const baseClasses = [
|
|
'relative flex w-full items-center gap-2',
|
|
'bg-white dark-theme:bg-zinc-800',
|
|
'cursor-text'
|
|
]
|
|
|
|
if (showBorder) {
|
|
return cn(
|
|
...baseClasses,
|
|
'rounded p-2',
|
|
'border border-solid',
|
|
'border-zinc-200 dark-theme:border-zinc-700'
|
|
)
|
|
}
|
|
|
|
// Size-specific classes matching button sizes for consistency
|
|
const sizeClasses = {
|
|
md: 'h-8 px-2 py-1.5', // Matches button sm size
|
|
lg: 'h-10 px-4 py-2' // Matches button md size
|
|
}[size]
|
|
|
|
return cn(...baseClasses, 'rounded-lg', sizeClasses)
|
|
})
|
|
|
|
const inputStyle = computed(() => {
|
|
return cn(
|
|
'absolute inset-0 w-full h-full pl-11',
|
|
'border-none outline-none bg-transparent',
|
|
'text-sm text-neutral dark-theme:text-white'
|
|
)
|
|
})
|
|
|
|
const iconColorStyle = computed(() => {
|
|
return cn(
|
|
!showBorder ? 'text-neutral' : ['text-zinc-300', 'dark-theme:text-zinc-700']
|
|
)
|
|
})
|
|
</script>
|