From 64035882853c751f4f829e4501e623b98698f7de Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Wed, 26 Nov 2025 10:17:30 -0500 Subject: [PATCH] ensure min/max/step are numbers; fixes #1823 --- packages/webawesome/docs/docs/resources/changelog.md | 1 + packages/webawesome/src/components/slider/slider.ts | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/webawesome/docs/docs/resources/changelog.md b/packages/webawesome/docs/docs/resources/changelog.md index bc4553f9f..3858d8d30 100644 --- a/packages/webawesome/docs/docs/resources/changelog.md +++ b/packages/webawesome/docs/docs/resources/changelog.md @@ -22,6 +22,7 @@ Components with the Experimental badge sh - Fixed a bug in `` that caused the browser to hang when cancelling the `wa-hide` event [issue:1483] - Fixed a bug in `` that prevented the icon dependency from being imported [issue:1825] - Improved performance of `` so initial rendering occurs faster, especially with multiple icons on the page [issue:1729] +- Improved `` to not throw an error when string values are passed to the `min`, `max`, and `step` properties [issue:1823] - Modified the default `transition` styles of `` to use design tokens [pr:1693] ## 3.0.0 diff --git a/packages/webawesome/src/components/slider/slider.ts b/packages/webawesome/src/components/slider/slider.ts index 4a4817aad..7c3b027a0 100644 --- a/packages/webawesome/src/components/slider/slider.ts +++ b/packages/webawesome/src/components/slider/slider.ts @@ -437,8 +437,14 @@ export default class WaSlider extends WebAwesomeFormAssociatedElement { /** Clamps a number to min/max while ensuring it's a valid step interval. */ private clampAndRoundToStep(value: number) { const stepPrecision = (String(this.step).split('.')[1] || '').replace(/0+$/g, '').length; - value = Math.round(value / this.step) * this.step; - value = clamp(value, this.min, this.max); + + // Ensure we're working with numbers (in case the user passes strings to the respective properties) + const step = Number(this.step); + const min = Number(this.min); + const max = Number(this.max); + + value = Math.round(value / step) * step; + value = clamp(value, min, max); return parseFloat(value.toFixed(stepPrecision)); }