From 67119cd9f63e10dccfba778029ce3d4e0d79b870 Mon Sep 17 00:00:00 2001
From: Michael Bauer <michael-bauer@posteo.de>
Date: Fri, 16 Feb 2024 12:12:56 +0100
Subject: [PATCH] Handle change in PositiveSmallIntegerField

v-text-field emits 'change' with changed value on focus out.
If someone listenes to 'change' on PositiveSmallIntegerField he
received a string not an integer. This fixes it.
---
 .../forms/PositiveSmallIntegerField.vue       | 21 +++++++++++--------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/aleksis/core/frontend/components/generic/forms/PositiveSmallIntegerField.vue b/aleksis/core/frontend/components/generic/forms/PositiveSmallIntegerField.vue
index 5deaab572..c28c778ea 100644
--- a/aleksis/core/frontend/components/generic/forms/PositiveSmallIntegerField.vue
+++ b/aleksis/core/frontend/components/generic/forms/PositiveSmallIntegerField.vue
@@ -12,14 +12,6 @@
 export default {
   name: "PositiveSmallIntegerField",
   extends: "v-text-field",
-  methods: {
-    handleInput(event) {
-      let num = parseInt(event);
-      if (!isNaN(num) && num >= 0 && num <= 32767 && num % 1 === 0) {
-        this.$emit("input", parseInt(event));
-      }
-    },
-  },
   data() {
     return {
       rules: [
@@ -46,7 +38,18 @@ export default {
     on() {
       return {
         ...this.$listeners,
-        input: this.handleInput,
+        input: this.inputHandler("input"),
+        change: this.inputHandler("change"),
+      };
+    },
+  },
+  methods: {
+    inputHandler(name) {
+      return (event) => {
+        const num = parseInt(event);
+        if (!isNaN(num) && num >= 0 && num <= 32767 && num % 1 === 0) {
+          this.$emit(name, num);
+        }
       };
     },
   },
-- 
GitLab