mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-03-12 16:40:05 +00:00
## Summary Adds aria labels to buttons and widgets without pre-existing text labels. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6032-add-aria-labels-on-vue-node-widgets-28a6d73d36508198a1c0ef7098ad24e8) by [Unito](https://www.unito.io)
69 lines
1.6 KiB
Vue
69 lines
1.6 KiB
Vue
<template>
|
|
<WidgetLayoutField :widget="widget">
|
|
<TreeSelect
|
|
v-model="localValue"
|
|
v-bind="combinedProps"
|
|
class="w-full text-xs"
|
|
:aria-label="widget.name"
|
|
size="small"
|
|
@update:model-value="onChange"
|
|
/>
|
|
</WidgetLayoutField>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import TreeSelect from 'primevue/treeselect'
|
|
import { computed } from 'vue'
|
|
|
|
import { useWidgetValue } from '@/composables/graph/useWidgetValue'
|
|
import { useTransformCompatOverlayProps } from '@/composables/useTransformCompatOverlayProps'
|
|
import type { SimplifiedWidget } from '@/types/simplifiedWidget'
|
|
import {
|
|
PANEL_EXCLUDED_PROPS,
|
|
filterWidgetProps
|
|
} from '@/utils/widgetPropFilter'
|
|
|
|
import WidgetLayoutField from './layout/WidgetLayoutField.vue'
|
|
|
|
export type TreeNode = {
|
|
key: string
|
|
label?: string
|
|
data?: unknown
|
|
children?: TreeNode[]
|
|
leaf?: boolean
|
|
selectable?: boolean
|
|
}
|
|
|
|
const props = defineProps<{
|
|
widget: SimplifiedWidget<any>
|
|
modelValue: any
|
|
}>()
|
|
|
|
const emit = defineEmits<{
|
|
'update:modelValue': [value: any]
|
|
}>()
|
|
|
|
// Use the composable for consistent widget value handling
|
|
const { localValue, onChange } = useWidgetValue({
|
|
widget: props.widget,
|
|
modelValue: props.modelValue,
|
|
defaultValue: null,
|
|
emit
|
|
})
|
|
|
|
// Transform compatibility props for overlay positioning
|
|
const transformCompatProps = useTransformCompatOverlayProps()
|
|
|
|
// TreeSelect specific excluded props
|
|
const TREE_SELECT_EXCLUDED_PROPS = [
|
|
...PANEL_EXCLUDED_PROPS,
|
|
'inputClass',
|
|
'inputStyle'
|
|
] as const
|
|
|
|
const combinedProps = computed(() => ({
|
|
...filterWidgetProps(props.widget.options, TREE_SELECT_EXCLUDED_PROPS),
|
|
...transformCompatProps.value
|
|
}))
|
|
</script>
|