DateSlider#

Download this notebook from GitHub (right-click to download).


import datetime as dt

import panel as pn
import panel_material_ui as pmui

pn.extension()

The DateSlider widget allows selecting selecting a date value within a set bounds using a slider.

Discover more on using widgets to add interactivity to your applications in the how-to guides on interactivity. Alternatively, learn how to set up callbacks and (JS-)links between parameters or how to use them as part of declarative UIs with Param.

Parameters:#

For details on other options for customizing the component see the customization guides.

Core#

  • as_datetime: Whether to return value as a date (default) or datetime

  • disabled (boolean): Whether the widget is editable

  • start (date or datetime): The range’s lower bound

  • step (integer): The selected step i the slider in days

  • end (date or datetime): The range’s upper bound

  • value (date or datetime): The selected value as a datetime type

  • value_throttled (datetime): The selected value as a datetime type throttled until mouseup

Display#

  • bar_color (color): Color of the slider bar as a hexadecimal RGB value.

  • direction (str): Whether the slider should go from left to right (‘ltr’) or right to left (‘rtl’).

  • format (string): The datetime’s format

  • label (str): The title of the widget.

  • marks (boolean | list[dict]): Marks indicate predetermined values to which the user can move the slider. If True the options are shown as marks. If a list, it should contain dicts with ‘value’ and an optional ‘label’ keys.

  • orientation (Literal["horizonta", "vertical"]): Whether the slider should be displayed in a ‘horizontal’ or ‘vertical’ orientation.

  • show_value (boolean): Whether to show the widget value as a label or not.

  • tooltips (boolean | Literal["auto"]): Whether to display tooltips on the slider handle.

  • track (Literal["normal", "inverted"]): Whether to display ‘normal’ or ‘inverted’.

Styling#

  • sx (dict): Component level styling API.

  • theme_config (dict): Theming API.

Aliases#

For compatibility with Panel certain parameters are allowed as aliases:

  • name: Alias for label


date_slider = pmui.DateSlider(label='Date Slider', start=dt.datetime(2019, 1, 1), end=dt.datetime(2019, 6, 1), value=dt.datetime(2019, 2, 8))

date_slider

DateSlider.value returns a datetime type that can be read out or set like other widgets:

date_slider.value
datetime.datetime(2019, 2, 8, 0, 0)

Label#

You may remove the label/ name by not setting it.

pmui.DateSlider(start=dt.datetime(2019, 1, 1), end=dt.datetime(2019, 6, 1), value=dt.datetime(2019, 2, 8))

Show Value#

You may remove the value label by setting show_value=False.

pmui.DateSlider(start=dt.datetime(2019, 1, 1), end=dt.datetime(2019, 6, 1), value=dt.datetime(2019, 2, 8), show_value=False, label='DateSlider')

Disabled#

The widget can be disabled with disabled=True.

pmui.DateSlider(label='Date Slider (disabled)', disabled=True, start=dt.datetime(2019, 1, 1), end=dt.datetime(2019, 6, 1), value=dt.datetime(2019, 2, 8))

Color#

You can specify a color.

pmui.FlexBox(*(
    pmui.DateSlider(label=f'Date Slider ({color})', color=color, start=dt.datetime(2019, 1, 1), end=dt.datetime(2019, 6, 1), value=dt.datetime(2019, 2, 8))
    for color in pmui.DateSlider.param.color.objects
))

Sizes#

For smaller slider, use the parameter size="small".

pmui.Row(
    pmui.DateSlider(label='Date Slider', size="small", start=dt.datetime(2019, 1, 1), end=dt.datetime(2019, 6, 1), value=dt.datetime(2019, 2, 8)),
    pmui.DateSlider(label='Date Slider', size="medium", start=dt.datetime(2019, 1, 1), end=dt.datetime(2019, 6, 1), value=dt.datetime(2019, 2, 8)),
)

Custom Marks#

You can have custom marks by providing a rich list to the marks parameter. Note that unlike continuous sliders the value of the marks should be the integer index of the option.

marks = [
  {
    "value": dt.datetime(2019, 1, 1),
    "label": "01/01",
  },
  {
    "value": dt.datetime(2019, 3, 1),
    "label": "03/01",
  },
  {
    "value": dt.datetime(2019, 5, 1),
    "label": "05/01",
  },
  {
    "value": dt.datetime(2019, 6, 1),
    "label": "06/01",
  }  
]

pmui.DateSlider(marks=marks, start=dt.datetime(2019, 1, 1), end=dt.datetime(2019, 6, 1), value=dt.datetime(2019, 2, 8))

Tooltip always visible#

You can force the thumb label to be always visible with tooltips=True.

pmui.DateSlider(
    label='Date', tooltips=True, start=dt.datetime(2019, 1, 1), end=dt.datetime(2019, 6, 1), value=dt.datetime(2019, 2, 8)
)

Tracks#

The track can be inverted or removed with track="inverted" and track=False respectively:

pmui.Row(
    pmui.DateSlider(label='Date Slider', track=False, start=dt.datetime(2019, 1, 1), end=dt.datetime(2019, 6, 1), value=dt.datetime(2019, 2, 8)),
    pmui.DateSlider(label='Date Slider', track="inverted", start=dt.datetime(2019, 1, 1), end=dt.datetime(2019, 6, 1), value=dt.datetime(2019, 2, 8))
)

Vertical Sliders#

The orientation of a slider may be “vertical”:

pmui.DateSlider(label='Date Slider', orientation="vertical", start=dt.datetime(2019, 1, 1), end=dt.datetime(2019, 6, 1), value=dt.datetime(2019, 2, 8))

Controls#

The DateSlider widget exposes a number of options which can be changed from both Python and Javascript. Try out the effect of these parameters interactively:

pmui.Row(date_slider.api(jslink=True), date_slider)

References#

Discover more on using widgets to add interactivity to your applications in the how-to guides on interactivity.

Learn how to set up callbacks and (JS-)links between parameters or how to use them as part of declarative UIs with Param.

See also the Material UI DateSlider Reference and API documentation for inspiration.


Download this notebook from GitHub (right-click to download).