Merge branch 'feat/vue-widget-toggle-switch' into bl-vue-widget

This commit is contained in:
Benjamin Lu
2025-07-02 02:24:04 -04:00
2 changed files with 34 additions and 3 deletions

View File

@@ -32,19 +32,20 @@ import ToggleSwitch from 'primevue/toggleswitch'
import { computed } from 'vue'
import type { SimplifiedWidget } from '@/types/simplifiedWidget'
import type { WidgetToggleSwitchProps } from '@/types/widgetPropTypes'
import {
STANDARD_EXCLUDED_PROPS,
INPUT_EXCLUDED_PROPS,
filterWidgetProps
} from '@/utils/widgetPropFilter'
const value = defineModel<boolean>({ required: true })
const props = defineProps<{
widget: SimplifiedWidget<boolean>
widget: SimplifiedWidget<boolean, WidgetToggleSwitchProps>
readonly?: boolean
}>()
const filteredProps = computed(() =>
filterWidgetProps(props.widget.options, STANDARD_EXCLUDED_PROPS)
filterWidgetProps(props.widget.options, INPUT_EXCLUDED_PROPS)
)
</script>

View File

@@ -0,0 +1,30 @@
/**
* Type definitions for widget component props
*
* These interfaces define the subset of PrimeVue component props that are exposed
* for the node-based widget system. They exclude props that allow custom styling,
* colors, arbitrary CSS, or could create chaotic interfaces.
*
* Based on the design authority at:
* https://www.figma.com/design/CmhEJxo4oZSuYpqG1Yc39w/Nodes-V3?node-id=441-7806&m=dev
*/
import type { ToggleSwitchProps as PrimeVueToggleSwitchProps } from 'primevue/toggleswitch'
/**
* Widget ToggleSwitch Component
* Excludes: style, class, inputClass, inputStyle, dt, pt, ptOptions, unstyled
*
* These props are excluded from widget.options to prevent external styling overrides.
* The widget component itself can still use these props internally for consistent styling.
*/
export type WidgetToggleSwitchProps = Omit<
PrimeVueToggleSwitchProps,
| 'style'
| 'class'
| 'inputClass'
| 'inputStyle'
| 'dt'
| 'pt'
| 'ptOptions'
| 'unstyled'
>