diff --git a/assets/js/components/Config/ChargerModal.vue b/assets/js/components/Config/ChargerModal.vue index 10f006be8..f1a0f1c60 100644 --- a/assets/js/components/Config/ChargerModal.vue +++ b/assets/js/components/Config/ChargerModal.vue @@ -266,11 +266,10 @@ export default defineComponent({ isTypeDeprecated(type: ConfigType): boolean { return type === ConfigType.SgReadyBoost; }, - handleTemplateChange(e: Event, values: DeviceValues) { - const value = (e.target as HTMLSelectElement).value as ConfigType; - if (this.isYamlInput(value)) { - values.type = value; - values.yaml = this.defaultYaml(value); + handleTemplateChange(value: string, values: DeviceValues) { + if (this.isYamlInput(value as ConfigType)) { + values.type = value as ConfigType; + values.yaml = this.defaultYaml(value as ConfigType); } }, applyCustomDefaults(template: Template | null, values: DeviceValues) { diff --git a/assets/js/components/Config/DeviceModal/DeviceModalBase.vue b/assets/js/components/Config/DeviceModal/DeviceModalBase.vue index cac396875..246c34042 100644 --- a/assets/js/components/Config/DeviceModal/DeviceModalBase.vue +++ b/assets/js/components/Config/DeviceModal/DeviceModalBase.vue @@ -293,8 +293,8 @@ export default defineComponent({ isTypeDeprecated: Function as PropType<(type: ConfigType) => boolean>, // Optional: provide template options from parent (to avoid circular dependency) provideTemplateOptions: Function as PropType<(products: Product[]) => TemplateGroup[]>, - // Optional: handle template change (receives event and values, allows setting values.yaml) - onTemplateChange: Function as PropType<(e: Event, values: DeviceValues) => void>, + // Optional: handle template change (receives selected value and values, allows setting values.yaml) + onTemplateChange: Function as PropType<(value: string, values: DeviceValues) => void>, // Optional: default template to select when opening modal for new devices defaultTemplate: String, // Optional: callback after configuration is loaded (receives values) @@ -829,11 +829,11 @@ export default defineComponent({ this.$emit("close"); this.isModalVisible = false; }, - handleTemplateChange(e: Event) { + handleTemplateChange(value: string | null) { // ensure this triggers after tempateName watcher this.$nextTick(() => { - if (this.onTemplateChange) { - this.onTemplateChange(e, this.values); + if (this.onTemplateChange && value !== null) { + this.onTemplateChange(value, this.values); } }); }, diff --git a/assets/js/components/Config/DeviceModal/TemplateSelector.vue b/assets/js/components/Config/DeviceModal/TemplateSelector.vue index f75dc376e..fabf3a241 100644 --- a/assets/js/components/Config/DeviceModal/TemplateSelector.vue +++ b/assets/js/components/Config/DeviceModal/TemplateSelector.vue @@ -3,22 +3,16 @@