From 7143dbb6433b4fc14ef800720182953af8362c0c Mon Sep 17 00:00:00 2001 From: Jakob Hellermann Date: Fri, 29 Dec 2023 00:33:42 +0100 Subject: [PATCH] allow simple arithmetic in slider input field --- lib/components/base/Slider.vue | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/components/base/Slider.vue b/lib/components/base/Slider.vue index babc01ce4..59dd6eabf 100644 --- a/lib/components/base/Slider.vue +++ b/lib/components/base/Slider.vue @@ -108,8 +108,22 @@ const onInputWithSnap = (value: string) => { inputValueValid(parsedValue) } +const parseExpression = (value: string) => { + let tokens = value.match(/^\s*(\d+)\s*(\+|-|\*|\/)\s*(\d+)\s*$/) + if (tokens !== null) { + let [, a, op, b] = tokens + + if (op === '+') return parseInt(a) + parseInt(b) + if (op === '-') return parseInt(a) - parseInt(b) + if (op === '*') return parseInt(a) * parseInt(b) + if (op === '/') return parseInt(a) / parseInt(b) + } + + return parseInt(value) +} + const onInput = (value: string) => { - inputValueValid(parseInt(value)) + inputValueValid(parseExpression(value)) }