diff --git a/panel/param.py b/panel/param.py index 2afa5f0d2e..a1aef26a4c 100644 --- a/panel/param.py +++ b/panel/param.py @@ -492,7 +492,7 @@ def widget(self_or_cls, p_name: str, parameterized: param.Parameterized | None = kw['start'] = bounds[0] if bounds[1] is not None: kw['end'] = bounds[1] - if (('start' not in kw or 'end' not in kw) and + if (('start' not in kw or 'end' not in kw or value is None) and not isinstance(p_obj, (param.Date, param.CalendarDate))): # Do not change widget class if mapping was overridden if not widget_class_overridden: diff --git a/panel/tests/test_param.py b/panel/tests/test_param.py index d8aab010b7..9e1bdc237d 100644 --- a/panel/tests/test_param.py +++ b/panel/tests/test_param.py @@ -8,8 +8,8 @@ from bokeh.models import ( AutocompleteInput as BkAutocompleteInput, Button as BkButton, Checkbox as BkCheckbox, Column as BkColumn, Div, MultiSelect, - RangeSlider as BkRangeSlider, Row as BkRow, Select, Slider, Tabs as BkTabs, - TextInput, TextInput as BkTextInput, Toggle, + RangeSlider as BkRangeSlider, Row as BkRow, Select, Slider, Spinner, + Tabs as BkTabs, TextInput, TextInput as BkTextInput, Toggle, ) from packaging.version import Version @@ -201,6 +201,16 @@ class Test(param.Parameterized): assert slider.end == 5.5 assert slider.disabled == True +def test_number_param_with_none(document, comm): + class Test(param.Parameterized): + a = param.Number(default=None, bounds=(0, 5)) + + test = Test() + test_pane = Param(test) + model = test_pane.get_root(document, comm=comm) + + slider = model.children[1] + assert isinstance(slider, Spinner) def test_boolean_param(document, comm): class Test(param.Parameterized):