Source code for highcharts_core.options.accessibility.keyboard_navigation

from typing import Optional, List

from validator_collection import validators

from highcharts_core.metaclasses import HighchartsMeta
from highcharts_core.decorators import class_sensitive
from highcharts_core.options.accessibility.keyboard_navigation.focus_border import (FocusBorder,
                                                                                      FocusBorderStyle)
from highcharts_core.options.accessibility.keyboard_navigation.series_navigation import SeriesNavigation


[docs]class KeyboardNavigation(HighchartsMeta): """Options for Keyboard Navigation.""" def __init__(self, **kwargs): self._enabled = None self._focus_border = None self._order = None self._series_navigation = None self._wrap_around = None self.enabled = kwargs.get('enabled', None) self.focus_border = kwargs.get('focus_border', None) self.order = kwargs.get('order', None) self.series_navigation = kwargs.get('series_navigation', None) self.wrap_around = kwargs.get('wrap_around', None) @property def enabled(self) -> Optional[bool]: """Enable keyboard navigation for the chart. Defaults to ``True``. :returns: Flag indicating whether keyboard navigation is enabled for the chart. :rtype: :class:`bool <python:bool>` or :obj:`None <python:None>` """ return self._enabled @enabled.setter def enabled(self, value): if value is None: self._enabled = None else: self._enabled = bool(value) @property def focus_border(self) -> Optional[FocusBorder]: """Options for the focus border drawn around elements while navigating through them. :returns: Configuration of the focus border to be drawn around elements while navigating through them using the keyboard. :rtype: :class:`FocusBorder` or :obj:`None <python:None>` """ return self._focus_border @focus_border.setter @class_sensitive(FocusBorder) def focus_border(self, value): self._focus_border = value @property def order(self) -> Optional[List[str]]: """Order of tab navigation in the chart. Determines which elements are tabbed to first. Available elements are: * ``'series'`` * ``'zoom'`` * ``'rangeSelector'`` * ``'chartMenu'`` * ``'legend'`` * ``'container'``. In addition, any custom components can be added here. Adding container first in order will make the keyboard focus stop on the chart container first, requiring the user to tab again to enter the chart. :returns: Order of components to follow when tab navigating the chart. :rtype: :class:`list <python:list>` of :class:`str <python:str>` or :obj:`None <python:None>` """ return self._order @order.setter def order(self, value): value = validators.iterable(value, allow_empty = True) if not value: value = None else: value = [validators.string(x, allow_empty = False) for x in value] self._order = value @property def series_navigation(self) -> Optional[SeriesNavigation]: """Options for the keyboard navigation of data points and series. :returns: Configuration for series navigation. :rtype: :class:`SeriesNavigation` or :obj:`None <python:None>` """ return self._series_navigation @series_navigation.setter @class_sensitive(SeriesNavigation) def series_navigation(self, value): self._series_navigation = value @property def wrap_around(self) -> Optional[bool]: """If ``True``, indicates that keyboard navigation should wrap around when reaching the end of arrow-key navigation for an element in the chart. Defaults to ``True``. :returns: Flag indicating whether navigation should wrap around when reaching the end of arrow-key navigation for an element in the chart. :rtype: :class:`bool <python:bool>`:obj:`None <python:None>` """ return self._wrap_around @wrap_around.setter def wrap_around(self, value): if value is None: self._wrap_around = None else: self._wrap_around = bool(value) @classmethod def _get_kwargs_from_dict(cls, as_dict): as_dict = validators.dict(as_dict, allow_empty = True) or {} kwargs = { 'enabled': as_dict.get('enabled', None), 'focus_border': as_dict.get('focusBorder', None), 'order': as_dict.get('order', None), 'series_navigation': as_dict.get('seriesNavigation', None), 'wrap_around': as_dict.get('wrapAround', None) } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = { 'enabled': self.enabled, 'focusBorder': self.focus_border, 'order': self.order, 'seriesNavigation': self.series_navigation, 'wrapAround': self.wrap_around } return untrimmed
__all__ = [ 'KeyboardNavigation', 'FocusBorder', 'FocusBorderStyle', 'SeriesNavigation' ]